admin/src/views/business/inviteRecord.vue
@@ -1,20 +1,19 @@ <template> <TableLayout :permissions="['business:membercoupon:query']"> <TableLayout :permissions="['business:inviterecord:query']"> <!-- 搜索表单 --> <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> <el-form-item label="邀请人信息" prop="recName" > <el-input v-model="searchForm.recName" placeholder="请邀请人昵称/姓名/手机号 " clearable @keypress.enter.native="search"></el-input> </el-form-item> <el-form-item label="被邀请人信息" prop="name" > <el-input v-model="searchForm.name" placeholder="被邀请人昵称/姓名/手机号 " clearable @keypress.enter.native="search"></el-input> <el-form-item label="被邀请人信息" prop="memberName" > <el-input v-model="searchForm.memberName" placeholder="被邀请人昵称/姓名/手机号 " clearable @keypress.enter.native="search"></el-input> </el-form-item> <el-form-item label="完成阶段" prop="getMethod"> <el-form-item label="完成阶段" prop="firstOrderStatus"> <el-select v-model="searchForm.firstOrderStatus" placeholder="请选择完成阶段" clearable @change="search" > <el-option :value="0" label="已注册"></el-option> <el-option :value="1" label="已完成首单"></el-option> <el-option :value="1" label="完成首单"></el-option> </el-select> </el-form-item> <section> <el-button type="primary" @click="search">搜索</el-button> <el-button @click="reset">重置</el-button> @@ -22,45 +21,31 @@ </el-form> <!-- 表格和分页 --> <template v-slot:table-wrap> <ul class="toolbar" v-permissions="['business:membercoupon:create', 'business:membercoupon:exportExcel']"> <li><el-button type="primary" @click="$refs.OperaMemberCouponWindow.open('定向发放优惠券', null)" v-permissions="['business:membercoupon:create']">定向发放</el-button></li> <li> <el-button type="primary" :loading="isWorking.export" v-permissions="['business:membercoupon:exportExcel']" @click="exportExcel">导出</el-button></li> <ul class="toolbar" v-permissions="['business:inviterecord:exportExcel']"> <li> <el-button type="primary" :loading="isWorking.export" v-permissions="['business:inviterecord:exportExcel']" @click="exportExcel">导出</el-button></li> </ul> <el-table v-loading="isWorking.search" :data="tableData.list" stripe > <el-table-column prop="nikeName" label="被邀请人微信ID" min-width="180px"></el-table-column> <el-table-column prop="name" label="被邀请人信息" min-width="180px"></el-table-column> <el-table-column prop="recName" label="邀请人信息" min-width="180px"></el-table-column> <el-table-column prop="openid" label="被邀请人微信ID" min-width="200px"></el-table-column> <el-table-column prop="memberName" label="被邀请人(昵称/姓名/手机)" min-width="200px"></el-table-column> <el-table-column prop="recName" label="邀请人(昵称/姓名/手机)" min-width="200px"></el-table-column> <el-table-column prop="firstOrderStatus" label="完成阶段" min-width="100px"> <template slot-scope="{row}"> <span v-if="row.firstOrderStatus ===1" class="green">完成首单</span> <span v-else class="orange">已注册</span> </template> </el-table-column> <el-table-column prop="startDate" label="使用有效期" align="center" min-width="210px"> <el-table-column prop="rewardIntegral" label="积分奖励" min-width="100px"> <template slot-scope="{row}"> <li> 起:{{ row.startDate}}</li> <li>止:{{row.endDate }}</li> <span class="orange">{{ row.rewardIntegral || ''}}</span> </template> </el-table-column> <el-table-column prop="couponPrice" label="优惠金额(元)" min-width="120px"> <template slot-scope="{row}"> {{row.status==1?(row.couponPrice||0):'-'}} </template> </el-table-column> <el-table-column prop="status" label="状态" min-width="100px"> <template slot-scope="{row}"> <span v-if="row.status ===0" class="green"> 未使用</span> <span v-else-if="row.status ===1" class="blue"> 已使用</span> <span v-else class="grey">已过期</span> </template> </el-table-column> <el-table-column prop="createDate" label="首单完成时间" min-width="150px"></el-table-column> <el-table-column prop="couponNames" label="优惠券奖励" min-width="150px"></el-table-column> <el-table-column prop="firstFinishDate" label="首单完成时间" min-width="150px"></el-table-column> <el-table-column prop="createDate" label="注册时间" min-width="150px"></el-table-column> <el-table-column prop="creatorName" label="操作人" min-width="100px"></el-table-column> </el-table> <pagination @size-change="handleSizeChange" @@ -69,26 +54,23 @@ > </pagination> </template> <OperaMemberCouponWindow ref="OperaMemberCouponWindow" @success="handlePageChange"/> </TableLayout> </template> <script> import BaseTable from '@/components/base/BaseTable' import TableLayout from '@/layouts/TableLayout' import OperaMemberCouponWindow from '@/components/business/OperaMemberCouponWindow' import Pagination from '@/components/common/Pagination' export default { name: 'inviteRecord', extends: BaseTable, components: { TableLayout, Pagination ,OperaMemberCouponWindow}, components: { TableLayout, Pagination }, data () { return { // 搜索 searchForm: { recName: '', name: '', memberName: '', firstOrderStatus: '' } } server/dmmall_service/src/main/java/com/doumee/dao/business/model/InviteRecord.java
@@ -30,7 +30,7 @@ private Integer creator; @ApiModelProperty(value = "创建时间") @ExcelColumn(name="交易时间" ,index =1,width = 10) @ExcelColumn(name="注册时间" ,index =8,width = 10 ,dateFormat = "yyyy-MM-dd HH:mm:ss") private Date createDate; @ApiModelProperty(value = "更新人编码", example = "1") @@ -56,18 +56,22 @@ private String phone; @ApiModelProperty(value = "是否完成首单:0否 1是", example = "1") @ExcelColumn(name="完成极端" ,index =4,width = 10,valueMapping = "0=已注册;1=完成首单;") private Integer firstOrderStatus; @ApiModelProperty(value = "完成首单时间") @ExcelColumn(name="完成首单时间" ,index =7,width = 10 ,dateFormat = "yyyy-MM-dd HH:mm:ss") private Date firstFinishDate; @ApiModelProperty(value = "邀请奖励积分") @ExcelColumn(name="奖励邀请人积分" ,index =5,width = 10 ) private BigDecimal rewardIntegral; @ApiModelProperty(value = "邀请完成首单奖励优惠券主键 多个以,分割") private String couponIds; @ApiModelProperty(value = "邀请完成首单奖励优惠券名称 多个以,分割") @ExcelColumn(name="奖励邀请人优惠券" ,index =6,width = 10 ) private String couponNames; @@ -78,6 +82,28 @@ @ApiModelProperty(value = "被邀请人名称") @TableField(exist = false) @ExcelColumn(name="被邀请人(昵称/姓名/手机号)" ,index =2,width = 20) private String memberName; @ApiModelProperty(value = "被邀请人名称") @TableField(exist = false) private String memberNickname; @ApiModelProperty(value = "被邀请人手机号") @TableField(exist = false) private String memberPhone; @ApiModelProperty(value = "邀请人昵称") @TableField(exist = false) private String recNickname; @ApiModelProperty(value = "邀请人手机号") @TableField(exist = false) private String recPhone; @ApiModelProperty(value = "被邀请人名称") @TableField(exist = false) @ExcelColumn(name="邀请人(昵称/姓名/手机号)" ,index =3,width = 20) private String recName; @ApiModelProperty(value = "被邀请人名称") @TableField(exist = false) @ExcelColumn(name="被邀请人openid" ,index =1,width = 15) private String openid; } server/dmmall_service/src/main/java/com/doumee/service/business/impl/InviteRecordServiceImpl.java
@@ -34,6 +34,7 @@ import com.doumee.service.business.InviteRecordService; import com.github.xiaoymin.knife4j.core.util.CollectionUtils; import com.github.yulichang.wrapper.MPJLambdaWrapper; import io.swagger.models.auth.In; import org.apache.commons.lang3.StringUtils; import org.apache.http.util.TextUtils; import org.apache.shiro.SecurityUtils; @@ -191,38 +192,65 @@ @Override public PageData<InviteRecord> findPage(PageWrap<InviteRecord> pageWrap) { IPage<InviteRecord> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); QueryWrapper<InviteRecord> queryWrapper = new QueryWrapper<>(); MPJLambdaWrapper<InviteRecord> queryWrapper = new MPJLambdaWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); queryWrapper.lambda().eq(pageWrap.getModel().getId() != null,InviteRecord::getId, pageWrap.getModel().getId()); queryWrapper.lambda().eq(pageWrap.getModel().getCreator() != null,InviteRecord::getCreator, pageWrap.getModel().getCreator()); queryWrapper.selectAll(InviteRecord.class ) .select("t1.name",InviteRecord::getRecName) .select("t1.nickname",InviteRecord::getRecNickname) .select("t1.phone",InviteRecord::getRecPhone) .select("t2.name",InviteRecord::getMemberName) .select("t2.nickname",InviteRecord::getMemberNickname) .select("t2.open_id",InviteRecord::getOpenid) .select("t2.phone",InviteRecord::getMemberPhone) .leftJoin(Member.class,Member::getId,InviteRecord::getInviteId) .leftJoin(Member.class,Member::getId,InviteRecord::getMemberId) ; pageWrap.getModel().setIsdeleted(Constants.ZERO); queryWrapper.eq(pageWrap.getModel().getId() != null,InviteRecord::getId, pageWrap.getModel().getId()); queryWrapper.eq(pageWrap.getModel().getCreator() != null,InviteRecord::getCreator, pageWrap.getModel().getCreator()); if (pageWrap.getModel().getId() != null) { queryWrapper.lambda().ge(InviteRecord::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())); queryWrapper.lambda().le(InviteRecord::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())); queryWrapper.ge(InviteRecord::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())); queryWrapper.le(InviteRecord::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())); } queryWrapper.lambda().eq(pageWrap.getModel().getEditor() != null,InviteRecord::getEditor, pageWrap.getModel().getEditor()); queryWrapper.eq(pageWrap.getModel().getEditor() != null,InviteRecord::getEditor, pageWrap.getModel().getEditor()); if (pageWrap.getModel().getId() != null) { queryWrapper.lambda().ge(InviteRecord::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())); queryWrapper.lambda().le(InviteRecord::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())); queryWrapper.ge(InviteRecord::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())); queryWrapper.le(InviteRecord::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())); } queryWrapper.lambda().eq(pageWrap.getModel().getIsdeleted() != null,InviteRecord::getIsdeleted, pageWrap.getModel().getIsdeleted()); queryWrapper.lambda().eq(pageWrap.getModel().getRemark() != null,InviteRecord::getRemark, pageWrap.getModel().getRemark()); queryWrapper.lambda().eq(pageWrap.getModel().getInviteId() != null,InviteRecord::getInviteId, pageWrap.getModel().getInviteId()); queryWrapper.lambda().eq(pageWrap.getModel().getMemberId() != null,InviteRecord::getMemberId, pageWrap.getModel().getMemberId()); queryWrapper.lambda().eq(pageWrap.getModel().getPhone() != null,InviteRecord::getPhone, pageWrap.getModel().getPhone()); queryWrapper.lambda().eq(pageWrap.getModel().getFirstOrderStatus() != null,InviteRecord::getFirstOrderStatus, pageWrap.getModel().getFirstOrderStatus()); queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getRecName()),w->{ w.like("t1.name",pageWrap.getModel().getRecName()).or() .like("t1.phone",pageWrap.getModel().getRecName()).or() .like("t1.nickname",pageWrap.getModel().getRecName()); }); queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getMemberName()),w->{ w.like("t2.name",pageWrap.getModel().getMemberName()).or() .like("t2.phone",pageWrap.getModel().getMemberName()).or() .like("t2.nickname",pageWrap.getModel().getMemberName()); }); queryWrapper.eq(pageWrap.getModel().getIsdeleted() != null,InviteRecord::getIsdeleted, pageWrap.getModel().getIsdeleted()); queryWrapper.eq(pageWrap.getModel().getRemark() != null,InviteRecord::getRemark, pageWrap.getModel().getRemark()); queryWrapper.eq(pageWrap.getModel().getInviteId() != null,InviteRecord::getInviteId, pageWrap.getModel().getInviteId()); queryWrapper.eq(pageWrap.getModel().getMemberId() != null,InviteRecord::getMemberId, pageWrap.getModel().getMemberId()); queryWrapper.eq(pageWrap.getModel().getPhone() != null,InviteRecord::getPhone, pageWrap.getModel().getPhone()); queryWrapper.eq(pageWrap.getModel().getFirstOrderStatus() != null,InviteRecord::getFirstOrderStatus, pageWrap.getModel().getFirstOrderStatus()); if (pageWrap.getModel().getId() != null) { queryWrapper.lambda().ge(InviteRecord::getFirstFinishDate, Utils.Date.getStart(pageWrap.getModel().getFirstFinishDate())); queryWrapper.lambda().le(InviteRecord::getFirstFinishDate, Utils.Date.getEnd(pageWrap.getModel().getFirstFinishDate())); queryWrapper.ge(InviteRecord::getFirstFinishDate, Utils.Date.getStart(pageWrap.getModel().getFirstFinishDate())); queryWrapper.le(InviteRecord::getFirstFinishDate, Utils.Date.getEnd(pageWrap.getModel().getFirstFinishDate())); } queryWrapper.lambda().eq(pageWrap.getModel().getRewardIntegral() != null,InviteRecord::getRewardIntegral, pageWrap.getModel().getRewardIntegral()); for(PageWrap.SortData sortData: pageWrap.getSorts()) { if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { queryWrapper.orderByDesc(sortData.getProperty()); } else { queryWrapper.orderByAsc(sortData.getProperty()); queryWrapper.eq(pageWrap.getModel().getRewardIntegral() != null,InviteRecord::getRewardIntegral, pageWrap.getModel().getRewardIntegral()); queryWrapper.orderByDesc(InviteRecord::getCreateDate); IPage<InviteRecord> result =inviteRecordMapper.selectPage(page, queryWrapper); if(result!=null && result.getRecords()!=null){ for(InviteRecord model : result.getRecords()){ model.setMemberName(StringUtils.defaultString(model.getMemberNickname(),"")+" / " +StringUtils.defaultString(model.getMemberName(),"-")+" / " +StringUtils.defaultString(model.getMemberPhone(),"-")); model.setRecName(StringUtils.defaultString(model.getRecNickname(),"")+" / " +StringUtils.defaultString(model.getRecName(),"-")+" / " +StringUtils.defaultString(model.getRecPhone(),"-")); } } return PageData.from(inviteRecordMapper.selectPage(page, queryWrapper)); return PageData.from(result); } @Override @@ -230,9 +258,6 @@ QueryWrapper<InviteRecord> wrapper = new QueryWrapper<>(inviteRecord); return inviteRecordMapper.selectCount(wrapper); }