|  |  |  | 
|---|
|  |  |  | import com.ruoyi.order.service.OrderService; | 
|---|
|  |  |  | import com.ruoyi.other.api.domain.Shop; | 
|---|
|  |  |  | import com.ruoyi.other.api.feignClient.ShopClient; | 
|---|
|  |  |  | import model.Order; | 
|---|
|  |  |  | import model.OrderGood; | 
|---|
|  |  |  | import com.ruoyi.order.model.Order; | 
|---|
|  |  |  | import com.ruoyi.order.model.OrderGood; | 
|---|
|  |  |  | import org.springframework.data.redis.core.RedisTemplate; | 
|---|
|  |  |  | import org.springframework.stereotype.Service; | 
|---|
|  |  |  | import org.springframework.transaction.annotation.Transactional; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import javax.annotation.Resource; | 
|---|
|  |  |  | import java.math.BigDecimal; | 
|---|
|  |  |  | 
|---|
|  |  |  | import java.time.ZoneId; | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  | import java.util.Map; | 
|---|
|  |  |  | import java.util.Set; | 
|---|
|  |  |  | import java.util.stream.Collectors; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Service | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public void calculationCommission(List<Long> orderIds) { | 
|---|
|  |  |  | @Transactional(rollbackFor = Exception.class) | 
|---|
|  |  |  | public void calculationCommission(Set<String> orderIds) { | 
|---|
|  |  |  | List<OrderGood> orderGoods = orderGoodService.list(new LambdaQueryWrapper<OrderGood>() | 
|---|
|  |  |  | .in(OrderGood::getOrderId, orderIds)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | if (order.getIsCommission() == 1) { | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | order.setIsCommission(1); | 
|---|
|  |  |  | orderService.updateById(order); | 
|---|
|  |  |  | R<Shop> r = shopClient.getShopById(order.getShopId()); | 
|---|
|  |  |  | if (!R.isSuccess(r)) { | 
|---|
|  |  |  | throw new RuntimeException("获取门店信息失败"); | 
|---|
|  |  |  | 
|---|
|  |  |  | throw new RuntimeException("获取用户信息失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Long inviteUserId = appUser.getInviteUserId(); | 
|---|
|  |  |  | // 直推上级用户 | 
|---|
|  |  |  | AppUser inviteUser = appUserClient.getAppUserById(inviteUserId); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 获取直帮上级用户 | 
|---|
|  |  |  | R<AppUser> superiorLeaderR = appUserClient.getSuperiorLeader(appUserId); | 
|---|
|  |  |  | if (!R.isSuccess(superiorLeaderR)) { | 
|---|
|  |  |  | throw new RuntimeException("获取直帮上级信息失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | AppUser superiorLeader = superiorLeaderR.getData(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | for (OrderGood og : v) {// 累计分销金额 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 上级分销金额 | 
|---|
|  |  |  | if (inviteUser != null){ | 
|---|
|  |  |  | // 直推上级分佣金额 | 
|---|
|  |  |  | String superiorType = og.getSuperiorType(); | 
|---|
|  |  |  | if (superiorType.contains("1") && inviteUser != null){ | 
|---|
|  |  |  | // 分佣金额 | 
|---|
|  |  |  | BigDecimal superiorSubcommission = og.getSuperiorSubcommission(); | 
|---|
|  |  |  | BigDecimal totalDistributionAmount = inviteUser.getTotalDistributionAmount(); | 
|---|
|  |  |  | totalDistributionAmount = totalDistributionAmount.add(superiorSubcommission); | 
|---|
|  |  |  | // | 
|---|
|  |  |  | Integer superiorType = og.getSuperiorType(); | 
|---|
|  |  |  | inviteUser.setTotalDistributionAmount(totalDistributionAmount); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 分佣积分 | 
|---|
|  |  |  | Integer sharePoint = inviteUser.getSharePoint(); | 
|---|
|  |  |  | if (superiorType == 1) { | 
|---|
|  |  |  | Integer superiorRebatePoints = og.getSuperiorRebatePoints(); | 
|---|
|  |  |  | sharePoint = sharePoint + superiorRebatePoints; | 
|---|
|  |  |  | inviteUser.setSharePoint(sharePoint); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | appUserClient.editAppUserById(inviteUser); | 
|---|
|  |  |  | }else | 
|---|
|  |  |  | // 直帮上级分佣金额 | 
|---|
|  |  |  | if (superiorType.contains("2") && superiorLeader != null){ | 
|---|
|  |  |  | // 分佣金额 | 
|---|
|  |  |  | BigDecimal superiorSubcommission = og.getSuperiorSubcommission(); | 
|---|
|  |  |  | BigDecimal totalDistributionAmount = superiorLeader.getTotalDistributionAmount(); | 
|---|
|  |  |  | totalDistributionAmount = totalDistributionAmount.add(superiorSubcommission); | 
|---|
|  |  |  | superiorLeader.setTotalDistributionAmount(totalDistributionAmount); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 分佣积分 | 
|---|
|  |  |  | Integer sharePoint = superiorLeader.getSharePoint(); | 
|---|
|  |  |  | Integer superiorRebatePoints = og.getSuperiorRebatePoints(); | 
|---|
|  |  |  | sharePoint = sharePoint + superiorRebatePoints; | 
|---|
|  |  |  | } else if (superiorType == 2) { | 
|---|
|  |  |  | superiorLeader.setSharePoint(sharePoint); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | appUserClient.editAppUserById(superiorLeader); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | inviteUser.setTotalDistributionAmount(totalDistributionAmount); | 
|---|
|  |  |  | inviteUser.setSharePoint(sharePoint); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 门店分销金额 | 
|---|
|  |  |  | og.getBoundShopCharges(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|