|
@@ -12,6 +12,8 @@ import cn.newfeifan.mall.module.distri.dal.dataobject.ptprofit.PtProfitDO;
|
|
import cn.newfeifan.mall.module.distri.dal.dataobject.sharepath.SharePathDO;
|
|
import cn.newfeifan.mall.module.distri.dal.dataobject.sharepath.SharePathDO;
|
|
import cn.newfeifan.mall.module.distri.enums.CaclEnum;
|
|
import cn.newfeifan.mall.module.distri.enums.CaclEnum;
|
|
import cn.newfeifan.mall.module.distri.mq.message.order.DistriOrderMessage;
|
|
import cn.newfeifan.mall.module.distri.mq.message.order.DistriOrderMessage;
|
|
|
|
+import cn.newfeifan.mall.module.distri.mq.message.order.OrderCalcMessage;
|
|
|
|
+import cn.newfeifan.mall.module.distri.mq.message.order.OrderItemMessage;
|
|
import cn.newfeifan.mall.module.distri.service.duser.DuserService;
|
|
import cn.newfeifan.mall.module.distri.service.duser.DuserService;
|
|
import cn.newfeifan.mall.module.distri.service.integral.IntegralService;
|
|
import cn.newfeifan.mall.module.distri.service.integral.IntegralService;
|
|
import cn.newfeifan.mall.module.distri.service.orderpercentage.OrderPercentageService;
|
|
import cn.newfeifan.mall.module.distri.service.orderpercentage.OrderPercentageService;
|
|
@@ -34,6 +36,8 @@ import java.math.RoundingMode;
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
+import java.util.stream.IntStream;
|
|
|
|
+import java.util.stream.LongStream;
|
|
|
|
|
|
import cn.newfeifan.mall.module.distri.controller.admin.ordercalc.vo.*;
|
|
import cn.newfeifan.mall.module.distri.controller.admin.ordercalc.vo.*;
|
|
import cn.newfeifan.mall.module.distri.dal.dataobject.ordercalc.OrderCalcDO;
|
|
import cn.newfeifan.mall.module.distri.dal.dataobject.ordercalc.OrderCalcDO;
|
|
@@ -129,10 +133,10 @@ public class OrderCalcServiceImpl implements OrderCalcService {
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
- public void calc(List<DistriOrderMessage> tradeOrderDO) {
|
|
|
|
|
|
+ public void calc(List<OrderCalcMessage> tradeOrderDO) {
|
|
|
|
|
|
// 获取到当前订单的所有人
|
|
// 获取到当前订单的所有人
|
|
- List<Long> userId = tradeOrderDO.stream().map(DistriOrderMessage::getUserId).collect(Collectors.toList());
|
|
|
|
|
|
+ List<Long> userId = tradeOrderDO.stream().map(OrderCalcMessage::getUserId).collect(Collectors.toList());
|
|
// 判断当前下单的人员是否有进入营销模块用户表, 如果没有的话, 需要初始化
|
|
// 判断当前下单的人员是否有进入营销模块用户表, 如果没有的话, 需要初始化
|
|
duserService.hasUserAndCreat(userId);
|
|
duserService.hasUserAndCreat(userId);
|
|
// 判断当前下单人是否有有上级, 如果没有, 创建直推人关系
|
|
// 判断当前下单人是否有有上级, 如果没有, 创建直推人关系
|
|
@@ -159,7 +163,7 @@ public class OrderCalcServiceImpl implements OrderCalcService {
|
|
.in(OrderCalcDO::getUserId, userList));
|
|
.in(OrderCalcDO::getUserId, userList));
|
|
}
|
|
}
|
|
|
|
|
|
- private void calc(List<DistriOrderMessage> tradeOrderDO, OrderPercentageDO orderPercentageDO, String percentTemplate) {
|
|
|
|
|
|
+ private void calc(List<OrderCalcMessage> tradeOrderDO, OrderPercentageDO orderPercentageDO, String percentTemplate) {
|
|
|
|
|
|
List<PtProfitSaveReqVO> savePFitMap = new ArrayList<>();
|
|
List<PtProfitSaveReqVO> savePFitMap = new ArrayList<>();
|
|
// 每个订单收益
|
|
// 每个订单收益
|
|
@@ -186,9 +190,16 @@ public class OrderCalcServiceImpl implements OrderCalcService {
|
|
PtProfitDO finalPtProfitDO = ptProfitDO;
|
|
PtProfitDO finalPtProfitDO = ptProfitDO;
|
|
tradeOrderDO.forEach(k -> {
|
|
tradeOrderDO.forEach(k -> {
|
|
|
|
|
|
- BigDecimal price = new BigDecimal(String.valueOf(k.getPrice()));
|
|
|
|
- BigDecimal costPrice = new BigDecimal(String.valueOf(k.getCostPrice()));
|
|
|
|
- BigDecimal productCount = new BigDecimal(String.valueOf(k.getProductCount()));
|
|
|
|
|
|
+ // 计算单个订单的总单价
|
|
|
|
+ LongStream priceStream = k.getOrderItemMessages().stream().mapToLong(OrderItemMessage::getPrice);
|
|
|
|
+ // 计算单个订单的总成本
|
|
|
|
+ LongStream longStream = k.getOrderItemMessages().stream().mapToLong(OrderItemMessage::getCostPrice);
|
|
|
|
+ // 计算当个订单的总数量
|
|
|
|
+ IntStream intStream = k.getOrderItemMessages().stream().mapToInt(OrderItemMessage::getProductCount);
|
|
|
|
+
|
|
|
|
+ BigDecimal price = new BigDecimal(String.valueOf(priceStream));
|
|
|
|
+ BigDecimal costPrice = new BigDecimal(String.valueOf(longStream));
|
|
|
|
+ BigDecimal productCount = new BigDecimal(String.valueOf(intStream));
|
|
|
|
|
|
// 计算
|
|
// 计算
|
|
// 计算利润: (价格 - 成本价格) * 产品数量
|
|
// 计算利润: (价格 - 成本价格) * 产品数量
|
|
@@ -242,9 +253,9 @@ public class OrderCalcServiceImpl implements OrderCalcService {
|
|
.userId(k.getUserId())
|
|
.userId(k.getUserId())
|
|
.orderNo(k.getNo())
|
|
.orderNo(k.getNo())
|
|
.orderId(k.getOrderId())
|
|
.orderId(k.getOrderId())
|
|
- .cost(k.getCostPrice())
|
|
|
|
- .price(k.getPrice())
|
|
|
|
- .productCount(k.getProductCount())
|
|
|
|
|
|
+ .cost(costPrice.longValue())
|
|
|
|
+ .price(price.longValue())
|
|
|
|
+ .productCount(productCount.intValue())
|
|
.nickName(k.getNickName())
|
|
.nickName(k.getNickName())
|
|
.name(k.getName())
|
|
.name(k.getName())
|
|
.grossProfit(grossProfitInt)
|
|
.grossProfit(grossProfitInt)
|
|
@@ -252,7 +263,8 @@ public class OrderCalcServiceImpl implements OrderCalcService {
|
|
.grossProfitAncestorQuota(ancestorQuotaInt)
|
|
.grossProfitAncestorQuota(ancestorQuotaInt)
|
|
.grossProfitPlatformQuota(platformQuotaInt)
|
|
.grossProfitPlatformQuota(platformQuotaInt)
|
|
.percentTemplate(percentTemplate).build();
|
|
.percentTemplate(percentTemplate).build();
|
|
- saveList.add(orderCalcSaveReqVO); // ========== 修改用户钱包 =================
|
|
|
|
|
|
+ saveList.add(orderCalcSaveReqVO);
|
|
|
|
+ // ========== 修改用户钱包 =================
|
|
changeUserWallet(integralSaveReqVOS, integralDO, integralDOAncestor, ptIntegral, ancestorQuotaInt, descendantQuotaInt, highQuotaInt, grossProfitAfterBonusInt, platformQuotaInt);
|
|
changeUserWallet(integralSaveReqVOS, integralDO, integralDOAncestor, ptIntegral, ancestorQuotaInt, descendantQuotaInt, highQuotaInt, grossProfitAfterBonusInt, platformQuotaInt);
|
|
// ========== 修改平台信息 =================
|
|
// ========== 修改平台信息 =================
|
|
// 每个订单计算的过程
|
|
// 每个订单计算的过程
|