Browse Source

fix:库存

liujunchi 2 năm trước cách đây
mục cha
commit
88aad8fd3a

+ 2 - 1
mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/dao/PortalOrderDao.java

@@ -3,6 +3,7 @@ package com.yonge.cooleshow.portal.dao;
 import com.yonge.cooleshow.mbg.model.OmsOrder;
 import com.yonge.cooleshow.mbg.model.OmsOrderItem;
 import com.yonge.cooleshow.portal.domain.OmsOrderDetail;
+import com.yonge.cooleshow.portal.domain.ProductStock;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -38,7 +39,7 @@ public interface PortalOrderDao {
      */
     int releaseSkuStockLock(@Param("itemList") List<OmsOrderItem> orderItemList);
 
-    int releaseProductStockLock(@Param("itemList") List<OmsOrderItem> orderItemList);
+    int releaseProductStockLock(@Param("itemList") List<ProductStock> orderItemList);
 
     List<OmsOrder> listByAdapayNo(@Param("alapayNoList") List<String> alapayNoList, @Param("adapayNos") String adapayNos);
 }

+ 14 - 1
mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java

@@ -588,10 +588,23 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
             OmsOrderItemExample orderItemExample = new OmsOrderItemExample();
             orderItemExample.createCriteria().andOrderIdEqualTo(orderId);
             List<OmsOrderItem> orderItemList = orderItemMapper.selectByExample(orderItemExample);
+
             //解除订单商品库存锁定
             if (!CollectionUtils.isEmpty(orderItemList)) {
                 portalOrderDao.releaseSkuStockLock(orderItemList);
-                portalOrderDao.releaseProductStockLock(orderItemList);
+
+                List<ProductStock> productStockList = new ArrayList<>();
+                Map<Long, List<OmsOrderItem>> collect = orderItemList.stream()
+                                                                     .collect(Collectors.groupingBy(
+                                                                             OmsOrderItem::getProductId));
+                collect.forEach((k,v) -> {
+                    ProductStock productStock = new ProductStock();
+                    productStock.setProductId(k);
+                    productStock.setStock(v.size());
+                    productStockList.add(productStock);
+                });
+
+                portalOrderDao.releaseProductStockLock(productStockList);
             }
             //修改优惠券使用状态
             // updateCouponStatus(cancelOrder.getCouponId(), cancelOrder.getMemberId(), 0);

+ 1 - 1
mec-mall/mall-portal/src/main/resources/config/mybatis/PortalOrderDao.xml

@@ -97,7 +97,7 @@
         SET
         lock_stock = CASE id
         <foreach collection="itemList" item="item">
-            WHEN #{item.productId} THEN lock_stock - #{item.productQuantity}
+            WHEN #{item.productId} THEN lock_stock - #{item.stock}
         </foreach>
         END
         WHERE