Преглед изворни кода

修改计算利润的方式

gaohp пре 10 месеци
родитељ
комит
437973997e

+ 4 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/mq/message/order/DistriOrderMessage.java

@@ -16,6 +16,10 @@ public class DistriOrderMessage {
      * 总价
      */
     private Long totalPrice;
+    /**
+     * 单笔订单的购买数量
+     */
+    private Integer count;
 
     /**
      * 单价

+ 6 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/mq/message/order/OrderCalcMessage.java

@@ -16,6 +16,12 @@ public class OrderCalcMessage {
 
     List<OrderItemMessage> orderItemMessages;
 
+
+    /**
+     * 购买数量
+     */
+    private Integer productCount;
+
     /**
      * 用户名称
      */

+ 5 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/mq/message/order/OrderItemMessage.java

@@ -23,6 +23,11 @@ public class OrderItemMessage {
      * 购买数量
      */
     private Integer productCount;
+    /**
+     * 单笔订单的购买数量
+     */
+    private Integer count;
+
     /**
      * 成本价
      */

+ 2 - 1
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/duser/DuserServiceImpl.java

@@ -12,6 +12,7 @@ import cn.newfeifan.mall.module.distri.service.sharepath.SharePathService;
 import cn.newfeifan.mall.module.distri.service.socialstatus.SocialStatusService;
 import cn.newfeifan.mall.module.member.dal.dataobject.user.MemberUserDO;
 import cn.newfeifan.mall.module.member.service.user.MemberUserService;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -228,7 +229,7 @@ public class DuserServiceImpl implements DuserService {
                     .eq(SharePathDO::getAncestor, duserRespVO.getUserId())
             ));
 
-            SharePathDO sharePathDO = sharePathMapper.selectOne(new LambdaQueryWrapperX<SharePathDO>()
+            SharePathDO sharePathDO = sharePathMapper.selectOne(new LambdaQueryWrapper<SharePathDO>()
                     .eq(SharePathDO::getDescendant, duserRespVO.getUserId())
                     .eq(SharePathDO::getDepth, 1)
             );

+ 14 - 9
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/ordercalc/OrderCalcServiceImpl.java

@@ -189,19 +189,24 @@ public class OrderCalcServiceImpl implements OrderCalcService {
         tradeOrderDO.forEach(k -> {
 
             // 计算单个订单的总单价
-            Long priceStream = k.getOrderItemMessages().stream().mapToLong(OrderItemMessage::getPrice).sum();
+            long priceStream = k.getOrderItemMessages().stream().mapToLong(OrderItemMessage::getPrice).sum();
             // 计算单个订单的总成本
-            Long longStream = k.getOrderItemMessages().stream().mapToLong(OrderItemMessage::getCostPrice).sum();
-            // 计算当个订单的总数量
-            Integer intStream = k.getOrderItemMessages().stream().mapToInt(OrderItemMessage::getProductCount).sum();
+            long longStream = k.getOrderItemMessages().stream().mapToLong(OrderItemMessage::getCostPrice).sum();
+            BigDecimal price = new BigDecimal(priceStream);
+            BigDecimal costPrice = new BigDecimal(longStream);
 
-            BigDecimal price = new BigDecimal(String.valueOf(priceStream));
-            BigDecimal costPrice = new BigDecimal(String.valueOf(longStream));
-            BigDecimal productCount = new BigDecimal(String.valueOf(intStream));
 
             // 计算
             // 计算利润: (价格 - 成本价格) * 产品数量
-            BigDecimal profit = price.subtract(costPrice).multiply(productCount);
+            BigDecimal profit = new BigDecimal("0");
+            k.getOrderItemMessages().forEach(j -> {
+                // 计算该订单的利润
+                BigDecimal onePrice = new BigDecimal(j.getPrice());
+                BigDecimal oneCostPrice = new BigDecimal(j.getCostPrice());
+                BigDecimal productCount = new BigDecimal(j.getCount());
+                BigDecimal oneGrossProfit = onePrice.subtract(oneCostPrice).multiply(productCount);
+                profit.add(oneGrossProfit);
+            });
 
 
             // 计算毛利: 利润 * 0.38
@@ -253,7 +258,7 @@ public class OrderCalcServiceImpl implements OrderCalcService {
                     .orderId(k.getOrderId())
                     .cost(costPrice.longValue())
                     .price(price.longValue())
-                    .productCount(productCount.intValue())
+                    .productCount(k.getProductCount())
                     .nickName(k.getNickName())
                     .name(k.getName())
                     .grossProfit(grossProfitInt)

+ 3 - 1
feifan-module-mall/feifan-module-trade-biz/src/main/resources/mapper/order/BrokerageUserMapper.xml

@@ -14,6 +14,7 @@
         <result column="orderId" property="orderId"/>
         <result column="name" property="name"/>
         <result column="nickName" property="nickName"/>
+        <result column="count" property="count"/>
 
 
     </resultMap>
@@ -30,7 +31,8 @@
                ps.shop_id        as shopId,
                ps.shop_id        as shopId,
                mu.`name`         as name,
-               mu.nickname       as nickname
+               mu.nickname       as nickname,
+               toi.count  as `count`
         from trade_order tor
                  LEFT JOIN member_user mu
                            ON tor.user_id = mu.id