|  |  |  | 
|---|
|  |  |  | import cn.hutool.core.util.ObjectUtil; | 
|---|
|  |  |  | import cn.hutool.core.util.StrUtil; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
|---|
|  |  |  | 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.bean.BusParameterSettings; | 
|---|
|  |  |  | import com.matrix.system.common.dao.BusParameterSettingsDao; | 
|---|
|  |  |  | import com.matrix.system.fenxiao.constant.FenxiaoSettingConstant; | 
|---|
|  |  |  | 
|---|
|  |  |  | 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.SysVipInfo; | 
|---|
|  |  |  | import com.matrix.system.hive.dao.SysOrderDao; | 
|---|
|  |  |  | import com.matrix.system.hive.dao.SysOrderItemDao; | 
|---|
|  |  |  | import com.matrix.system.hive.dao.SysVipInfoDao; | 
|---|
|  |  |  | import com.matrix.system.hive.service.CodeService; | 
|---|
|  |  |  | import com.matrix.system.hive.service.ShoppingGoodsService; | 
|---|
|  |  |  | import com.matrix.system.hive.service.SysOrderService; | 
|---|
|  |  |  | import com.matrix.system.hive.service.SysVipInfoService; | 
|---|
|  |  |  | import com.matrix.system.shopXcx.bean.ShopOrder; | 
|---|
|  |  |  | import com.matrix.system.shopXcx.bean.ShopOrderDetails; | 
|---|
|  |  |  | import com.matrix.system.shopXcx.bean.ShopProduct; | 
|---|
|  |  |  | 
|---|
|  |  |  | ShopOrderDetailsDao shopOrderDetailsDao; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | BizUserService bizUserService; | 
|---|
|  |  |  | SysVipInfoService sysVipInfoService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | void handleExtensionOrder(ShopOrder order) { | 
|---|
|  |  |  | //判读客户是否存在上级,存在则产生上级的收益 | 
|---|
|  |  |  | BizUser bizUser = bizUserService.findByOpenId(order.getUserId()); | 
|---|
|  |  |  | LogUtil.debug("处理分销订单userOpid={}",bizUser.getOpenId()); | 
|---|
|  |  |  | SysVipInfo sysVipInfo = sysVipInfoService.findById(order.getUserId()); | 
|---|
|  |  |  | LogUtil.debug("处理分销订单userOpid={}",sysVipInfo.getOpenId()); | 
|---|
|  |  |  | //判断是否重复生成 | 
|---|
|  |  |  | QueryWrapper queryWrapper=new QueryWrapper(); | 
|---|
|  |  |  | queryWrapper.eq("order_id",order.getId()); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //自购返佣 | 
|---|
|  |  |  | Integer isSales = bizUser.getIsSales(); | 
|---|
|  |  |  | if(BizUser.IS_SALES == isSales){ | 
|---|
|  |  |  | Integer isSales = sysVipInfo.getIsSales(); | 
|---|
|  |  |  | if(SysVipInfo.IS_SALES == isSales){ | 
|---|
|  |  |  | for (ShopOrderDetails item:order.getDetails() ){ | 
|---|
|  |  |  | if(item.getShopProduct().getAbleSales()==ShopProduct.ABLE_SALES){ | 
|---|
|  |  |  | //分销规则是否开启自购返佣 | 
|---|
|  |  |  | BusParameterSettings zgfy = parameterSettingsDao.selectCompanyParamByCode(FenxiaoSettingConstant.FX_ZGFY, bizUser.getCompanyId()); | 
|---|
|  |  |  | BusParameterSettings zgfy = parameterSettingsDao.selectCompanyParamByCode(FenxiaoSettingConstant.FX_ZGFY, sysVipInfo.getCompanyId()); | 
|---|
|  |  |  | //按分销等级计算 | 
|---|
|  |  |  | ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectById(bizUser.getSalesmanGrade()); | 
|---|
|  |  |  | ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectById(sysVipInfo.getSalesmanGrade()); | 
|---|
|  |  |  | if(ObjectUtil.isNotEmpty(zgfy)) { | 
|---|
|  |  |  | //获取商品的自购返佣价格,如果没有设置,在去获取当前推广人的等级的自购返佣比例 | 
|---|
|  |  |  | if(StrUtil.isNotEmpty(zgfy.getParamValue()) && | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //存在上级 | 
|---|
|  |  |  | if(StringUtils.isNotBlank(bizUser.getParentOpenId())) { | 
|---|
|  |  |  | BizUser salesMan=bizUserService.findByOpenId(bizUser.getParentOpenId()); | 
|---|
|  |  |  | if(sysVipInfo.getRecommendId()!=null) { | 
|---|
|  |  |  | SysVipInfo salesMan=sysVipInfoService.findById(sysVipInfo.getRecommendId()); | 
|---|
|  |  |  | Double salesAmount=0D; | 
|---|
|  |  |  | Double invitationAmount=0D; | 
|---|
|  |  |  | BizUser invitationMan=null; | 
|---|
|  |  |  | SysVipInfo invitationMan=null; | 
|---|
|  |  |  | ShopSalesmanOrder invitationOrder=null; | 
|---|
|  |  |  | boolean hasInvitationMan=StringUtils.isNotBlank(salesMan.getParentOpenId()); | 
|---|
|  |  |  | boolean hasInvitationMan=salesMan.getRecommendId()!=null; | 
|---|
|  |  |  | //判断推广员是否还存在上级,存在则计算邀请收益 | 
|---|
|  |  |  | if(hasInvitationMan){ | 
|---|
|  |  |  | invitationMan=bizUserService.findByOpenId(salesMan.getParentOpenId()); | 
|---|
|  |  |  | invitationMan=sysVipInfoService.findById(salesMan.getRecommendId()); | 
|---|
|  |  |  | invitationOrder=new ShopSalesmanOrder(); | 
|---|
|  |  |  | BeanUtils.copyProperties(salesmanOrder,invitationOrder); | 
|---|
|  |  |  | invitationOrder.setSalesUserId(invitationMan.getOpenId()); | 
|---|
|  |  |  | invitationOrder.setSalesUserId(invitationMan.getId()); | 
|---|
|  |  |  | invitationOrder.setRevenueType(ShopSalesmanOrder.REVENUE_TYPE_INVITATION); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //收益计算 | 
|---|
|  |  |  | 
|---|
|  |  |  | zk=order.getOrderMoney().doubleValue()/orderTotal; | 
|---|
|  |  |  | salesAmount=salesAmount*zk; | 
|---|
|  |  |  | salesmanOrder.setAmount(salesAmount); | 
|---|
|  |  |  | salesmanOrder.setSalesUserId(bizUser.getParentOpenId()); | 
|---|
|  |  |  | salesmanOrder.setSalesUserId(sysVipInfo.getRecommendId()); | 
|---|
|  |  |  | shopSalesmanOrderDao.insert(salesmanOrder); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //邀请提成记录 | 
|---|
|  |  |  | 
|---|
|  |  |  | shopSalesmanOrderDao.insert(invitationOrder); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | LogUtil.debug("不存在父级userOpid={}",bizUser.getOpenId()); | 
|---|
|  |  |  | LogUtil.debug("不存在父级userOpid={}",sysVipInfo.getOpenId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | LogUtil.debug("重复订单id={}",order.getId()); | 
|---|