xiaoyong931011
2021-03-14 000e2719d57fd6cfc94fb340730ab3722d6c47cb
分销员后台0314
4 files added
12 files modified
703 ■■■■ changed files
zq-erp/src/main/java/com/matrix/system/fenxiao/action/FenXiaoUserAction.java 80 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/fenxiao/dao/ShopSalesmanApplyDao.java 4 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/fenxiao/dto/ChangeSaleManGradeDto.java 19 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/fenxiao/dto/DelSaleManGradeApplyDto.java 20 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/fenxiao/dto/ShopSalesmanDetailDto.java 3 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/fenxiao/dto/UnbundlingSaleManDto.java 17 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopSalesmanApply.java 4 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/fenxiao/service/ShopSalesmanApplyService.java 79 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/fenxiao/vo/ShopCustomDetailVo.java 12 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/fenxiao/vo/ShopOrderDetailVo.java 45 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/fenxiao/vo/ShopSalesmanAppliingVo.java 15 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/fenxiao/vo/ShopSalesmanApplyVo.java 7 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanApplyDao.xml 51 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-apply.html 18 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-update.html 262 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-user.html 67 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/fenxiao/action/FenXiaoUserAction.java
@@ -12,19 +12,11 @@
import com.matrix.core.tools.WebUtil;
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.fenxiao.dao.ShopSalesmanApplyDao;
import com.matrix.system.fenxiao.dto.AddSaleManApplyDto;
import com.matrix.system.fenxiao.dto.ExamineSaleManApplyDto;
import com.matrix.system.fenxiao.dto.ShopSalesmanAppliingDto;
import com.matrix.system.fenxiao.dto.ShopSalesmanApplyDto;
import com.matrix.system.fenxiao.dto.ShopSalesmanDetailDto;
import com.matrix.system.fenxiao.dao.ShopSalesmanGradeDao;
import com.matrix.system.fenxiao.dto.*;
import com.matrix.system.fenxiao.entity.ShopSalesmanApply;
import com.matrix.system.fenxiao.service.ShopSalesmanApplyService;
import com.matrix.system.fenxiao.vo.SalesmanBasicDetailVo;
import com.matrix.system.fenxiao.vo.ShopCustomDetailVo;
import com.matrix.system.fenxiao.vo.ShopSalesmanAppliingVo;
import com.matrix.system.fenxiao.vo.ShopSalesmanApplyVo;
import com.matrix.system.fenxiao.vo.ShopSalesmanDetailVo;
import com.matrix.system.fenxiao.vo.ShopSalesmanGradeVo;
import com.matrix.system.fenxiao.vo.*;
import com.matrix.system.hive.action.util.QueryUtil;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
@@ -44,6 +36,8 @@
    private ShopSalesmanApplyDao shopSalesmanApplyDao;
    @Autowired
    private BizUserDao bizUserDao;
    @Autowired
    private ShopSalesmanGradeDao shopSalesmanGradeDao;
    
    /**
     * 分销员详情页面信息
@@ -77,7 +71,32 @@
        IPage<ShopCustomDetailVo> customLowRows = shopSalesmanApplyService.findCustomLow(pageLow,shopSalesmanDetailDto);
        result.putInMap("customLowRecords", customLowRows.getRecords());
        result.putInMap("customLowTotal", customLowRows.getTotal());
        //查询收益订单
        Page<ShopOrderDetailVo> pageOrder = new Page(shopSalesmanDetailDto.getPageNum(), shopSalesmanDetailDto.getPageSize());
        IPage<ShopOrderDetailVo> orderRows = shopSalesmanApplyService.findShopOrderDetail(pageOrder,shopSalesmanDetailDto);
        result.putInMap("orderRecords", orderRows.getRecords());
        result.putInMap("orderTotal", orderRows.getTotal());
        return result;
    }
    /**
     *修改等级
     */
    @ApiOperation(value = "修改等级")
    @PostMapping(value = "/changeSaleManGrade")
    public @ResponseBody
    AjaxResult changeSaleManGrade(@RequestBody ChangeSaleManGradeDto changeSaleManGradeDto) {
        return shopSalesmanApplyService.changeSaleManGrade(changeSaleManGradeDto);
    }
    /**
     *解绑
     */
    @ApiOperation(value = "解绑")
    @PostMapping(value = "/unbundlingSaleMan")
    public @ResponseBody
    AjaxResult unbundlingSaleMan(@RequestBody UnbundlingSaleManDto unbundlingSaleManDto) {
        return shopSalesmanApplyService.unbundlingSaleMan(unbundlingSaleManDto);
    }
    /**
@@ -107,7 +126,7 @@
    /**
     *获取分销员待审核记录
     */
    @ApiOperation(value = "查询分销员审核记录")
    @ApiOperation(value = "获取分销员待审核记录")
    @ApiResponses({
            @ApiResponse(code = 200, message = "OK",  response = ShopSalesmanAppliingVo.class)
    })
@@ -131,19 +150,6 @@
    }
    /**
     *获取对应的分销员等级
     */
    @RequestMapping(value = "/getShopSalesmanGrade")
    private @ResponseBody AjaxResult getShopSalesmanGradeVo(){
        AjaxResult result= AjaxResult.buildSuccessInstance("查询成功");
        SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
        List<ShopSalesmanGradeVo> dataList = shopSalesmanApplyService.getShopSalesmanGradeVo(user.getCompanyId());
        result.putInMap("salesGrade", dataList);
        return result;
    }
    /**
     *新增分销员
     */
    @ApiOperation(value = "新增分销员")
@@ -157,6 +163,17 @@
        shopSalesmanApplyService.addSaleManApply(addSaleManApplyDto.getUserId(),addSaleManApplyDto.getGradeId());
        return result;
    }
    /**
     *删除---设置成不是分销员
     */
    @ApiOperation(value = "删除---设置成不是分销员")
    @PostMapping(value = "/delSaleManGradeApply")
    public @ResponseBody
    AjaxResult delSaleManGradeApply(@RequestBody DelSaleManGradeApplyDto delSaleManGradeApplyDto) {
        return shopSalesmanApplyService.delSaleManGradeApply(delSaleManGradeApplyDto);
    }
    /**
     *审核分销员
     */
@@ -191,4 +208,17 @@
        }
    }
    /**
     *获取对应的分销员等级
     */
    @RequestMapping(value = "/getShopSalesmanGrade")
    private @ResponseBody AjaxResult getShopSalesmanGradeVo(){
        AjaxResult result= AjaxResult.buildSuccessInstance("查询成功");
        SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
        List<ShopSalesmanGradeVo> dataList = shopSalesmanApplyService.getShopSalesmanGradeVo(user.getCompanyId());
        result.putInMap("salesGrade", dataList);
        return result;
    }
}
zq-erp/src/main/java/com/matrix/system/fenxiao/dao/ShopSalesmanApplyDao.java
@@ -9,6 +9,7 @@
import com.matrix.system.fenxiao.entity.ShopSalesmanApply;
import com.matrix.system.fenxiao.vo.SalesmanBasicDetailVo;
import com.matrix.system.fenxiao.vo.ShopCustomDetailVo;
import com.matrix.system.fenxiao.vo.ShopOrderDetailVo;
import com.matrix.system.fenxiao.vo.ShopSalesmanAppliingVo;
import com.matrix.system.fenxiao.vo.ShopSalesmanApplyVo;
import com.matrix.system.shopXcx.vo.SalesmanCenterInfo;
@@ -45,4 +46,7 @@
    IPage<ShopCustomDetailVo> findCustomLow(Page<ShopCustomDetailVo> pageLow,
            @Param("record")ShopSalesmanDetailDto shopSalesmanDetailDto);
    
    IPage<ShopOrderDetailVo> findShopOrderDetail(Page<ShopOrderDetailVo> pageOrder,
            @Param("record")ShopSalesmanDetailDto shopSalesmanDetailDto);
}
zq-erp/src/main/java/com/matrix/system/fenxiao/dto/ChangeSaleManGradeDto.java
New file
@@ -0,0 +1,19 @@
package com.matrix.system.fenxiao.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "ChangeSaleManGradeDto", description = "查询参数")
public class ChangeSaleManGradeDto {
    @ApiModelProperty(value ="会员OPENID")
    private String userId;
    @ApiModelProperty(value ="等级ID")
    private Long gradeId;
    @ApiModelProperty(hidden = true)
    private Long companyId;
}
zq-erp/src/main/java/com/matrix/system/fenxiao/dto/DelSaleManGradeApplyDto.java
New file
@@ -0,0 +1,20 @@
package com.matrix.system.fenxiao.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "DelSaleManGradeApplyDto", description = "查询参数")
public class DelSaleManGradeApplyDto {
    @ApiModelProperty(value ="会员OPENID")
    private String userId;
    @ApiModelProperty(value ="申请记录ID")
     private Long applyId;
    @ApiModelProperty(hidden = true)
    private Long companyId;
}
zq-erp/src/main/java/com/matrix/system/fenxiao/dto/ShopSalesmanDetailDto.java
@@ -15,6 +15,9 @@
    
    @ApiModelProperty(value ="会员OPENID")
    private String userId;
    @ApiModelProperty(value = " 结算状态1,待结算,2,已结算,3已退款")
    private Integer orderType;
    
    @ApiModelProperty(hidden = true)
    private Long companyId;
zq-erp/src/main/java/com/matrix/system/fenxiao/dto/UnbundlingSaleManDto.java
New file
@@ -0,0 +1,17 @@
package com.matrix.system.fenxiao.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "UnbundlingSaleManDto", description = "查询参数")
public class UnbundlingSaleManDto {
    @ApiModelProperty(value ="会员OPENID")
    private String userId;
    @ApiModelProperty(hidden = true)
    private Long companyId;
}
zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopSalesmanApply.java
@@ -25,6 +25,10 @@
     * 审核状态-3未通过
     */
    public static final int APPLY_STATUS_WTG = 3;
    /**
     * 审核状态-4系统删除
     */
    public static final int APPLY_STATUS_XTQX = 4;
    /**
zq-erp/src/main/java/com/matrix/system/fenxiao/service/ShopSalesmanApplyService.java
@@ -9,22 +9,31 @@
import com.matrix.biz.dao.BizUserDao;
import com.matrix.biz.service.BizUserService;
import com.matrix.core.exception.GlobleException;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.core.tools.StringUtils;
import com.matrix.system.common.bean.BusParameterSettings;
import com.matrix.system.common.dao.BusParameterSettingsDao;
import com.matrix.system.fenxiao.constant.FenxiaoSettingConstant;
import com.matrix.system.fenxiao.dao.ShopSalesmanApplyDao;
import com.matrix.system.fenxiao.dao.ShopSalesmanGradeDao;
import com.matrix.system.fenxiao.dto.ChangeSaleManGradeDto;
import com.matrix.system.fenxiao.dto.DelSaleManGradeApplyDto;
import com.matrix.system.fenxiao.dto.ShopSalesmanAppliingDto;
import com.matrix.system.fenxiao.dto.ShopSalesmanApplyDto;
import com.matrix.system.fenxiao.dto.ShopSalesmanDetailDto;
import com.matrix.system.fenxiao.dto.UnbundlingSaleManDto;
import com.matrix.system.fenxiao.entity.ShopSalesmanApply;
import com.matrix.system.fenxiao.entity.ShopSalesmanGrade;
import com.matrix.system.fenxiao.vo.SalesmanBasicDetailVo;
import com.matrix.system.fenxiao.vo.ShopCustomDetailVo;
import com.matrix.system.fenxiao.vo.ShopOrderDetailVo;
import com.matrix.system.fenxiao.vo.ShopSalesmanAppliingVo;
import com.matrix.system.fenxiao.vo.ShopSalesmanApplyVo;
import com.matrix.system.fenxiao.vo.ShopSalesmanGradeVo;
import com.matrix.system.hive.action.util.QueryUtil;
import cn.hutool.core.util.ObjectUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -148,7 +157,6 @@
        String userId = shopSalesmanApply.getUserId();
        String parentUserId = shopSalesmanApply.getParentUserId();
        BizUser bizUser = bizUserDao.selectById(userId);
        //修改审核记录
        if(ShopSalesmanApply.APPLY_STATUS_TG == applyState) {
            shopSalesmanApply.setApplyStatus(ShopSalesmanApply.APPLY_STATUS_TG);
@@ -187,6 +195,75 @@
        return shopSalesmanApplyDao.findCustomLow(pageLow,shopSalesmanDetailDto);
    }
    public IPage<ShopOrderDetailVo> findShopOrderDetail(Page<ShopOrderDetailVo> pageOrder,
            ShopSalesmanDetailDto shopSalesmanDetailDto) {
        return shopSalesmanApplyDao.findShopOrderDetail(pageOrder,shopSalesmanDetailDto);
    }
    public AjaxResult changeSaleManGrade(ChangeSaleManGradeDto changeSaleManGradeDto) {
        //设置用户公司ID
        QueryUtil.setQueryLimitCom(changeSaleManGradeDto);
        String userId = changeSaleManGradeDto.getUserId();
        Long companyId = changeSaleManGradeDto.getCompanyId();
        //获取对应的公司的等级
        QueryWrapper<ShopSalesmanGrade> queryWrapperOrepool = new QueryWrapper<>();
        queryWrapperOrepool.eq("is_default", 1);
        queryWrapperOrepool.eq("company_id", companyId);
        ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectOne(queryWrapperOrepool);
        //修改Biz_User的salesman_grade
        BizUser findByOpenId = bizUserDao.findByOpenId(userId);
        if(ObjectUtil.isEmpty(findByOpenId)) {
            return AjaxResult.buildFailInstance("当前用户已不存在");
        }
        //不是分销员不允许修改
        Integer isSales = findByOpenId.getIsSales();
        if(BizUser.IS_SALES != isSales) {
            return AjaxResult.buildFailInstance("当前用户未通过审核,不允许修改");
        }
        Long gradeId = changeSaleManGradeDto.getGradeId();
        if(ObjectUtil.isEmpty(gradeId)) {
            findByOpenId.setSalesmanGrade(shopSalesmanGrade.getId());
        }else {
            findByOpenId.setSalesmanGrade(gradeId);
        }
        bizUserDao.updateByModel(findByOpenId);
        return AjaxResult.buildFailInstance("修改等级成功");
    }
    public AjaxResult unbundlingSaleMan(UnbundlingSaleManDto unbundlingSaleManDto) {
        //设置用户公司ID
        QueryUtil.setQueryLimitCom(unbundlingSaleManDto);
        String userId = unbundlingSaleManDto.getUserId();
        //将Biz_User的parent_open_id置空
        BizUser findByOpenId = bizUserDao.findByOpenId(userId);
        if(ObjectUtil.isEmpty(findByOpenId)) {
            return AjaxResult.buildFailInstance("当前用户已不存在");
        }
        findByOpenId.setParentOpenId("");
        bizUserDao.updateByModel(findByOpenId);
        return AjaxResult.buildFailInstance("解绑成功");
    }
    public AjaxResult delSaleManGradeApply(DelSaleManGradeApplyDto delSaleManGradeApplyDto) {
        //设置用户公司ID
        QueryUtil.setQueryLimitCom(delSaleManGradeApplyDto);
        String userId = delSaleManGradeApplyDto.getUserId();
        Long applyid = delSaleManGradeApplyDto.getApplyId();
        //将biz_user的is_sale设置成否
        BizUser findByOpenId = bizUserDao.findByOpenId(userId);
        if(ObjectUtil.isEmpty(findByOpenId)) {
            return AjaxResult.buildFailInstance("当前用户已不存在");
        }
        findByOpenId.setIsSales(BizUser.NOT_SALES);
        bizUserDao.updateByModel(findByOpenId);
        //将记录设置成系统取消
        ShopSalesmanApply selectById = shopSalesmanApplyDao.selectById(applyid);
        selectById.setApplyStatus(ShopSalesmanApply.APPLY_STATUS_XTQX);
        shopSalesmanApplyDao.updateById(selectById);
        return AjaxResult.buildFailInstance("操作成功");
    }
    
    
    
zq-erp/src/main/java/com/matrix/system/fenxiao/vo/ShopCustomDetailVo.java
@@ -1,13 +1,11 @@
package com.matrix.system.fenxiao.vo;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@Data
@ApiModel(value = "ShopCustomDetailVo", description = "分销员客户基本信息的返参")
@@ -18,10 +16,12 @@
    private String avatarUrl;
    @ApiModelProperty(value = "分销员")
    private String nickname;
    @ApiModelProperty(value = "加入时间")
    @ApiModelProperty(value = "绑定时间")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm",timezone="GMT+8")
    private Date createTime;
    @ApiModelProperty(value = "申请方式1、自主申请,2、自动添加,3上级邀请,4、手动添加(来源)")
    @ApiModelProperty(value = "绑定方式1、自主申请,2、自动添加,3上级邀请,4、手动添加(来源)")
    private Integer  applyWay;
    @ApiModelProperty(value = "待成交次数")
    private Integer doneNum;
}
zq-erp/src/main/java/com/matrix/system/fenxiao/vo/ShopOrderDetailVo.java
New file
@@ -0,0 +1,45 @@
package com.matrix.system.fenxiao.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@Data
@ApiModel(value = "ShopOrderDetailVo", description = "订单收益信息返回类")
public class ShopOrderDetailVo {
    @ApiModelProperty(value = "订单id")
    private Long  orderId ;
    @ApiModelProperty(value = "订单编号")
    private String  orderNo;
    @ApiModelProperty(value = "实付金额")
    private Double  orderMoney;
    @ApiModelProperty(value = "下单门店")
    private String storeName;
    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private Date createTime;
    @ApiModelProperty(value = "头像")
    private String avatarUrl;
    @ApiModelProperty(value = "昵称")
    private String nickName;
    @ApiModelProperty(value = " 收益类型1,推广收益,2邀请收益")
    private Integer  revenueType;
    @ApiModelProperty(value = "收益金额")
    private Double  amount;
    @ApiModelProperty(value = " 结算状态1,待结算,2,已结算,3已退款")
    private Integer  orderStatus;
}
zq-erp/src/main/java/com/matrix/system/fenxiao/vo/ShopSalesmanAppliingVo.java
@@ -1,11 +1,14 @@
package com.matrix.system.fenxiao.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@Data
@ApiModel(value = "ShopSalesmanAppliingVo", description = "查询正在申请分销员的返参")
@ApiModel(value = "ShopSalesmanAppliingVo", description = "获取分销员待审核记录的返参")
public class ShopSalesmanAppliingVo {
    
    @ApiModelProperty(value = "申请用户id")
@@ -14,4 +17,14 @@
    @ApiModelProperty(value = "分销员")
    private String nickname;
    
    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private Date createTime;
    @ApiModelProperty(value = "头像")
    private String avatarUrl;
    @ApiModelProperty(value = "手机号码")
    private String phone;
}
zq-erp/src/main/java/com/matrix/system/fenxiao/vo/ShopSalesmanApplyVo.java
@@ -21,6 +21,10 @@
     * 审核状态-3未通过
     */
    public static final int APPLY_STATUS_WTG = 3;
    /**
     * 审核状态-4系统删除
     */
    public static final int APPLY_STATUS_XTQX = 4;
    /**
@@ -40,7 +44,8 @@
     */
    public static  final  int APPLY_WAY_HAND_ADD=4;
    @ApiModelProperty(value = "申请记录ID")
    private Long id;
    @ApiModelProperty(value = "申请方式1、自主申请,2、自动添加,3上级邀请,4、手动添加(来源)")
    private Integer  applyWay;
zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanApplyDao.xml
@@ -60,6 +60,7 @@
    <select id="findShopSalesmanApplyList" resultType="com.matrix.system.fenxiao.vo.ShopSalesmanApplyVo">
        SELECT
        a.id id,
        a.user_id userId,
        b.avatar_url avatarUrl,
        b.nick_name nickname,
@@ -72,7 +73,7 @@
        ( SELECT IFNULL(sum(IFNULL(amount, 0)), 0) FROM shop_salesman_order
        WHERE user_id = a.user_id AND order_status = 1 AND sales_user_id = a.user_id ) balance,
        g.NAME grade,
        a.create_time createTime,
        b.binding_parent_time createTime,
        a.apply_status applyStatus,
        a.apply_way applyWay
        FROM
@@ -118,14 +119,17 @@
    <select id="selectBizUserApplyList" resultType="com.matrix.system.fenxiao.vo.ShopSalesmanAppliingVo">
        SELECT
        a.open_id userId,
        a.nick_name nickName
        a.nick_name nickName,
        a.avatar_url avatarUrl,
        a.create_time createTime,
        a.phone_number phone
        FROM
        biz_user a
        LEFT JOIN shop_salesman_apply b ON a.open_id = b.user_id
        <where>
            a.company_id = #{record.companyId}
            and a.is_sales != 1
            and b.apply_status != 1
            and b.apply_status not in (1,2)
            <if test="record.nickName != null and record.nickName != ''">
                and a.nick_name like concat('%',#{record.nickName},'%')
            </if>
@@ -209,7 +213,7 @@
        WHERE user_id = a.user_id AND order_status = 2 AND sales_user_id = a.user_id ) totalRevenue,
        ( SELECT IFNULL(sum(IFNULL(amount, 0)), 0) FROM shop_salesman_order
        WHERE user_id = a.user_id AND order_status = 1 AND sales_user_id = a.user_id ) balance,
        a.create_time createTime,
        b.binding_parent_time createTime,
        a.apply_status applyStatus,
        a.apply_way applyWay
        FROM
@@ -226,12 +230,12 @@
        a.user_id userId,
        b.avatar_url avatarUrl,
        b.nick_name nickname,
        a.create_time createTime,
        a.apply_way applyWay
        b.binding_parent_time createTime,
        a.apply_way applyWay,
        (select COUNT(*) from shop_salesman_order c where c.order_status = 1 and c.sales_user_id = a.user_id) doneNum
        FROM
        shop_salesman_apply a
        LEFT JOIN biz_user b ON b.parent_open_id = a.user_id
        <where>
            a.company_id = #{record.companyId}
            AND b.is_sales != 1
@@ -250,12 +254,11 @@
        a.user_id userId,
        b.avatar_url avatarUrl,
        b.nick_name nickname,
        a.create_time createTime,
        b.binding_parent_time createTime,
        a.apply_way applyWay
        FROM
        shop_salesman_apply a
        LEFT JOIN biz_user b ON b.parent_open_id = a.user_id
        <where>
            a.company_id = #{record.companyId}
            AND b.is_sales = 1
@@ -270,4 +273,34 @@
        </if>
    </select>
    <select id="findShopOrderDetail" resultType="com.matrix.system.fenxiao.vo.ShopOrderDetailVo">
        select
        a.order_id orderId,
        a.create_time createTime,
        a.amount amount,
        a.revenue_type revenueType,
        a.order_status orderStatus,
        b.nick_name nickName,
        b.avatar_url avatarUrl,
        c.order_no orderNo,
        c.order_money orderMoney,
        (select s.store_name  from shop_store s where s.store_id = c.store_id) storeName
        from shop_salesman_order a
        left join biz_user b on b.open_id=a.user_id
        left join shop_order c on a.order_id=c.id
        <where>
            a.sales_user_id = #{record.userId}
            <if test="record.orderType != null and record.orderType != ''">
                and a.order_status = #{record.orderType}
            </if>
            <if test="record.userName != null and record.userName != ''">
                and b.nick_name like concat('%',#{record.userName},'%')
            </if>
        </where>
        <if test="record.sort !=null">
            order by
            a.${record.sort} ${record.order}
        </if>
    </select>
</mapper>
zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-apply.html
@@ -40,17 +40,21 @@
    </el-row>
    <el-row class="table-style"  >
        <el-table id="proj" :data="table.rows"  :height="height" stripe @sort-change="sortChange">
            <el-table-column
                    prop="userId"
                    label=""
                    width="300">
                    label="会员">
                <template slot-scope="scope">
                    <img :src="scope.row.avatarUrl" width="40" height="40" class="head_pic"/>
                    {{scope.row.nickname}}
                </template>
            </el-table-column>
            <el-table-column
                    prop="nickname"
                    label="分销员昵称"
                    width="180">
                    prop="phone"
                    label="手机号码">
            </el-table-column>
            <el-table-column
                    prop="createTime"
                    label="注册时间">
            </el-table-column>
            <el-table-column
                    prop="salesGrade"
zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-update.html
@@ -55,7 +55,8 @@
                    <span style="font-size: 20px;">{{basicdetail.nickname}} </span>
                </el-col>
                <el-col :span="3">
                    <el-select v-model="basicdetail.grade" @focus="getDatalist()" placeholder="请选择" filterable allow-create>
                    <el-select v-model="basicdetail.grade" @focus="getDatalist()" @change="changeSaleManGrade(basicdetail.grade)" placeholder="请选择" filterable allow-create>
                        <el-option v-for="item in salemanGradeList " :key="item.id" :label="item.name" :value="item.id"></el-option>
                    </el-select>
                </el-col>
@@ -129,14 +130,11 @@
                                type="selection">
                        </el-table-column>
                        <el-table-column
                                label="头像" width="100">
                                label="客户">
                            <template slot-scope="scope">
                                <img :src="scope.row.avatarUrl" width="40" height="40" class="head_pic"/>
                                {{scope.row.nickName}}
                            </template>
                        </el-table-column>
                        <el-table-column
                                prop="nickname"
                                label="分销员" width="100">
                        </el-table-column>
                        <el-table-column
                                prop="createTime"
@@ -154,12 +152,14 @@
                        <el-table-column
                                label="客户状态">
                            <template slot-scope="scope">
                                <span v-if="scope.row.doneNum == 0">已成交</span>
                                <span v-if="scope.row.doneNum > 0">未成交</span>
                            </template>
                        </el-table-column>
                        <el-table-column label="操作" width="240">
                            <template slot-scope="scope">
                                <el-row style="display:flex;">
                                    <el-button type="primary" size="mini" @click="openExamineSsaleManApply(scope.row)">解绑</el-button>
                                    <el-button type="primary" size="mini" @click="openExaminesaleMan(scope.row)">解绑</el-button>
                                </el-row>
                            </template>
                        </el-table-column>
@@ -195,14 +195,11 @@
                                type="selection">
                        </el-table-column>
                        <el-table-column
                                label="头像" width="100">
                                label="客户">
                            <template slot-scope="scope">
                                <img :src="scope.row.avatarUrl" width="40" height="40" class="head_pic"/>
                                {{scope.row.nickName}}
                            </template>
                        </el-table-column>
                        <el-table-column
                                prop="nickname"
                                label="分销员" width="100">
                        </el-table-column>
                        <el-table-column
                                prop="createTime"
@@ -217,15 +214,10 @@
                                <span v-if="scope.row.applyWay == 4">手动添加</span>
                            </template>
                        </el-table-column>
                        <el-table-column
                                label="客户状态">
                            <template slot-scope="scope">
                            </template>
                        </el-table-column>
                        <el-table-column label="操作" width="240">
                            <template slot-scope="scope">
                                <el-row style="display:flex;">
                                    <el-button type="primary" size="mini" @click="openExamineSsaleManApply(scope.row)">解绑</el-button>
                                    <el-button type="primary" size="mini" @click="openExaminesaleMan(scope.row)">解绑</el-button>
                                </el-row>
                            </template>
                        </el-table-column>
@@ -240,6 +232,86 @@
                                   :page-size="lowLevelList.pageSize"
                                   layout="total, sizes, prev, pager, next, jumper"
                                   :total="lowLevelList.total">
                    </el-pagination>
                </el-row>
            </el-tab-pane>
            <el-tab-pane label="收益订单" name="third">
                <el-row style="display:flex;align-items: center;">
                    <el-form ref="formOrder" :model="formOrder" inline >
                        <el-form-item label="结算状态" prop="orderType">
                            <el-select v-model="formOrder.orderType" placeholder="请选择">
                                <el-option
                                        v-for="item in orderTypeList"
                                        :key="item.value"
                                        :label="item.label"
                                        :value="item.value"
                                >
                                </el-option>
                            </el-select>
                        </el-form-item>
                        <el-form-item prop="userName">
                            <el-input v-model="formOrder.userName" placeholder="请输入会员姓名"></el-input>
                        </el-form-item>
                        <el-button type="primary" @click="searchFormOrder" >搜索</el-button>
                        <el-button @click="resetFormOrder('formOrder')">重置</el-button>
                    </el-form>
                </el-row>
                <el-row class="table-style" >
                    <el-table id="proj" :data="orderLevelList.rows"  :height="height" stripe:true  @sort-change="sortChange">
                        <el-table-column
                                prop="orderNo"
                                label="订单编号">
                        </el-table-column>
                        <el-table-column
                                prop="orderMoney"
                                label="实付金额">
                        </el-table-column>
                        <el-table-column
                                prop="storeName"
                                label="下单门店">
                        </el-table-column>
                        <el-table-column
                                label="客户">
                            <template slot-scope="scope">
                                <img :src="scope.row.avatarUrl" width="40" height="40" class="head_pic"/>
                                {{scope.row.nickName}}
                            </template>
                        </el-table-column>
                        <el-table-column
                                prop="createTime"
                                label="时间">
                        </el-table-column>
                        <el-table-column
                                label="收益类型">
                            <template slot-scope="scope">
                                <span v-if="scope.row.revenueType == 1">推广收益</span>
                                <span v-if="scope.row.revenueType == 2">邀请收益</span>
                            </template>
                        </el-table-column>
                        <el-table-column
                                prop="amount"
                                label="收益金额">
                        </el-table-column>
                        <el-table-column
                                label="结算状态">
                            <template slot-scope="scope">
                                <span v-if="scope.row.orderStatus == 1">待结算</span>
                                <span v-if="scope.row.orderStatus == 2">已结算</span>
                                <span v-if="scope.row.orderStatus == 3">已退款</span>
                            </template>
                        </el-table-column>
                    </el-table>
                </el-row>
                <el-row class="paginationStyle"  >
                    <el-pagination background
                                   @size-change="changePageSizeOrder"
                                   @current-change="changeCurrentPageOrder"
                                   :current-page="orderLevelList.currentPage"
                                   :page-sizes="[10, 20, 30, 50]"
                                   :page-size="orderLevelList.pageSize"
                                   layout="total, sizes, prev, pager, next, jumper"
                                   :total="orderLevelList.total">
                    </el-pagination>
                </el-row>
            </el-tab-pane>
@@ -265,17 +337,8 @@
        el: '#app',
        data: {
            activeName: 'first',
            shenheAgreeType : 2,
            shenheDisagreeType : 3,
            //条件查询审核状态
            shenheStateList:[
                {value:'',label:'全部'},
                {value:1,label:'未审核'},
                {value:2,label:'通过'},
                {value:3,label:'未通过'}
            ],
            basicdetail:{},
            //条件查询分销员等级
            //绑定客户
            form:{
                userName:'',
                order:'',
@@ -288,13 +351,33 @@
                pageSize:10,
                currentPage:1,
            },
            //邀请下级
            formlow:{
                userName:'',
                order:'',
                sort:''
            },
            lowLevelList:{
                rows:[],
                total:0,
                pageSize:10,
                currentPage:1,
            },
            //收益订单
            formOrder:{
                userName:'',
                orderType:'',
                order:'',
                sort:''
            },
            //条件查询结算状态
            orderTypeList:[
                {value:'',label:'全部'},
                {value:1,label:'待结算'},
                {value:2,label:'已结算'},
                {value:3,label:'已退款'}
            ],
            orderLevelList:{
                rows:[],
                total:0,
                pageSize:10,
@@ -314,7 +397,25 @@
                let _this = this;
                _this.loadParamSetting();
                _this.loadParamSettinglow();
                _this.loadParamSettingOrder();
                _this.getDatalist();
            },
            //修改等级
            changeSaleManGrade(id){
                let _this = this;
                let obj = {
                    userId: userId,
                    gradeId: id,
                }
                AjaxProxy.requst({
                    app: _this,
                    data:obj,
                    url: basePath + '/fenXiao/fenXiaoUser/changeSaleManGrade',
                    callback: function (data) {
                        _this.$message.success(data.info);
                        this.loadInfo();
                    }
                });
            },
            //绑定客户
            loadParamSetting() {
@@ -346,7 +447,7 @@
            //查询
            search:function(){
                this.fxyList.currentPage=1;
                this.loadInfo();
                this.loadParamSetting();
            },
            //重置
            resetForm(formName) {
@@ -354,11 +455,11 @@
            },
            changePageSize(val) {
                this.fxyList.pageSize = val;
                this.loadInfo();
                this.loadParamSetting();
            },
            changeCurrentPage(val) {
                this.fxyList.currentPage = val;
                this.loadInfo();
                this.loadParamSetting();
            },
            //邀请下级
            loadParamSettinglow() {
@@ -390,7 +491,7 @@
            //查询
            searchlow:function(){
                this.lowLevelList.currentPage=1;
                this.loadInfo();
                this.loadParamSettinglow();
            },
            //重置
            resetFormlow(formName) {
@@ -398,11 +499,56 @@
            },
            changePageSizelow(val) {
                this.lowLevelList.pageSize = val;
                this.loadInfo();
                this.loadParamSettinglow();
            },
            changeCurrentPagelow(val) {
                this.lowLevelList.currentPage = val;
                this.loadInfo();
                this.loadParamSettinglow();
            },
            //收益订单
            loadParamSettingOrder() {
                let _this = this;
                let data=_this.getRequestParamOrder();
                data.pageSize=_this.orderLevelList.pageSize;
                data.pageNum=_this.orderLevelList.currentPage;
                AjaxProxy.requst({
                    app: _this,
                    data:data,
                    url: basePath + '/fenXiao/fenXiaoUser/findShopSalesmanDetail',
                    callback: function (data) {
                        _this.orderLevelList.rows = data.mapInfo.orderRecords;
                        _this.orderLevelList.total = data.mapInfo.orderTotal;
                    }
                });
            },
            //查询参数
            getRequestParamOrder(){
                let _this = this;
                return   {
                    userName:_this.formOrder.userName,
                    orderType:_this.formOrder.orderType,
                    order:_this.formOrder.order,
                    sort:_this.formOrder.sort,
                    userId:userId,
                }
            },
            //查询
            searchFormOrder:function(){
                this.orderLevelList.currentPage=1;
                this.loadParamSettingOrder();
            },
            //重置
            resetFormOrder(formName) {
                this.$refs[formName].resetFields();
            },
            changePageSizeOrder(val) {
                this.orderLevelList.pageSize = val;
                this.loadParamSettingOrder();
            },
            changeCurrentPageOrder(val) {
                this.orderLevelList.currentPage = val;
                this.loadParamSettingOrder();
            },
            // select下拉框获取焦点的时候下拉框数据源---分销员等级
@@ -428,67 +574,43 @@
                    this.loadInfo();
                }
            },
            //新增分销员页面
            addSaleMan(){
                layer.full(layer.open({
                    type: 2,
                    title: "选择会员",
                    maxmin: true,
                    area: [MUI.SIZE_L, '500px'],
                    content : [ basePath + '/admin/redirect/fenxiao/fenxiao-apply']
                }));
            },
            //修改等级
            openUpdateSaleManGrade(){
                layer.full(layer.open({
                    type: 2,
                    title: "修改等级",
                    maxmin: true,
                    area: [MUI.SIZE_L, '500px'],
                    content : [ basePath + '/admin/redirect/fenxiao/fenxiao-update']
                }));
            },
            //审核
            openExamineSaleManApply(row) {
                this.$confirm('是否通过?', '审核', {
            //解绑
            openExamineSaleMan(row) {
                this.$confirm('是否解绑?', '解绑', {
                    distinguishCancelAndClose: true,//设置关闭按钮和不通过按钮的区别
                    confirmButtonText: '通过',
                    cancelButtonText: '不通过',
                    confirmButtonText: '同意',
                    cancelButtonText: '取消',
                    type: 'info'
                }).then(() => {
                    //通过
                    this.examineSaleManApply(row,this.shenheAgreeType);
                    console.log("conform");
                    this.unbundlingSaleMan(row);
                }).catch(action => {
                    //不通过
                    if(action === 'cancel'){
                        this.examineSaleManApply(row,this.shenheDisagreeType);
                        console.log("cancel");
                    }else{
                        //关闭按钮
                        console.log("close");
                        //this.$message({type: 'info',message: ''})
                    }
                });
            },
            examineSaleManApply(row,type){
            unbundlingSaleMan(row){
                let _this = this;
                let userId = row.userId;
                let obj = {
                    userId: userId,
                    applyState: type,
                }
                AjaxProxy.requst({
                    app: _this,
                    data:obj,
                    url: basePath + '/fenXiao/fenXiaoUser/examineSaleManApply',
                    url: basePath + '/fenXiao/fenXiaoUser/unbundlingSaleMan',
                    callback: function (data) {
                        _this.$message.success(data.info);
                        this.loadData();
                        this.loadInfo();
                    }
                });
            },
            submit() {
            }
        }
    })
</script>
zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-user.html
@@ -74,14 +74,11 @@
                                        type="selection">
                                </el-table-column>
                                <el-table-column
                                        label="头像" width="100">
                                        label="分销员">
                                    <template slot-scope="scope">
                                        <img :src="scope.row.avatarUrl" width="40" height="40" class="head_pic"/>
                                        {{scope.row.nickname}}
                                    </template>
                                </el-table-column>
                                <el-table-column
                                        prop="nickname"
                                        label="分销员" width="100">
                                </el-table-column>
                                <el-table-column
                                        prop="parentUser"
@@ -114,6 +111,7 @@
                                        <span v-if="scope.row.applyStatus == 1">待审核</span>
                                        <span v-if="scope.row.applyStatus == 2">通过</span>
                                        <span v-if="scope.row.applyStatus == 3">未通过</span>
                                        <span v-if="scope.row.applyStatus == 4">系统删除</span>
                                    </template>
                                </el-table-column>
                                <el-table-column
@@ -128,8 +126,10 @@
                                <el-table-column label="操作" width="240">
                                    <template slot-scope="scope">
                                        <el-row style="display:flex;">
                                            <el-button type="primary" size="mini" @click="openExamineSaleManApply(scope.row)">审核</el-button>
                                            <el-button type="primary" size="mini" @click="openUpdateSaleManGrade(scope.row)">修改等级</el-button>
                                            <el-button type="primary" v-if="scope.row.applyStatus == 1" size="mini" @click="openExamineSaleManApply(scope.row)">审核</el-button>
                                            <el-button type="primary" v-if="scope.row.applyStatus == 2" size="mini" @click="openUpdateSaleManGrade(scope.row)">修改等级</el-button>
                                            <el-button type="primary" size="mini" @click="openUpdateSaleManGrade(scope.row)">详情</el-button>
                                            <el-button type="primary" v-if="scope.row.applyStatus == 2" size="mini" @click="delSaleManGradeApply(scope.row)">删除</el-button>
                                        </el-row>
                                    </template>
                                </el-table-column>
@@ -147,6 +147,7 @@
                        </el-pagination>
                    </el-row>
                </el-tab-pane>
                <el-tab-pane label="分佣方案" name="second">
                    <template>
                        <el-table
@@ -185,6 +186,7 @@
                        </el-table>
                    </template>
                </el-tab-pane>
                <el-tab-pane label="推广文案" name="third">
                    <el-row>
                        <script style="width: 100%; height: 500px" id="description" name="description"
@@ -348,7 +350,7 @@
            },
            search:function(){
                this.fxyList.currentPage=1;
                this.loadInfo();
                this.loadParamSetting();
            },
            keydown(evt){
                if(evt.keyCode==13) {
@@ -366,16 +368,16 @@
                        this.form.order="asc";
                    }
                    this.form.sort=column.prop;
                    this.loadInfo();
                    this.loadParamSetting();
                }
            },
            changePageSize(val) {
                this.table.pageSize = val;
                this.loadData();
                this.loadParamSetting();
            },
            changeCurrentPage(val) {
                this.table.currentPage = val;
                this.loadData();
                this.loadParamSetting();
            },
            //时间格式化
            formatDate(row,column){
@@ -396,7 +398,46 @@
                    content : [ basePath + '/admin/redirect/fenxiao/fenxiao-apply']
                }));
            },
            //修改等级
            //删除
            delSaleManGradeApply(row){
                this.$confirm('是否删除?', '删除', {
                    distinguishCancelAndClose: true,//设置关闭按钮和不通过按钮的区别
                    confirmButtonText: '确认',
                    cancelButtonText: '取消',
                    type: 'info'
                }).then(() => {
                    //通过
                    this.examineDelSaleManGradeApply(row);
                }).catch(action => {
                    //不通过
                    if(action === 'cancel'){
                        console.log("cancel");
                    }else{
                        //关闭按钮
                        console.log("close");
                        //this.$message({type: 'info',message: ''})
                    }
                });
            },
            examineDelSaleManGradeApply(row){
                let _this = this;
                let userId = row.userId;
                let id = row.id;
                let obj = {
                    userId: userId,
                    applyId: id,
                }
                AjaxProxy.requst({
                    app: _this,
                    data:obj,
                    url: basePath + '/fenXiao/fenXiaoUser/delSaleManGradeApply',
                    callback: function (data) {
                        _this.$message.success(data.info);
                        this.loadParamSetting();
                    }
                });
            },
            //修改等级跳转
            openUpdateSaleManGrade(row){
                layer.full(layer.open({
                    type: 2,
@@ -440,7 +481,7 @@
                    url: basePath + '/fenXiao/fenXiaoUser/examineSaleManApply',
                    callback: function (data) {
                        _this.$message.success(data.info);
                        this.loadData();
                        this.loadParamSetting();
                    }
                });
            },