Эх сурвалжийг харах

Merge branch 'dev/2024/0425/update-admin' into 'master'

修改店铺订单显示异常

See merge request zx-mall/mall-backend-admin!8
Yangzw 10 сар өмнө
parent
commit
e28777ce71
13 өөрчлөгдсөн 172 нэмэгдсэн , 40 устгасан
  1. 1 1
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/mq/consumer/order/OrderConsumer.java
  2. 4 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/mq/message/order/CalcMessage.java
  3. 9 7
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/mq/message/order/DistriOrderMessage.java
  4. 52 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/mq/message/order/OrderCalcMessage.java
  5. 36 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/mq/message/order/OrderItemMessage.java
  6. 2 1
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/ordercalc/OrderCalcService.java
  7. 22 10
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/ordercalc/OrderCalcServiceImpl.java
  8. 7 12
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/order/TradeOrderController.java
  9. 1 2
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/mysql/aftersale/AfterSaleMapper.java
  10. 29 1
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/job/order/TradeOrderAutoCalcJob.java
  11. 1 2
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/aftersale/AfterSaleService.java
  12. 2 2
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/aftersale/AfterSaleServiceImpl.java
  13. 6 2
      feifan-module-mall/feifan-module-trade-biz/src/main/resources/mapper/order/BrokerageUserMapper.xml

+ 1 - 1
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/mq/consumer/order/OrderConsumer.java

@@ -24,7 +24,7 @@ public class OrderConsumer {
     public void onMessage(CalcMessage calcMessage) {
         log.info("[onMessage][消息内容({})]", calcMessage);
         // todo 计算数据
-        orderCalcService.calc(calcMessage.getDistriOrderMessages());
+        orderCalcService.calc(calcMessage.getOrderCalcMessages());
 
     }
 

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

@@ -6,10 +6,14 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 
 import java.util.List;
+
 @Data
 @Builder
 @NoArgsConstructor
 @AllArgsConstructor
 public class CalcMessage {
     List<DistriOrderMessage> distriOrderMessages;
+    List<OrderCalcMessage> orderCalcMessages;
+
+
 }

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

@@ -21,29 +21,31 @@ public class DistriOrderMessage {
      * 单价
      */
     private Long price;
-
     /**
      * 购买数量
      */
     private Integer productCount;
-
-    private String name;
-    private String nickName;
-
-
     /**
      * 成本价
      */
     private Long costPrice;
 
+    /**
+     * 用户名称
+     */
+    private String name;
 
+    /**
+     * 用户昵称
+     */
+    private String nickName;
     /**
      * 订单编号
      */
     private String no;
 
     /**
-     * 下单用户
+     * 下单用户Id
      */
     private Long userId;
 

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

@@ -0,0 +1,52 @@
+package cn.newfeifan.mall.module.distri.mq.message.order;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class OrderCalcMessage {
+
+
+    List<OrderItemMessage> orderItemMessages;
+
+    /**
+     * 用户名称
+     */
+    private String name;
+
+    /**
+     * 用户昵称
+     */
+    private String nickName;
+    /**
+     * 订单编号
+     */
+    private String no;
+
+    /**
+     * 下单用户Id
+     */
+    private Long userId;
+
+    /**
+     * 店铺ID
+     */
+    private Long shopId;
+
+    /**
+     * 商户ID
+     */
+    private Long merchantId;
+    /**
+     * 订单ID
+     */
+    private Long orderId;
+
+}

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

@@ -0,0 +1,36 @@
+package cn.newfeifan.mall.module.distri.mq.message.order;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class OrderItemMessage {
+
+    /**
+     * 总价
+     */
+    private Long totalPrice;
+    /**
+     * 单价
+     */
+    private Long price;
+    /**
+     * 购买数量
+     */
+    private Integer productCount;
+    /**
+     * 成本价
+     */
+    private Long costPrice;
+
+    /**
+     * 订单ID
+     */
+    private Long orderId;
+
+}

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

@@ -8,6 +8,7 @@ import cn.newfeifan.mall.module.distri.controller.admin.ordercalc.vo.*;
 import cn.newfeifan.mall.module.distri.dal.dataobject.ordercalc.OrderCalcDO;
 import cn.newfeifan.mall.framework.common.pojo.PageResult;
 import cn.newfeifan.mall.module.distri.mq.message.order.DistriOrderMessage;
+import cn.newfeifan.mall.module.distri.mq.message.order.OrderCalcMessage;
 
 /**
  * 订单产生数据计算 Service 接口
@@ -58,7 +59,7 @@ public interface OrderCalcService {
      * 计算订单信息
      * @param tradeOrderDO
      */
-    void calc(List<DistriOrderMessage> tradeOrderDO);
+    void calc(List<OrderCalcMessage> tradeOrderDO);
 
 
     List<OrderCalcDO> queryTodayCalcByUserIds(LocalDateTime todayStart, LocalDateTime todayEnd,List<Long> userList);

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

@@ -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.enums.CaclEnum;
 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.integral.IntegralService;
 import cn.newfeifan.mall.module.distri.service.orderpercentage.OrderPercentageService;
@@ -34,6 +36,8 @@ import java.math.RoundingMode;
 import java.time.LocalDateTime;
 import java.util.*;
 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.dal.dataobject.ordercalc.OrderCalcDO;
@@ -129,10 +133,10 @@ public class OrderCalcServiceImpl implements OrderCalcService {
 
     @Override
     @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);
         // 判断当前下单人是否有有上级, 如果没有, 创建直推人关系
@@ -159,7 +163,7 @@ public class OrderCalcServiceImpl implements OrderCalcService {
                 .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<>();
         // 每个订单收益
@@ -186,9 +190,16 @@ public class OrderCalcServiceImpl implements OrderCalcService {
         PtProfitDO finalPtProfitDO = ptProfitDO;
         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())
                     .orderNo(k.getNo())
                     .orderId(k.getOrderId())
-                    .cost(k.getCostPrice())
-                    .price(k.getPrice())
-                    .productCount(k.getProductCount())
+                    .cost(costPrice.longValue())
+                    .price(price.longValue())
+                    .productCount(productCount.intValue())
                     .nickName(k.getNickName())
                     .name(k.getName())
                     .grossProfit(grossProfitInt)
@@ -252,7 +263,8 @@ public class OrderCalcServiceImpl implements OrderCalcService {
                     .grossProfitAncestorQuota(ancestorQuotaInt)
                     .grossProfitPlatformQuota(platformQuotaInt)
                     .percentTemplate(percentTemplate).build();
-            saveList.add(orderCalcSaveReqVO);            // ========== 修改用户钱包 =================
+            saveList.add(orderCalcSaveReqVO);
+            // ========== 修改用户钱包 =================
             changeUserWallet(integralSaveReqVOS, integralDO, integralDOAncestor, ptIntegral, ancestorQuotaInt, descendantQuotaInt, highQuotaInt, grossProfitAfterBonusInt, platformQuotaInt);
             // ========== 修改平台信息 =================
             // 每个订单计算的过程

+ 7 - 12
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/order/TradeOrderController.java

@@ -15,7 +15,6 @@ import cn.newfeifan.mall.module.pay.dal.dataobject.app.PayAppDO;
 import cn.newfeifan.mall.module.pay.dal.dataobject.order.PayOrderDO;
 import cn.newfeifan.mall.module.pay.service.app.PayAppService;
 import cn.newfeifan.mall.module.pay.service.order.PayOrderService;
-import cn.newfeifan.mall.module.trade.controller.admin.delivery.vo.expresstemplate.ShopBO;
 import cn.newfeifan.mall.module.trade.controller.admin.order.vo.*;
 import cn.newfeifan.mall.module.trade.convert.order.TradeOrderConvert;
 import cn.newfeifan.mall.module.trade.dal.dataobject.order.TradeOrderDO;
@@ -200,18 +199,14 @@ public class TradeOrderController {
     @Operation(summary = "获得交易订单数量")
     public CommonResult<Map<Integer, Long>> getOrderCount(@RequestParam(value = "merId", required = false) Long merId) {
         Map<Integer, Long> orderCount = Maps.newLinkedHashMapWithExpectedSize(6);
-        ShopBO shop = new ShopBO();
-        if (merId != null) {
-            shop = tradeOrderQueryService.getShop();
-        }
 
-        orderCount.put(-1, tradeOrderQueryService.getOrderCount(null, shop.getShopId(), shop.getMerId()));
-        orderCount.put(TradeOrderStatusEnum.AFTER_SALE.getStatus(), afterSaleService.getApplyingAfterSaleCount(null, shop.getShopId(), shop.getMerId()));
-        orderCount.put(TradeOrderStatusEnum.UNPAID.getStatus(), tradeOrderQueryService.getOrderCount(TradeOrderStatusEnum.UNPAID.getStatus(), shop.getShopId(), shop.getMerId()));
-        orderCount.put(TradeOrderStatusEnum.UNDELIVERED.getStatus(), tradeOrderQueryService.getOrderCount(TradeOrderStatusEnum.UNDELIVERED.getStatus(), shop.getShopId(), shop.getMerId()));
-        orderCount.put(TradeOrderStatusEnum.DELIVERED.getStatus(), tradeOrderQueryService.getOrderCount(TradeOrderStatusEnum.DELIVERED.getStatus(), shop.getShopId(), shop.getMerId()));
-        orderCount.put(TradeOrderStatusEnum.COMPLETED.getStatus(), tradeOrderQueryService.getOrderCount(TradeOrderStatusEnum.COMPLETED.getStatus(), shop.getShopId(), shop.getMerId()));
-        orderCount.put(TradeOrderStatusEnum.CANCELED.getStatus(), tradeOrderQueryService.getOrderCount(TradeOrderStatusEnum.CANCELED.getStatus(), shop.getShopId(), shop.getMerId()));
+        orderCount.put(-1, tradeOrderQueryService.getOrderCount(null, merId));
+        orderCount.put(TradeOrderStatusEnum.AFTER_SALE.getStatus(), afterSaleService.getApplyingAfterSaleCount(null, merId));
+        orderCount.put(TradeOrderStatusEnum.UNPAID.getStatus(), tradeOrderQueryService.getOrderCount(TradeOrderStatusEnum.UNPAID.getStatus(), merId));
+        orderCount.put(TradeOrderStatusEnum.UNDELIVERED.getStatus(), tradeOrderQueryService.getOrderCount(TradeOrderStatusEnum.UNDELIVERED.getStatus(), merId));
+        orderCount.put(TradeOrderStatusEnum.DELIVERED.getStatus(), tradeOrderQueryService.getOrderCount(TradeOrderStatusEnum.DELIVERED.getStatus(), merId));
+        orderCount.put(TradeOrderStatusEnum.COMPLETED.getStatus(), tradeOrderQueryService.getOrderCount(TradeOrderStatusEnum.COMPLETED.getStatus(), merId));
+        orderCount.put(TradeOrderStatusEnum.CANCELED.getStatus(), tradeOrderQueryService.getOrderCount(TradeOrderStatusEnum.CANCELED.getStatus(), merId));
         return success(orderCount);
     }
 

+ 1 - 2
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/mysql/aftersale/AfterSaleMapper.java

@@ -53,10 +53,9 @@ public interface AfterSaleMapper extends BaseMapperX<AfterSaleDO> {
                 .in(AfterSaleDO::getStatus, statuses));
     }
 
-    default Long selectCountByUserIdAndStatus(Long userId, Long shopId, Long merId, Collection<Integer> statuses) {
+    default Long selectCountByUserIdAndStatus(Long userId, Long merId, Collection<Integer> statuses) {
         return selectCount(new LambdaQueryWrapperX<AfterSaleDO>()
                 .eqIfPresent(AfterSaleDO::getUserId, userId)
-                .eqIfPresent(AfterSaleDO::getShopId, shopId)
                 .eqIfPresent(AfterSaleDO::getMerchantId, merId)
                 .in(AfterSaleDO::getStatus, statuses));
     }

+ 29 - 1
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/job/order/TradeOrderAutoCalcJob.java

@@ -4,12 +4,17 @@ import cn.newfeifan.mall.framework.quartz.core.handler.JobHandler;
 import cn.newfeifan.mall.framework.tenant.core.job.TenantJob;
 import cn.newfeifan.mall.module.distri.mq.message.order.CalcMessage;
 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.trade.mq.producer.order.DistriOrderProducer;
 import cn.newfeifan.mall.module.trade.service.order.TradeOrderQueryService;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 交易订单自动计算 Job
@@ -29,7 +34,30 @@ public class TradeOrderAutoCalcJob implements JobHandler {
     @TenantJob
     public String execute(String param) {
         List<DistriOrderMessage> appTradeOrderDetailRespVos = tradeOrderQueryService.queryAllOrder();
-        CalcMessage calcMessage = CalcMessage.builder().distriOrderMessages(appTradeOrderDetailRespVos).build();
+
+        Map<Long, List<OrderItemMessage>> orderItemMessageGroupBy = appTradeOrderDetailRespVos.stream()
+                .map(k -> OrderItemMessage.builder().price(k.getPrice())
+                        .productCount(k.getProductCount())
+                        .costPrice(k.getCostPrice())
+                        .totalPrice(k.getTotalPrice()).build())
+                .collect(Collectors.groupingBy(OrderItemMessage::getOrderId));
+
+        List<OrderCalcMessage> orderCalcMessages = appTradeOrderDetailRespVos.stream().map(k -> {
+            OrderCalcMessage orderCalcMessage = OrderCalcMessage.builder()
+                    .orderId(k.getOrderId())
+                    .name(k.getName())
+                    .nickName(k.getNickName())
+                    .no(k.getNo())
+                    .merchantId(k.getMerchantId())
+                    .shopId(k.getShopId())
+                    .userId(k.getUserId()).build();
+            List<OrderItemMessage> orderItemMessages = orderItemMessageGroupBy.get(k.getOrderId());
+            orderCalcMessage.setOrderItemMessages(orderItemMessages);
+            return orderCalcMessage;
+        }).collect(Collectors.toList());
+
+
+        CalcMessage calcMessage = CalcMessage.builder().orderCalcMessages(orderCalcMessages).distriOrderMessages(appTradeOrderDetailRespVos).build();
         distriOrderProducer.sendDistriOrderMessage(calcMessage);
         return String.format("计算订单信息结束");
 

+ 1 - 2
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/aftersale/AfterSaleService.java

@@ -137,11 +137,10 @@ public interface AfterSaleService {
      * 【会员】获得正在进行中的售后订单数量
      *
      * @param userId 用户编号
-     * @param shopId 店铺编号
      * @param merId  商户编号
      * @return 数量
      */
-    Long getApplyingAfterSaleCount(Long userId,Long shopId, Long merId);
+    Long getApplyingAfterSaleCount(Long userId, Long merId);
 
 
 }

+ 2 - 2
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/aftersale/AfterSaleServiceImpl.java

@@ -423,8 +423,8 @@ public class AfterSaleServiceImpl implements AfterSaleService {
     }
 
     @Override
-    public Long getApplyingAfterSaleCount(Long userId,Long shopId, Long merId) {
-        return tradeAfterSaleMapper.selectCountByUserIdAndStatus(userId, shopId, merId, AfterSaleStatusEnum.APPLYING_STATUSES);
+    public Long getApplyingAfterSaleCount(Long userId, Long merId) {
+        return tradeAfterSaleMapper.selectCountByUserIdAndStatus(userId, merId, AfterSaleStatusEnum.APPLYING_STATUSES);
     }
 
 }

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

@@ -30,7 +30,7 @@
                ps.shop_id        as shopId,
                ps.shop_id        as shopId,
                mu.`name`         as name,
-               mu.nickname        as nickname
+               mu.nickname       as nickname
         from trade_order tor
                  LEFT JOIN member_user mu
                            ON tor.user_id = mu.id
@@ -38,7 +38,11 @@
                            on tor.id = toi.order_id
                  LEFT JOIN product_sku ps
                            on toi.sku_id = ps.id
-        where  tor.update_time BETWEEN #{start} AND #{end}
+        where toi.after_sale_status &lt; 10
+           or toi.after_sale_status &gt; 50
+            and tor.update_time BETWEEN #{start} AND #{end}
+
+
     </select>
     <select id="queryAllOrderByOrderIds"
             resultMap="BaseResultMap">