From 0a16ffd3e627278bc317109ef7102f5673a1242d Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Fri, 12 Mar 2021 16:24:10 +0800 Subject: [PATCH] Merge branch 'score_shop' of http://120.27.238.55:7000/r/beauty-erp into score_shop --- zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-apply.html | 59 ++++- zq-erp/src/main/java/com/matrix/system/fenxiao/dto/ShopSalesmanAppliingDto.java | 2 zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesmanAction.java | 3 zq-erp/pom.xml | 4 zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopSalesmanOrder.java | 19 + zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopSalesmanApply.java | 3 zq-erp/src/main/java/com/matrix/system/fenxiao/action/FenXiaoUserAction.java | 52 +++- zq-erp/src/main/resources/config/db/increment/推广员.sql | 23 ++ zq-erp/src/main/resources/config/test/application.properties | 2 zq-erp/src/main/java/com/matrix/system/fenxiao/dao/ShopSalesmanGradeDao.java | 6 zq-erp/src/main/java/com/matrix/system/fenxiao/dto/AddSaleManApplyDto.java | 20 ++ zq-erp/src/main/java/com/matrix/system/fenxiao/vo/ShopSalesmanGradeVo.java | 17 + zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanGradeDao.xml | 11 + zq-erp/src/main/java/com/matrix/biz/bean/BizUser.java | 6 zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-user.html | 3 zq-erp/src/main/java/com/matrix/system/fenxiao/service/ShopSalesmanApplyService.java | 53 +++++ zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanOrderItemDao.xml | 33 +++ zq-erp/src/main/java/com/matrix/system/fenxiao/dao/ShopSalesmanOrderItemDao.java | 13 + zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopSalesmanOrderItem.java | 54 +++++ zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/OrderTask.java | 106 ++++++++++ zq-erp/src/main/java/com/matrix/system/fenxiao/service/ShopSalesmanOrderItemService.java | 20 ++ zq-erp/src/main/java/com/matrix/system/fenxiao/dao/ShopSalesmanApplyDao.java | 3 zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanApplyDao.xml | 30 ++ zq-erp/src/main/resources/templates/views/admin/shop/shopProduct-form.html | 47 +++- 24 files changed, 535 insertions(+), 54 deletions(-) diff --git a/zq-erp/pom.xml b/zq-erp/pom.xml index f11f7a0..6590214 100644 --- a/zq-erp/pom.xml +++ b/zq-erp/pom.xml @@ -394,12 +394,12 @@ <exclude>config/test/*</exclude> <exclude>config/xcx/*</exclude> - <!----> + <!-- <exclude>config/config.json</exclude> <exclude>config/application.properties</exclude> <exclude>config/system.properties</exclude> - +--> <exclude>**/*.woff</exclude> <exclude>**/*.woff2</exclude> diff --git a/zq-erp/src/main/java/com/matrix/biz/bean/BizUser.java b/zq-erp/src/main/java/com/matrix/biz/bean/BizUser.java index b0a0338..8c94ca2 100644 --- a/zq-erp/src/main/java/com/matrix/biz/bean/BizUser.java +++ b/zq-erp/src/main/java/com/matrix/biz/bean/BizUser.java @@ -43,7 +43,7 @@ /** *推广员等级 */ - private Double salesmanGrade; + private Long salesmanGrade; /** @@ -265,11 +265,11 @@ this.withdrawalCash = withdrawalCash; } - public Double getSalesmanGrade() { + public Long getSalesmanGrade() { return salesmanGrade; } - public void setSalesmanGrade(Double salesmanGrade) { + public void setSalesmanGrade(Long salesmanGrade) { this.salesmanGrade = salesmanGrade; } 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 5538f6c..62a352d 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 @@ -2,19 +2,26 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.matrix.core.constance.MatrixConstance; import com.matrix.core.pojo.AjaxResult; import com.matrix.core.tools.StringUtils; +import com.matrix.core.tools.WebUtil; +import com.matrix.system.common.bean.SysUsers; +import com.matrix.system.fenxiao.dto.AddSaleManApplyDto; import com.matrix.system.fenxiao.dto.ShopSalesmanAppliingDto; import com.matrix.system.fenxiao.dto.ShopSalesmanApplyDto; import com.matrix.system.fenxiao.service.ShopSalesmanApplyService; 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 io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; + +import java.util.List; @RestController @RequestMapping(value = "/fenXiao/fenXiaoUser") @@ -41,23 +48,12 @@ shopSalesmanApplyDto.setOrder("desc"); } - Page<ShopSalesmanApplyVo> page = new Page(shopSalesmanApplyDto.getPageNum(), shopSalesmanApplyDto.getPageSize()); - IPage<ShopSalesmanApplyVo> rows = shopSalesmanApplyService.findShopSalesmanApplyList(page,shopSalesmanApplyDto); AjaxResult result = AjaxResult.buildSuccessInstance(rows.getRecords(),rows.getTotal()); return result; } - - /** - * 跳转 分销员待审核记录页面 - * - @RequestMapping(value = "/shopSalesmanAppliing") - public String shopSalesmanAppliing() { - return "admin/fenxiao/fenxiao-apply"; - } - */ /** *获取分销员待审核记录 @@ -71,8 +67,6 @@ AjaxResult findShopSalesmanAppliingList(@RequestBody ShopSalesmanAppliingDto shopSalesmanAppliingDto) { //设置用户公司ID QueryUtil.setQueryLimitCom(shopSalesmanAppliingDto); - //查询条件待审核状态 - shopSalesmanAppliingDto.setApplyStatus(1); //排序 if(StringUtils.isBlank(shopSalesmanAppliingDto.getSort())){ shopSalesmanAppliingDto.setSort("create_time"); @@ -80,9 +74,39 @@ } Page<ShopSalesmanAppliingVo> page = new Page(shopSalesmanAppliingDto.getPageNum(), shopSalesmanAppliingDto.getPageSize()); - IPage<ShopSalesmanAppliingVo> rows = shopSalesmanApplyService.findShopSalesmanAppliingList(page,shopSalesmanAppliingDto); + IPage<ShopSalesmanAppliingVo> rows = shopSalesmanApplyService.selectBizUserApplyList(page,shopSalesmanAppliingDto); + + //IPage<ShopSalesmanAppliingVo> rows = shopSalesmanApplyService.findShopSalesmanAppliingList(page,shopSalesmanAppliingDto); AjaxResult result = AjaxResult.buildSuccessInstance(rows.getRecords(),rows.getTotal()); return result; } + /** + *获取对应的分销员等级 + */ + @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 = "新增分销员") + @PostMapping(value = "/addSaleManApply") + public @ResponseBody + AjaxResult findShopSalesmanAppliingList(@RequestBody AddSaleManApplyDto addSaleManApplyDto) { + //设置用户公司ID + QueryUtil.setQueryLimitCom(addSaleManApplyDto); + AjaxResult result= AjaxResult.buildSuccessInstance("设置成功"); + + shopSalesmanApplyService.addSaleManApply(addSaleManApplyDto.getUserId(),addSaleManApplyDto.getGradeId()); + 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 5ef99b9..3658015 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 @@ -28,4 +28,7 @@ IPage<ShopSalesmanAppliingVo> findShopSalesmanAppliingList(Page<ShopSalesmanAppliingVo> page, @Param("record")ShopSalesmanAppliingDto shopSalesmanAppliingDto); + IPage<ShopSalesmanAppliingVo> selectBizUserApplyList(Page<ShopSalesmanAppliingVo> page, + @Param("record")ShopSalesmanAppliingDto shopSalesmanAppliingDto); + } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/dao/ShopSalesmanGradeDao.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/dao/ShopSalesmanGradeDao.java index 52a7bb6..d1326a1 100644 --- a/zq-erp/src/main/java/com/matrix/system/fenxiao/dao/ShopSalesmanGradeDao.java +++ b/zq-erp/src/main/java/com/matrix/system/fenxiao/dao/ShopSalesmanGradeDao.java @@ -2,6 +2,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.matrix.system.fenxiao.entity.ShopSalesmanGrade; +import com.matrix.system.fenxiao.vo.ShopSalesmanGradeVo; +import io.lettuce.core.dynamic.annotation.Param; + +import java.util.List; /** * @description 推广员等级 @@ -10,4 +14,6 @@ */ public interface ShopSalesmanGradeDao extends BaseMapper<ShopSalesmanGrade> { + List<ShopSalesmanGradeVo> getShopSalesmanGradeVo(@Param("companyId")Long companyId); + } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/dao/ShopSalesmanOrderItemDao.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/dao/ShopSalesmanOrderItemDao.java new file mode 100644 index 0000000..8c4e87e --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/fenxiao/dao/ShopSalesmanOrderItemDao.java @@ -0,0 +1,13 @@ +package com.matrix.system.fenxiao.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.matrix.system.fenxiao.entity.ShopSalesmanOrderItem; + +/** + * @description 分销单明细 + * @author yourName + * @date 2021-03-12 13:17 + */ +public interface ShopSalesmanOrderItemDao extends BaseMapper<ShopSalesmanOrderItem> { + +} \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/AddSaleManApplyDto.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/AddSaleManApplyDto.java new file mode 100644 index 0000000..0fcd776 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/AddSaleManApplyDto.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 = "AddSaleManApplyDto", description = "查询参数") +public class AddSaleManApplyDto { + + @ApiModelProperty(value ="会员ID") + private String userId; + + @ApiModelProperty(value ="等级ID") + private String gradeId; + + @ApiModelProperty(hidden = true) + private Long companyId; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/ShopSalesmanAppliingDto.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/ShopSalesmanAppliingDto.java index 11227e7..3672483 100644 --- a/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/ShopSalesmanAppliingDto.java +++ b/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/ShopSalesmanAppliingDto.java @@ -15,8 +15,6 @@ @ApiModelProperty(hidden = true) private Long companyId; - @ApiModelProperty(hidden = true) - private Integer applyStatus; } 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 fc2bfd5..7894732 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 @@ -63,6 +63,9 @@ @ApiModelProperty(value = "备注") private String remark; + @ApiModelProperty(value = "等级ID") + private long gradeId; + /** * 公司ID */ diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopSalesmanOrder.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopSalesmanOrder.java index 5f16ee6..cc1647c 100644 --- a/zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopSalesmanOrder.java +++ b/zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopSalesmanOrder.java @@ -13,6 +13,25 @@ @Data @TableName("shop_salesman_order") public class ShopSalesmanOrder extends BaseEntity { + /** + * 推广收益类型1推广收益 + */ + public static final Integer REVENUE_TYPE_SALES = 1; + + /** + * 推广收益类型2邀请收益 + */ + public static final Integer REVENUE_TYPE_INVITATION = 2; + /** + * 分销单状态1待结算 + */ + public static final Integer STATUS_DJS = 1; + /** + * 分销单状态2已结算 + */ + public static final Integer STATUS_YJS = 2; + + @Extend private static final long serialVersionUID = 1L; diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopSalesmanOrderItem.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopSalesmanOrderItem.java new file mode 100644 index 0000000..a400637 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopSalesmanOrderItem.java @@ -0,0 +1,54 @@ +package com.matrix.system.fenxiao.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.matrix.core.anotations.Extend; +import com.matrix.system.score.entity.BaseEntity; +import lombok.Data; + +/** + * @description 分销单明细 + * @author yourName + * @date 2021-03-12 13:17 + */ +@Data +@TableName("shop_salesman_order_item") +public class ShopSalesmanOrderItem extends BaseEntity { + @Extend + private static final long serialVersionUID = 1L; + + + + + + /** + * 订单id + */ + + + private Long orderId ; + + /** + * 分销订单id + */ + + + private Long salesmanOrderId; + + /** + * 订单明细id + */ + + + private Long orderItemId; + + /** + * 收益金额 + */ + + + private Double amount; + + + + +} \ No newline at end of file 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 6d64b59..9707da8 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 @@ -1,5 +1,6 @@ package com.matrix.system.fenxiao.service; +import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -11,18 +12,21 @@ import com.matrix.core.tools.StringUtils; import com.matrix.system.common.bean.BusParameterSettings; import com.matrix.system.common.dao.BusParameterSettingsDao; -import com.matrix.system.common.interceptor.HostInterceptor; 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.ShopSalesmanAppliingDto; import com.matrix.system.fenxiao.dto.ShopSalesmanApplyDto; import com.matrix.system.fenxiao.entity.ShopSalesmanApply; +import com.matrix.system.fenxiao.entity.ShopSalesmanGrade; import com.matrix.system.fenxiao.vo.ShopSalesmanAppliingVo; import com.matrix.system.fenxiao.vo.ShopSalesmanApplyVo; +import com.matrix.system.fenxiao.vo.ShopSalesmanGradeVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Date; +import java.util.List; /** * @description 推广员申请记录 @@ -38,6 +42,9 @@ @Autowired ShopSalesmanApplyDao salesmanApplyDao; + + @Autowired + ShopSalesmanGradeDao shopSalesmanGradeDao; @Autowired private BizUserDao bizUserDao; @@ -51,7 +58,7 @@ * @param invitationId * @return */ - public ShopSalesmanApply applyToBeAnSalesman(String openId, String invitationId) { + public ShopSalesmanApply applyToBeAnSalesman(String openId,String gradeId,String invitationId) { BizUser loginUser=bizUserDao.findByOpenId(openId); //校验审核状态,和是否重复发起 @@ -63,6 +70,7 @@ ShopSalesmanApply shopSalesmanApply=new ShopSalesmanApply(); shopSalesmanApply.setUserId(openId); + shopSalesmanApply.setCreateBy(loginUser.getNickName()); shopSalesmanApply.setApplyWay(ShopSalesmanApply.APPLY_WAY_SELF); @@ -78,8 +86,18 @@ //如果曾经是被邀请进来的则自动绑定为之前邀请人的下级 shopSalesmanApply.setParentUserId(loginUser.getParentOpenId()); } + if(StringUtils.isNotBlank(gradeId)){ + shopSalesmanApply.setGradeId(Long.parseLong(gradeId)); + }else{ + //获取初始等级ID(公司id,是否为初始等级) + Wrapper<ShopSalesmanGrade> queryWrapperOrepool = new QueryWrapper<>(); + ((QueryWrapper<ShopSalesmanGrade>) queryWrapperOrepool).eq("company_id", loginUser.getCompanyId()); + ((QueryWrapper<ShopSalesmanGrade>) queryWrapperOrepool).eq("is_default", 1); + ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectOne(queryWrapperOrepool); + shopSalesmanApply.setGradeId(shopSalesmanGrade.getId()); + } - BusParameterSettings busParameterSettings = busParameterSettingsDao.selectCompanyParamByCode(FenxiaoSettingConstant.FX_AUDIT_METHOD, HostInterceptor.getCompanyId()); + BusParameterSettings busParameterSettings = busParameterSettingsDao.selectCompanyParamByCode(FenxiaoSettingConstant.FX_AUDIT_METHOD, loginUser.getCompanyId()); if(busParameterSettings!=null &&busParameterSettings.getParamValue().equals("1")){ //自动审核 @@ -106,4 +124,33 @@ return salesmanApplyDao.findShopSalesmanAppliingList(page,shopSalesmanAppliingDto); } + public IPage<ShopSalesmanAppliingVo> selectBizUserApplyList(Page<ShopSalesmanAppliingVo> page, ShopSalesmanAppliingDto shopSalesmanAppliingDto) { + return salesmanApplyDao.selectBizUserApplyList(page,shopSalesmanAppliingDto); + } + + public List<ShopSalesmanGradeVo> getShopSalesmanGradeVo(Long companyId) { + return shopSalesmanGradeDao.getShopSalesmanGradeVo(companyId); + } + + public void addSaleManApply(String userId,String gradeId) { + BizUser user = bizUserDao.selectById(userId); + + applyToBeAnSalesman(user.getOpenId(),gradeId, ""); + } + + + + + + + + + + + + + + + + } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/service/ShopSalesmanOrderItemService.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/service/ShopSalesmanOrderItemService.java new file mode 100644 index 0000000..fcfb554 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/fenxiao/service/ShopSalesmanOrderItemService.java @@ -0,0 +1,20 @@ +package com.matrix.system.fenxiao.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.matrix.system.fenxiao.dao.ShopSalesmanOrderItemDao; +import com.matrix.system.fenxiao.entity.ShopSalesmanOrderItem; +import org.springframework.stereotype.Service; + +/** + * @description 分销单明细 + * @author yourName + * @date 2021-03-12 13:17 + */ +@Service +public class ShopSalesmanOrderItemService extends ServiceImpl<ShopSalesmanOrderItemDao, ShopSalesmanOrderItem>{ + + + + + +} \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/vo/ShopSalesmanGradeVo.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/vo/ShopSalesmanGradeVo.java new file mode 100644 index 0000000..7704375 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/fenxiao/vo/ShopSalesmanGradeVo.java @@ -0,0 +1,17 @@ +package com.matrix.system.fenxiao.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "ShopSalesmanGradeVo", description = "返参") +public class ShopSalesmanGradeVo { + + @ApiModelProperty(value = "id") + private Long id; + + @ApiModelProperty(value = "等级名称") + private String name; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesmanAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesmanAction.java index a47ba98..ea148ec 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesmanAction.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesmanAction.java @@ -54,6 +54,7 @@ @Autowired ShopSalesmanApplyDao salesmanApplyDao; + @Autowired ShopSalesmanApplyService shopSalesmanApplyService; @@ -84,7 +85,7 @@ public AjaxResult applyToBeAnSalesman(@RequestBody Map<String,String> param) { BizUser loginUser = redisUserLoginUtils.getLoginUser(BizUser.class); String invitationId = param.get("invitationId"); - ShopSalesmanApply shopSalesmanApply= shopSalesmanApplyService.applyToBeAnSalesman(loginUser.getOpenId(),invitationId); + ShopSalesmanApply shopSalesmanApply= shopSalesmanApplyService.applyToBeAnSalesman(loginUser.getOpenId(),"",invitationId); loginUser=bizUserDao.selectById(loginUser.getUserId()); redisUserLoginUtils.updateUserInfo(loginUser); return AjaxResult.buildSuccessInstance(shopSalesmanApply); diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/OrderTask.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/OrderTask.java index 28f98c3..db41768 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/OrderTask.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/OrderTask.java @@ -3,11 +3,16 @@ import com.matrix.biz.bean.BizUser; import com.matrix.biz.service.BizUserService; +import com.matrix.core.constance.MatrixConstance; import com.matrix.core.tools.LogUtil; import com.matrix.core.tools.StringUtils; import com.matrix.system.common.constance.AppConstance; import com.matrix.system.common.dao.BusParameterSettingsDao; import com.matrix.system.constance.Dictionary; +import com.matrix.system.fenxiao.dao.ShopSalesmanGradeDao; +import com.matrix.system.fenxiao.dao.ShopSalesmanOrderDao; +import com.matrix.system.fenxiao.entity.ShopSalesmanGrade; +import com.matrix.system.fenxiao.entity.ShopSalesmanOrder; import com.matrix.system.hive.bean.*; import com.matrix.system.hive.dao.*; import com.matrix.system.hive.service.CodeService; @@ -21,6 +26,7 @@ import com.matrix.system.shopXcx.dao.ShopSkuDao; import com.rabbitmq.client.DeliverCallback; import com.rabbitmq.client.Delivery; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -78,8 +84,15 @@ @Autowired private ShoppingGoodsDao shoppingGoodsDao; + @Autowired + private ShopSalesmanOrderDao shopSalesmanOrderDao; + + @Autowired + private ShopSalesmanGradeDao shopSalesmanGradeDao; + @Transactional(rollbackFor = Exception.class) - public void createOrder(ShopOrder orderDto) { + public void synchronizationOrderToErp(ShopOrder orderDto) { + //判断是否存在需要同步的产品,只有绑定了erp中产品的才同步 boolean needTb=false; for (ShopOrderDetails orderItemDto : orderDto.getDetails()) { @@ -236,7 +249,96 @@ //获取订单详情 List<ShopOrderDetails> orderDetails = shopOrderDetailsDao.selectByOrderId(Integer.valueOf(orderId)); order.setDetails(orderDetails); - createOrder(order); + //同步订单到erp + synchronizationOrderToErp(order); + //处理分销订单 + handleExtensionOrder(order); + + } + + /** + * 处理分销订单 + * @param order + */ + @Transactional + void handleExtensionOrder(ShopOrder order) { + //判读客户是否存在上级,存在则产生上级的收益 + BizUser bizUser = bizUserService.findByOpenId(order.getUserId()); + if(StringUtils.isNotBlank(bizUser.getParentOpenId())){ + LogUtil.debug("处理分销订单userOpid={}",bizUser.getOpenId()); + //存在上级 + ShopSalesmanOrder salesmanOrder=new ShopSalesmanOrder(); + salesmanOrder.setCompanyId(order.getCompanyId()); + salesmanOrder.setCreateBy(MatrixConstance.SYSTEM_USER); + salesmanOrder.setUpdateBy(MatrixConstance.SYSTEM_USER); + salesmanOrder.setCreateTime(new Date()); + salesmanOrder.setUpdateTime(new Date()); + salesmanOrder.setOrderId(Long.parseLong(order.getId()+"")); + salesmanOrder.setUserId(order.getUserId()); + salesmanOrder.setSalesUserId(bizUser.getParentOpenId()); + salesmanOrder.setRevenueType(ShopSalesmanOrder.REVENUE_TYPE_SALES); + salesmanOrder.setOrderStatus(ShopSalesmanOrder.STATUS_DJS); + Double salesAmount=0D; + Double invitationAmount=0D; + Double orderTotal=0D; + Double zk=1D; + + BizUser salesMan=bizUserService.findByOpenId(bizUser.getParentOpenId()); + BizUser invitationMan=null; + ShopSalesmanOrder invitationOrder=null; + boolean hasInvitationMan=StringUtils.isNotBlank(salesMan.getParentOpenId()); + + //判断推广员是否还存在上级,存在则计算邀请收益 + if(hasInvitationMan){ + invitationMan=bizUserService.findByOpenId(salesMan.getParentOpenId()); + invitationOrder=new ShopSalesmanOrder(); + BeanUtils.copyProperties(salesmanOrder,invitationOrder); + invitationOrder.setSalesUserId(invitationMan.getOpenId()); + invitationOrder.setRevenueType(ShopSalesmanOrder.REVENUE_TYPE_INVITATION); + } + + //收益计算 + for (ShopOrderDetails item:order.getDetails() ){ + if(StringUtils.isNotBlank(item.getShopProduct().getAttrValues()) + && item.getShopProduct().getAttrValues().contains("分销商城")){ + if(item.getShopSku().getSealesPrice()==null + ||item.getShopSku().getSealesPrice().doubleValue()==0){ + //按分销等级计算 + ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectById(salesMan.getSalesmanGrade()); + salesAmount+=item.getTotalPrice().doubleValue()*(shopSalesmanGrade.getSealesCommission()/100); + + if(hasInvitationMan){ + ShopSalesmanGrade invitationManGrade = shopSalesmanGradeDao.selectById(invitationMan.getSalesmanGrade()); + invitationAmount+=item.getTotalPrice().doubleValue()*(invitationManGrade.getSealesCommission()/100); + } + + }else{ + //按产品设置的推广金额计算 + salesAmount+=item.getShopSku().getSealesPrice().doubleValue()*item.getCount(); + if(hasInvitationMan){ + invitationAmount+=item.getShopSku().getInvitationPrice().doubleValue()*item.getCount(); + } + } + orderTotal+=item.getTotalPrice().doubleValue(); + } + } + //整体的优惠金额折算成折扣,* 佣金 + zk=order.getOrderMoney().doubleValue()/orderTotal; + + salesAmount=salesAmount*zk; + salesmanOrder.setAmount(salesAmount); + shopSalesmanOrderDao.insert(salesmanOrder); + + if(hasInvitationMan){ + invitationAmount=invitationAmount*zk; + invitationOrder.setAmount(invitationAmount); + shopSalesmanOrderDao.insert(invitationOrder); + } + + }else{ + LogUtil.debug("不存在父级userOpid={}",bizUser.getOpenId()); + } + } } diff --git "a/zq-erp/src/main/resources/config/db/increment/\346\216\250\345\271\277\345\221\230.sql" "b/zq-erp/src/main/resources/config/db/increment/\346\216\250\345\271\277\345\221\230.sql" index 4a54e0f..fc225f3 100644 --- "a/zq-erp/src/main/resources/config/db/increment/\346\216\250\345\271\277\345\221\230.sql" +++ "b/zq-erp/src/main/resources/config/db/increment/\346\216\250\345\271\277\345\221\230.sql" @@ -11,6 +11,29 @@ /** + * 分销单明细 + * @author yourName + * @date 2021-03-12 13:17 + */ +CREATE TABLE shop_salesman_order_item( + create_by varchar(100) NOT NULL COMMENT '创建人', + create_time datetime NOT NULL COMMENT '创建时间', + update_by varchar(100) NOT NULL COMMENT '更新人', + update_time datetime NOT NULL COMMENT '更新时间', + id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', + + order_id bigint(20) COMMENT '订单id', + + salesman_order_id bigint(20) COMMENT '分销订单id', + + order_item_id bigint(20) COMMENT '订单明细id', + + amount double(20,2) COMMENT '收益金额', + +PRIMARY KEY(id) +)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='分销单明细'; + +/** * 收益流水 * @author yourName * @date 2021-03-10 17:34 diff --git a/zq-erp/src/main/resources/config/test/application.properties b/zq-erp/src/main/resources/config/test/application.properties index 1e00a70..cd48b66 100644 --- a/zq-erp/src/main/resources/config/test/application.properties +++ b/zq-erp/src/main/resources/config/test/application.properties @@ -65,7 +65,7 @@ #定时任务 scheduling.enabled=false -swagger.enable=false +swagger.enable=true swagger.security.username=admin swagger.security.password=admin 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 d0d85cf..c2261ad 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanApplyDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanApplyDao.xml @@ -46,7 +46,9 @@ shop_salesman_order b WHERE b.user_id = a.open_id + and order_status=2 AND b.sales_user_id = #{openId} + ) AS revenueAmount, ( SELECT count( * ) FROM shop_salesman_order c WHERE c.user_id = a.open_id AND c.sales_user_id = #{openId} ) AS orderCount FROM @@ -58,13 +60,15 @@ <select id="findShopSalesmanApplyList" resultType="com.matrix.system.fenxiao.vo.ShopSalesmanApplyVo"> SELECT - a.user_id userId + a.user_id userId, + b.nick_name nickname, + (SELECT s.nick_name from biz_user s where s.user_id = a.parent_user_id) parentUser, FROM shop_salesman_apply a LEFT JOIN biz_user b ON a.user_id = b.user_id LEFT JOIN shop_salesman_grade g ON b.salesman_grade = g.id <where> - and a.company_id=#{record.companyId} + a.company_id=#{record.companyId} <if test="record.shenheState != null and record.shenheState != ''"> and a.apply_status=#{record.shenheState} </if> @@ -82,7 +86,7 @@ shop_salesman_apply a LEFT JOIN biz_user b ON a.user_id = b.user_id <where> - and a.company_id = #{record.companyId} + a.company_id = #{record.companyId} and a.apply_status = #{record.applyStatus} <if test="record.nickName != null and record.nickName != ''"> and b.nick_name like concat('%',#{record.nickName},'%') @@ -93,5 +97,25 @@ a.${record.sort} ${record.order} </if> </select> + <select id="selectBizUserApplyList" resultType="com.matrix.system.fenxiao.vo.ShopSalesmanAppliingVo"> + SELECT + a.user_id userId, + a.nick_name nickName + FROM + biz_user a + LEFT JOIN shop_salesman_apply b ON a.user_id = b.user_id + <where> + a.company_id = #{record.companyId} + and a.is_sales != 1 + and b.apply_status != 1 + <if test="record.nickName != null and record.nickName != ''"> + and a.nick_name like concat('%',#{record.nickName},'%') + </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/mybatis/mapper/fenxiao/ShopSalesmanGradeDao.xml b/zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanGradeDao.xml index 499ab09..311d174 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanGradeDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanGradeDao.xml @@ -34,4 +34,15 @@ <result property="companyId" column="company_id" /> </resultMap> + + <select id="getShopSalesmanGradeVo" resultType="com.matrix.system.fenxiao.vo.ShopSalesmanGradeVo"> + SELECT + a.id, + a.name + FROM + shop_salesman_grade a + where + a.company_id = #{companyId} + </select> + </mapper> \ No newline at end of file diff --git a/zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanOrderItemDao.xml b/zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanOrderItemDao.xml new file mode 100644 index 0000000..4d73645 --- /dev/null +++ b/zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanOrderItemDao.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" +"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + +<mapper namespace="com.matrix.system.fenxiao.dao.ShopSalesmanOrderItemDao"> + <!-- 定义ShopSalesmanOrderItem 的复杂关联map --> + <resultMap type="com.matrix.system.fenxiao.entity.ShopSalesmanOrderItem" id="ShopSalesmanOrderItemMap"> + <id property="id" column="id" /> + <result property="createBy" column="create_by" /> + <result property="createTime" column="create_time" /> + <result property="updateBy" column="update_by" /> + <result property="updateTime" column="update_time" /> + <result property="orderId " column="order_id " /> + <result property="salesmanOrderId" column="salesman_order_id" /> + <result property="orderItemId" column="order_item_id" /> + <result property="amount" column="amount" /> + </resultMap> + + + <!-- 定义ShopSalesmanOrderItem 的简单map ,本map不添加其他的关联属性 --> + <resultMap type="com.matrix.system.fenxiao.entity.ShopSalesmanOrderItem" id="ShopSalesmanOrderItemSimpleMap"> + <id property="id" column="id" /> + <result property="createBy" column="create_by" /> + <result property="createTime" column="create_time" /> + <result property="updateBy" column="update_by" /> + <result property="updateTime" column="update_time" /> + <result property="orderId " column="order_id " /> + <result property="salesmanOrderId" column="salesman_order_id" /> + <result property="orderItemId" column="order_item_id" /> + <result property="amount" column="amount" /> + </resultMap> + +</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 5582db7..0f2728e 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 @@ -18,12 +18,6 @@ .panel-body{ overflow: hidden; } - .rowPanel{ - background: #ffffff; - padding: 0px 10px ; - padding-top: 10px; - margin: 0px 0px 10px 0px; - } .paginationStyle{ background: #ffffff; padding: 10px 10px; @@ -34,7 +28,7 @@ </head> <body> <div class="panel-body" id="app"> - <el-row class="rowPanel" > + <el-row style="display:flex;align-items: center;"> <el-form ref="form" :model="form" inline > <el-form-item prop="nickName"> <el-input v-model="form.nickName" placeholder="请输入会员姓名"></el-input> @@ -50,17 +44,28 @@ <el-table id="proj" :data="table.rows" :height="height" stripe @sort-change="sortChange"> <el-table-column prop="userId" - label="订单号" - width="180"> + label="" + width="300"> </el-table-column> <el-table-column prop="nickname" label="分销员昵称" width="180"> </el-table-column> + <el-table-column + prop="salesGrade" + label="分销等级" + width="180"> + <template slot-scope="scope"> + <el-select v-model="scope.row.proJbruserValue" @focus="getDatalist(scope.row)" placeholder="请选择" filterable allow-create> + <el-option v-for="item in salesGradeList " :key="item.id" :label="item.name" :value="item.id"> + </el-option> + </el-select> + </template> + </el-table-column> <el-table-column label="操作"> <template slot-scope="scope"> - <el-button type="text" size="small">设置为分销员</el-button> + <el-button type="text" size="small" @click="addSaleManApply(scope.row)">设置为分销员</el-button> </template> </el-table-column> </el-table> @@ -102,6 +107,8 @@ order:'', sort:'' }, + proJbruserValue : "", + salesGradeList: [], height:'calc(100vh - 240px)', }, created: function () { @@ -109,6 +116,38 @@ window.addEventListener("keydown", this.keydown); }, methods: { + //设置为分销员 + addSaleManApply(row){ + let _this = this; + let userId = row.userId; + let gradeId = row.proJbruserValue; + alert(gradeId); + let obj = { + userId: userId, + gradeId: gradeId, + } + AjaxProxy.requst({ + app: _this, + data:obj, + url: basePath + '/fenXiao/fenXiaoUser/addSaleManApply', + callback: function (data) { + _this.$message.success(data.info); + this.loadData(); + } + }); + }, + // select下拉框获取焦点的时候查询对应的下拉框数据源 + getDatalist(row) { + let _this = this; + AjaxProxy.requst({ + app: _this, + data:[], + url: basePath + '/fenXiao/fenXiaoUser/getShopSalesmanGrade', + callback: function (data) { + _this.salesGradeList = data.mapInfo.salesGrade; + } + }); + }, changePageSize(val) { this.table.pageSize = val; this.loadData(); 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 ba2d9d7..63603ff 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,8 +74,9 @@ <el-table-column fixed="right" label="操作" - width="100"> + width="auto"> <template slot-scope="scope"> + <el-button type="text" size="small" @click="addSaleManApply(scope.row)">审核</el-button> <el-button @click="handleClick(scope.row)" type="text" size="small">查看</el-button> <el-button type="text" size="small">编辑</el-button> </template> diff --git a/zq-erp/src/main/resources/templates/views/admin/shop/shopProduct-form.html b/zq-erp/src/main/resources/templates/views/admin/shop/shopProduct-form.html index 47957c3..dec22fc 100644 --- a/zq-erp/src/main/resources/templates/views/admin/shop/shopProduct-form.html +++ b/zq-erp/src/main/resources/templates/views/admin/shop/shopProduct-form.html @@ -229,6 +229,8 @@ <th>积分</th> <th>关联ERP产品</th> <th>排序</th> + <th>推广提成</th> + <th>邀请提成</th> <th>操作</th> </tr> </table> @@ -357,6 +359,8 @@ <input autocomplete="off" type="hidden" class="form-control" name="erpGoodsCode"> </div></td> <td><input autocomplete="off" type="text" class="form-control" name=""></td> + <td><input autocomplete="off" type="text" class="form-control" name=""></td> + <td><input autocomplete="off" type="text" class="form-control" name=""></td> <td><i class="fa fa-trash form-control-static" onclick="delThis('trId')"></i></td> </tr> </script> @@ -526,6 +530,16 @@ goodsName = ""; } + var sealesPrice = shopSkus[c].sealesPrice; + if (sealesPrice == null || typeof sealesPrice == 'undefined') { + sealesPrice = ""; + } + var invitationPrice = shopSkus[c].invitationPrice; + if (invitationPrice == null || typeof invitationPrice == 'undefined') { + invitationPrice = ""; + } + + var html= '<tr id="'+trId+'">' +'<td style="display:none;"><input autocomplete="off" type="hidden" class="form-control" value="'+shopSkus[c].id+'" ></td>' @@ -538,6 +552,8 @@ +'<td><div id="erpNoDiv"><button class="btn btn-info" onclick="selectProduct(\'shopIdValue\',\''+trId+'\')"><i class="fa fa-plus"></i></button>' +'<p class="form-control-static erpGoodsName">'+ goodsName +'</p><input autocomplete="off" class="form-control" type="hidden" value="'+stockCode+'" name="erpGoodsCode"></div></td>' +'<td><input autocomplete="off" type="text" class="form-control" value="'+sort+'" name=""></td>' + +'<td><input autocomplete="off" type="text" class="form-control" value="'+sealesPrice+'" name=""></td>' + +'<td><input autocomplete="off" type="text" class="form-control" value="'+invitationPrice+'" name=""></td>' +'<td><i class="fa fa-trash form-control-static" onclick="delThis(\''+trId+'\')"></i></td>' +'</tr>'; $("#skutable").find("tbody").append(html); @@ -617,7 +633,7 @@ //初始化属性下拉选 function initAttrSeclect(seler, def) { - $.AjaxProxy().invoke(basePath + "/admin/shopProductAttribute/showSonAttribute?attrCode=service", + $.AjaxProxy().invoke(basePath + "/admin/shopProductAttribute/showSonAttribute?attrCode=productColumn", function (loj) { $(seler).createSelectTree( loj.attr("result").rows, @@ -708,61 +724,68 @@ if (i != 0) { var tds = $(this).find("td"); var length = tds.length - 1; - var id = tds.eq(length - 8).find("input").val(); + var id = tds.eq(length - 10).find("input").val(); if(id == null){ id =""; } sku.id = id; //规格名称 - var name = tds.eq(length - 7).find("input").val(); + var name = tds.eq(length - 9).find("input").val(); if(name == null){ name = ""; } sku.name = name; //图片地址 - var path = tds.eq(length - 6).find("img").attr("src"); + var path = tds.eq(length - 8).find("img").attr("src"); if(path == null){ path = ""; } sku.imgPath = path; //库存 - var stock = tds.eq(length - 5).find("input").val(); + var stock = tds.eq(length - 7).find("input").val(); if(stock == ""){ stock = 0; } sku.stock = stock; //价格 - var price = tds.eq(length - 4).find("input").val(); + var price = tds.eq(length -6).find("input").val(); if(price == ""){ price =0; } sku.price = price; //积分 - var score = tds.eq(length - 3).find("input").val(); + var score = tds.eq(length - 5).find("input").val(); if(score == ""){ score = 0; } sku.score = score; //品种编码 - var stockCode = tds.eq(length - 2).find("input").val(); + var stockCode = tds.eq(length - 4).find("input").val(); if(stockCode == null || typeof stockCode == 'undefined'){ stockCode = ''; } sku.stockCode = stockCode; //排序 - var sort = tds.eq(length - 1).find("input").val(); + var sort = tds.eq(length - 3).find("input").val(); if(sort == ""){ sort = 0; } sku.sort = sort; + //推广提成 + var sealesPrice = tds.eq(length - 2).find("input").val(); + sku.sealesPrice = sealesPrice; + + //邀请提成 + var invitationPrice = tds.eq(length - 1).find("input").val(); + sku.invitationPrice = invitationPrice; skus.push(sku); } @@ -780,7 +803,7 @@ if (i != 0) { var tds = $(this).find("td"); var length = tds.length - 1; - var name = tds.eq(length - 7).find("input").val(); + var name = tds.eq(length - 9).find("input").val(); if(name == ""){ layer.msg("请填写规格名称",{ icon : 2, @@ -798,7 +821,7 @@ return false; } - var stock = tds.eq(length - 5).find("input").val(); + var stock = tds.eq(length -7).find("input").val(); if(stock == ""){ layer.msg("请填写库存",{ icon : 2, @@ -807,7 +830,7 @@ flag = true; return false; } - var price = tds.eq(length - 4).find("input").val(); + var price = tds.eq(length - 6).find("input").val(); if(price == ""){ layer.msg("请填写价格",{ icon : 2, -- Gitblit v1.9.1