From 5857fd14f4608ace25724ba6386d72d210e20870 Mon Sep 17 00:00:00 2001 From: jyy <935090232@qq.com> Date: Thu, 25 Mar 2021 10:27:47 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/score_shop' into score_shop --- zq-erp/src/main/java/com/matrix/system/fenxiao/service/ShopSalesmanApplyService.java | 8 + zq-erp/src/main/java/com/matrix/biz/service/impl/BizUserServiceImpl.java | 4 zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/SalesOrderTask.java | 200 ++++++++++++++++++++++++++----------------------- zq-erp/src/main/java/com/matrix/biz/service/BizUserService.java | 2 zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanApplyDao.xml | 4 5 files changed, 118 insertions(+), 100 deletions(-) diff --git a/zq-erp/src/main/java/com/matrix/biz/service/BizUserService.java b/zq-erp/src/main/java/com/matrix/biz/service/BizUserService.java index 7aa2b0f..be36239 100644 --- a/zq-erp/src/main/java/com/matrix/biz/service/BizUserService.java +++ b/zq-erp/src/main/java/com/matrix/biz/service/BizUserService.java @@ -78,5 +78,5 @@ * 设置为推广员 * @param invitationId */ - public int setToBeAnSalesman(String openId,String invitationId); + public int setToBeAnSalesman(String openId,String invitationId,long gradeId); } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/biz/service/impl/BizUserServiceImpl.java b/zq-erp/src/main/java/com/matrix/biz/service/impl/BizUserServiceImpl.java index f2d62d6..7e24950 100644 --- a/zq-erp/src/main/java/com/matrix/biz/service/impl/BizUserServiceImpl.java +++ b/zq-erp/src/main/java/com/matrix/biz/service/impl/BizUserServiceImpl.java @@ -8,7 +8,6 @@ import com.matrix.core.exception.GlobleException; import com.matrix.core.pojo.PaginationVO; import com.matrix.core.tools.ModelUtils; -import com.matrix.core.tools.UUIDUtil; import com.matrix.system.common.constance.AppConstance; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -158,11 +157,12 @@ * @param invitationId */ @Override - public int setToBeAnSalesman(String openId,String invitationId) { + public int setToBeAnSalesman(String openId,String invitationId,long gradeId) { BizUser bizUser=bizUserDao.findByOpenId(openId); bizUser.setIsSales(BizUser.IS_SALES); bizUser.setParentOpenId(invitationId); bizUser.setBindingParentTime(new Date()); + bizUser.setSalesmanGrade(gradeId); return bizUserDao.updateByModel(bizUser); } } \ 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 df2e1dc..cd840dc 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 @@ -116,8 +116,13 @@ if(busParameterSettings!=null &&busParameterSettings.getParamValue().equals("1")){ //自动审核 + //初始等级ID(公司id,是否为初始等级) + QueryWrapper<ShopSalesmanGrade> queryWrapperOrepool = new QueryWrapper<>(); + queryWrapperOrepool.eq("company_id", loginUser.getCompanyId()); + queryWrapperOrepool.eq("is_default", 1); + ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectOne(queryWrapperOrepool); shopSalesmanApply.setApplyStatus(ShopSalesmanApply.APPLY_STATUS_TG); - bizUserService.setToBeAnSalesman(loginUser.getOpenId(),invitationId); + bizUserService.setToBeAnSalesman(loginUser.getOpenId(),invitationId,shopSalesmanGrade.getId()); }else{ shopSalesmanApply.setApplyStatus(ShopSalesmanApply.APPLY_STATUS_DSH); @@ -225,6 +230,7 @@ //修改USER的状态 bizUser.setParentOpenId(parentUserId); bizUser.setBindingParentTime(new Date()); + bizUser.setSalesmanGrade(shopSalesmanApply.getGradeId()); bizUserDao.updateByModel(bizUser); } diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/SalesOrderTask.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/SalesOrderTask.java index c1fccd0..1e029f8 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/SalesOrderTask.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/SalesOrderTask.java @@ -114,114 +114,126 @@ void handleExtensionOrder(ShopOrder order) { //判读客户是否存在上级,存在则产生上级的收益 BizUser bizUser = bizUserService.findByOpenId(order.getUserId()); - if(StringUtils.isNotBlank(bizUser.getParentOpenId())){//存在上级 - - LogUtil.debug("处理分销订单userOpid={}",bizUser.getOpenId()); - //判断是否重复生成 - QueryWrapper queryWrapper=new QueryWrapper(); - queryWrapper.eq("order_id",order.getId()); - Integer orderCount = shopSalesmanOrderDao.selectCount(queryWrapper); - if(orderCount==0){ - 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 selfAmount=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); + LogUtil.debug("处理分销订单userOpid={}",bizUser.getOpenId()); + //判断是否重复生成 + QueryWrapper queryWrapper=new QueryWrapper(); + queryWrapper.eq("order_id",order.getId()); + Integer orderCount = shopSalesmanOrderDao.selectCount(queryWrapper); + if(orderCount==0){ + 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.setRevenueType(ShopSalesmanOrder.REVENUE_TYPE_SALES); + salesmanOrder.setOrderStatus(ShopSalesmanOrder.STATUS_DJS); + Double selfAmount=0D; + Double zk=1D; + //分销订单总额 + Double orderTotal=0D; + for (ShopOrderDetails item:order.getDetails() ){ + if(StringUtils.isNotBlank(item.getShopProduct().getAttrValues()) + && item.getShopProduct().getAbleSales()==ShopProduct.ABLE_SALES){ + orderTotal+=item.getTotalPrice().doubleValue(); } - - //收益计算 - for (ShopOrderDetails item:order.getDetails() ){ - if(StringUtils.isNotBlank(item.getShopProduct().getAttrValues()) - && item.getShopProduct().getAbleSales()==ShopProduct.ABLE_SALES){ - 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.getInvitationCommission()/100); - } - - }else{ - //按产品设置的推广金额计算 - salesAmount+=item.getShopSku().getSealesPrice().doubleValue()*item.getCount(); - if(hasInvitationMan){ - invitationAmount+=item.getShopSku().getInvitationPrice().doubleValue()*item.getCount(); - } - } - //分销规则是否开启自购返佣 - BusParameterSettings zgfy = parameterSettingsDao.selectCompanyParamByCode(FenxiaoSettingConstant.FX_ZGFY, bizUser.getCompanyId()); - if(ObjectUtil.isNotEmpty(zgfy)) { - //获取商品的自购返佣价格,如果没有设置,在去获取当前推广人的等级的自购返佣比例 - if(StrUtil.isNotEmpty(zgfy.getParamValue()) && - FenxiaoSettingConstant.FX_ZGFY_YES.equals(zgfy.getParamValue())) { - if(item.getShopSku().getSelfPrice() == null - ||item.getShopSku().getSealesPrice().doubleValue() == 0){ - //按分销等级计算 - ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectById(salesMan.getSalesmanGrade()); - selfAmount+=item.getTotalPrice().doubleValue()*(shopSalesmanGrade.getSelfCommission()/100); - }else { - //按产品设置的自购返佣金额计算 - selfAmount+=item.getShopSku().getSelfPrice().doubleValue()*item.getCount(); - } - } - } - orderTotal+=item.getTotalPrice().doubleValue(); + } + //自购返佣 + for (ShopOrderDetails item:order.getDetails() ){ + if(item.getShopProduct().getAbleSales()==ShopProduct.ABLE_SALES){ + //分销规则是否开启自购返佣 + BusParameterSettings zgfy = parameterSettingsDao.selectCompanyParamByCode(FenxiaoSettingConstant.FX_ZGFY, bizUser.getCompanyId()); + //按分销等级计算 + ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectById(bizUser.getSalesmanGrade()); + if(ObjectUtil.isNotEmpty(zgfy)) { + //获取商品的自购返佣价格,如果没有设置,在去获取当前推广人的等级的自购返佣比例 + if(StrUtil.isNotEmpty(zgfy.getParamValue()) && + FenxiaoSettingConstant.FX_ZGFY_YES.equals(zgfy.getParamValue())) { + if(item.getShopSku().getSelfPrice() == null + ||item.getShopSku().getSealesPrice().doubleValue() == 0){ + selfAmount+=item.getTotalPrice().doubleValue()*(shopSalesmanGrade.getSelfCommission()/100); + }else { + //按产品设置的自购返佣金额计算 + selfAmount+=item.getShopSku().getSelfPrice().doubleValue()*item.getCount(); + } + } } } - //自购返佣记录生成 - if(selfAmount > 0) { - //整体的优惠金额折算成折扣,* 佣金 - zk=order.getOrderMoney().doubleValue()/orderTotal; - selfAmount=selfAmount*zk; - salesmanOrder.setAmount(selfAmount); - shopSalesmanOrderDao.insert(salesmanOrder); + } + //自购返佣记录 + if(selfAmount > 0) { + //整体的优惠金额折算成折扣,* 佣金 + zk=order.getOrderMoney().doubleValue()/orderTotal; + selfAmount=selfAmount*zk; + salesmanOrder.setAmount(selfAmount); + salesmanOrder.setSalesUserId(order.getUserId()); + shopSalesmanOrderDao.insert(salesmanOrder); + } + //存在上级 + if(StringUtils.isNotBlank(bizUser.getParentOpenId())) { + BizUser salesMan=bizUserService.findByOpenId(bizUser.getParentOpenId()); + Double salesAmount=0D; + Double invitationAmount=0D; + 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(item.getShopProduct().getAbleSales()==ShopProduct.ABLE_SALES){ + //按分销等级计算 + ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectById(salesMan.getSalesmanGrade()); + //推广提成,按分销等级计算或者按产品设置的推广金额计算 + if(item.getShopSku().getSealesPrice()==null + ||item.getShopSku().getSealesPrice().doubleValue()==0){ + salesAmount+=item.getTotalPrice().doubleValue()*(shopSalesmanGrade.getSealesCommission()/100); + }else{ + salesAmount+=item.getShopSku().getSealesPrice().doubleValue()*item.getCount(); + } + //邀请提成,获取商品的邀请提成价格和是否有上级推广人,如果没有设置,在去获取当前推广人的等级的自购返佣比例 + if(hasInvitationMan) { + if(item.getShopSku().getInvitationPrice() == null + ||item.getShopSku().getInvitationPrice().doubleValue() == 0){ + //获取上级的推广等级设置 + ShopSalesmanGrade invitationManGrade = shopSalesmanGradeDao.selectById(invitationMan.getSalesmanGrade()); + invitationAmount+=item.getTotalPrice().doubleValue()*(invitationManGrade.getInvitationCommission()/100); + }else { + //按产品设置的邀请提成价格计算 + invitationAmount+=item.getShopSku().getInvitationPrice().doubleValue()*item.getCount(); + } + } + } } + //推广提成记录 if(salesAmount>0){ //整体的优惠金额折算成折扣,* 佣金 zk=order.getOrderMoney().doubleValue()/orderTotal; salesAmount=salesAmount*zk; salesmanOrder.setAmount(salesAmount); + salesmanOrder.setSalesUserId(bizUser.getParentOpenId()); shopSalesmanOrderDao.insert(salesmanOrder); - if(hasInvitationMan){ - invitationAmount=invitationAmount*zk; - invitationOrder.setAmount(invitationAmount); - shopSalesmanOrderDao.insert(invitationOrder); - } } + //邀请提成记录 + if(invitationAmount > 0) { + //整体的优惠金额折算成折扣,* 佣金 + invitationAmount=invitationAmount*zk; + invitationOrder.setAmount(invitationAmount); + shopSalesmanOrderDao.insert(invitationOrder); + } }else{ - LogUtil.debug("重复订单id={}",order.getId()); + LogUtil.debug("不存在父级userOpid={}",bizUser.getOpenId()); } }else{ - LogUtil.debug("不存在父级userOpid={}",bizUser.getOpenId()); + LogUtil.debug("重复订单id={}",order.getId()); } - - } } 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 9e7fba3..a4123a9 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanApplyDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanApplyDao.xml @@ -72,9 +72,9 @@ ( SELECT COUNT(*) FROM biz_user WHERE parent_open_id = a.user_id AND is_sales = 1 ) invitedNum, ( SELECT IFNULL(sum(IFNULL(amount, 0)), 0) FROM shop_salesman_order - WHERE user_id = a.user_id AND order_status = 2 AND sales_user_id = a.user_id ) totalRevenue, + WHERE 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, + WHERE order_status = 1 AND sales_user_id = a.user_id ) balance, g.NAME grade, a.create_time createTime, a.apply_status applyStatus, -- Gitblit v1.9.1