doum
10 小时以前 116a83c60384f716cb8c988a4e8f2b30bf5d6718
经销商管理
已修改3个文件
155 ■■■■■ 文件已修改
admin/src/views/business/inviteRecord.vue 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/java/com/doumee/dao/business/model/InviteRecord.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/java/com/doumee/service/business/impl/InviteRecordServiceImpl.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
    }