Browse Source

购买商品更新销量

Yangzw 7 months ago
parent
commit
0573027554

+ 26 - 2
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/order/TradeOrderUpdateServiceImpl.java

@@ -741,7 +741,18 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
 
             tradeOrderMapper.insert(order);
 
-            orderItems.forEach(orderItem -> orderItem.setOrderId(order.getId()));
+            // 购买增加销量
+            orderItems.forEach(orderItem -> {
+                        orderItem.setOrderId(order.getId());
+                ProductSkuDO sku = productSkuMapper.selectById(orderItem.getSkuId());
+                sku.setSalesCount(sku.getSalesCount() + orderItem.getCount());
+                productSkuMapper.updateById(sku);
+
+                ProductSpuDO spu = productSpuMapper.selectById(orderItem.getSpuId());
+                spu.setSalesCount(spu.getSalesCount() + orderItem.getCount());
+                productSpuMapper.updateById(spu);
+                    }
+            );
 
             /*
              * 把每一笔运费平摊到相同的运费模板的订单项中,并且把支付金额累加上运费
@@ -765,7 +776,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
                     if (spu.getDeliveryTemplateId().equals(id)) {
                         templateIdMap.put(id, templateIdMap.get(id) + 1);
 
-                        if(item.getDeliveryPrice() != 0){
+                        if (item.getDeliveryPrice() != 0) {
                             deliveryPriceMap.put(spu.getDeliveryTemplateId(), item.getDeliveryPrice());
                         }
                     }
@@ -1580,6 +1591,19 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
         int updateCount = tradeOrderMapper.updateByIdAndStatus(order.getId(), order.getStatus(),
                 new TradeOrderDO().setStatus(TradeOrderStatusEnum.CANCELED.getStatus())
                         .setCancelType(cancelType.getType()).setCancelTime(LocalDateTime.now()));
+
+        // 取消订单减商品销量
+        List<TradeOrderItemDO> tradeOrderItemDOS = tradeOrderItemMapper.selectList(TradeOrderItemDO::getOrderId, order.getId());
+        for (TradeOrderItemDO tradeOrderItemDO : tradeOrderItemDOS) {
+            ProductSkuDO sku = productSkuMapper.selectById(tradeOrderItemDO.getSkuId());
+            sku.setSalesCount(sku.getSalesCount() - tradeOrderItemDO.getCount());
+            productSkuMapper.updateById(sku);
+
+            ProductSpuDO spu = productSpuMapper.selectById(tradeOrderItemDO.getSpuId());
+            spu.setSalesCount(spu.getSalesCount() - tradeOrderItemDO.getCount());
+            productSpuMapper.updateById(spu);
+        }
+
         if (updateCount == 0) {
             throw exception(ORDER_CANCEL_FAIL_STATUS_NOT_UNPAID);
         }