|  |  |  | 
|---|
|  |  |  | order.setDetails(orderDetails); | 
|---|
|  |  |  | //同步订单到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.getInvitationCommission()/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()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|