From 000e2719d57fd6cfc94fb340730ab3722d6c47cb Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Sun, 14 Mar 2021 14:33:14 +0800 Subject: [PATCH] 分销员后台0314 --- zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-apply.html | 18 zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-update.html | 262 ++++++++++++++++----- zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopSalesmanApply.java | 4 zq-erp/src/main/java/com/matrix/system/fenxiao/vo/ShopCustomDetailVo.java | 14 zq-erp/src/main/java/com/matrix/system/fenxiao/action/FenXiaoUserAction.java | 80 ++++-- zq-erp/src/main/java/com/matrix/system/fenxiao/dto/DelSaleManGradeApplyDto.java | 20 + zq-erp/src/main/java/com/matrix/system/fenxiao/dto/ChangeSaleManGradeDto.java | 19 + zq-erp/src/main/java/com/matrix/system/fenxiao/vo/ShopSalesmanAppliingVo.java | 15 + zq-erp/src/main/java/com/matrix/system/fenxiao/dto/UnbundlingSaleManDto.java | 17 + zq-erp/src/main/java/com/matrix/system/fenxiao/vo/ShopSalesmanApplyVo.java | 7 zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-user.html | 67 ++++- zq-erp/src/main/java/com/matrix/system/fenxiao/service/ShopSalesmanApplyService.java | 79 ++++++ zq-erp/src/main/java/com/matrix/system/fenxiao/vo/ShopOrderDetailVo.java | 45 +++ zq-erp/src/main/java/com/matrix/system/fenxiao/dto/ShopSalesmanDetailDto.java | 3 zq-erp/src/main/java/com/matrix/system/fenxiao/dao/ShopSalesmanApplyDao.java | 4 zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanApplyDao.xml | 51 +++ 16 files changed, 571 insertions(+), 134 deletions(-) diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/action/FenXiaoUserAction.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/action/FenXiaoUserAction.java index cd91bc3..f462439 100644 --- a/zq-erp/src/main/java/com/matrix/system/fenxiao/action/FenXiaoUserAction.java +++ b/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; + } + } diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/dao/ShopSalesmanApplyDao.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/dao/ShopSalesmanApplyDao.java index 925af26..f8a5e83 100644 --- a/zq-erp/src/main/java/com/matrix/system/fenxiao/dao/ShopSalesmanApplyDao.java +++ b/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; @@ -44,5 +45,8 @@ IPage<ShopCustomDetailVo> findCustomLow(Page<ShopCustomDetailVo> pageLow, @Param("record")ShopSalesmanDetailDto shopSalesmanDetailDto); + + IPage<ShopOrderDetailVo> findShopOrderDetail(Page<ShopOrderDetailVo> pageOrder, + @Param("record")ShopSalesmanDetailDto shopSalesmanDetailDto); } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/ChangeSaleManGradeDto.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/ChangeSaleManGradeDto.java new file mode 100644 index 0000000..b302d34 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/ChangeSaleManGradeDto.java @@ -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; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/DelSaleManGradeApplyDto.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/DelSaleManGradeApplyDto.java new file mode 100644 index 0000000..0431d94 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/DelSaleManGradeApplyDto.java @@ -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; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/ShopSalesmanDetailDto.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/ShopSalesmanDetailDto.java index bd2f6a1..e9e771e 100644 --- a/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/ShopSalesmanDetailDto.java +++ b/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; diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/UnbundlingSaleManDto.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/UnbundlingSaleManDto.java new file mode 100644 index 0000000..da71cea --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/UnbundlingSaleManDto.java @@ -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; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopSalesmanApply.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopSalesmanApply.java index 7894732..b60f3de 100644 --- a/zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopSalesmanApply.java +++ b/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; /** diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/service/ShopSalesmanApplyService.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/service/ShopSalesmanApplyService.java index f03bb2e..801eeb3 100644 --- a/zq-erp/src/main/java/com/matrix/system/fenxiao/service/ShopSalesmanApplyService.java +++ b/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("操作成功"); + } + diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/vo/ShopCustomDetailVo.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/vo/ShopCustomDetailVo.java index 6f9507d..2b5a752 100644 --- a/zq-erp/src/main/java/com/matrix/system/fenxiao/vo/ShopCustomDetailVo.java +++ b/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、手动添加(来源)") - private Integer applyWay; + @ApiModelProperty(value = "绑定方式1、自主申请,2、自动添加,3上级邀请,4、手动添加(来源)") + private Integer applyWay; + @ApiModelProperty(value = "待成交次数") + private Integer doneNum; } diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/vo/ShopOrderDetailVo.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/vo/ShopOrderDetailVo.java new file mode 100644 index 0000000..a922e46 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/fenxiao/vo/ShopOrderDetailVo.java @@ -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; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/vo/ShopSalesmanAppliingVo.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/vo/ShopSalesmanAppliingVo.java index 5ca3e8c..20fe6e9 100644 --- a/zq-erp/src/main/java/com/matrix/system/fenxiao/vo/ShopSalesmanAppliingVo.java +++ b/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; + } diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/vo/ShopSalesmanApplyVo.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/vo/ShopSalesmanApplyVo.java index 6ea6b37..3a3af3c 100644 --- a/zq-erp/src/main/java/com/matrix/system/fenxiao/vo/ShopSalesmanApplyVo.java +++ b/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; diff --git a/zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanApplyDao.xml b/zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanApplyDao.xml index 60c4479..b661f60 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanApplyDao.xml +++ b/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> \ No newline at end of file diff --git a/zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-apply.html b/zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-apply.html index 0f2728e..8be97f9 100644 --- a/zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-apply.html +++ b/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" diff --git a/zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-update.html b/zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-update.html index 3cd9ded..39b2425 100644 --- a/zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-update.html +++ b/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> diff --git a/zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-user.html b/zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-user.html index a99b9d3..8d2fe90 100644 --- a/zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-user.html +++ b/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(); } }); }, -- Gitblit v1.9.1