Răsfoiți Sursa

添加了库存校验以及限购起购校验

Pota1ovO 2 ani în urmă
părinte
comite
2ccbccc1de

+ 31 - 1
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/impl/KxsShopOrderServiceImpl.java

@@ -22,14 +22,17 @@ import com.kxs.common.security.util.SecurityUtils;
 import com.kxs.product.api.dto.kxsapp.shop.GoodsSubmitDTO;
 import com.kxs.product.api.dto.kxsapp.shop.PayOrderDTO;
 import com.kxs.product.api.model.KxsShopGoods;
+import com.kxs.product.api.model.KxsShopGoodsSku;
 import com.kxs.product.api.model.KxsShopOrder;
 import com.kxs.product.api.model.KxsShopOrderInfo;
 import com.kxs.product.api.vo.kxsapp.shop.*;
 import com.kxs.product.biz.constant.enums.KxsShopEnum;
 import com.kxs.product.biz.constant.enums.ProductErrorTypeEnum;
 import com.kxs.product.biz.mapper.KxsShopGoodsMapper;
+import com.kxs.product.biz.mapper.KxsShopGoodsSkuMapper;
 import com.kxs.product.biz.mapper.KxsShopOrderInfoMapper;
 import com.kxs.product.biz.mapper.KxsShopOrderMapper;
+import com.kxs.product.biz.service.KxsShopGoodsSkuService;
 import com.kxs.product.biz.service.KxsShopOrderService;
 import com.kxs.user.api.feign.RemoteKxsUserService;
 import com.lly835.bestpay.enums.OrderStatusEnum;
@@ -64,7 +67,7 @@ public class KxsShopOrderServiceImpl extends ServiceImpl<KxsShopOrderMapper, Kxs
     private final RemoteKxsUserService remoteKxsUserService;
 
     private final PaymentFactory paymentFactory;
-
+    private final KxsShopGoodsSkuMapper kxsShopGoodsSkuMapper;
     @Override
     @Transactional(rollbackFor = Exception.class)
     public R submitOrder(GoodsSubmitDTO param) {
@@ -86,6 +89,32 @@ public class KxsShopOrderServiceImpl extends ServiceImpl<KxsShopOrderMapper, Kxs
         //查询商品
         KxsShopGoods goods = goodsMapper.selectById(param.getGoodsId());
         Optional.ofNullable(goods).orElseThrow(() -> new GlobalCustomerException("商品不存在"));
+        //查询商品sku
+        KxsShopGoodsSku kxsShopGoodsSku = kxsShopGoodsSkuMapper.selectOne(Wrappers.<KxsShopGoodsSku>query().lambda().eq(KxsShopGoodsSku::getGoodId, goods.getId()));
+        if (kxsShopGoodsSku != null){
+            //当sku库存不为null时需做存量校验
+            if (kxsShopGoodsSku.getStockNum() != null && kxsShopGoodsSku.getStockNum() != -1){
+                int i = kxsShopGoodsSku.getStockNum() - param.getNumber();
+                if(i < 0){
+                    return R.failed("当前库存不足");
+                }
+                kxsShopGoodsSku.setStockNum(i);
+                //修改库存
+                kxsShopGoodsSkuMapper.updateById(kxsShopGoodsSku);
+            }
+            //校验是否存在起购以及限购数量校验
+            if (kxsShopGoodsSku.getStartByCount() != null && kxsShopGoodsSku.getStartByCount() != 0){
+                boolean b = kxsShopGoodsSku.getStartByCount() > param.getNumber();
+                if (b){
+                    return R.failed("该商品最低" + kxsShopGoodsSku.getStartByCount() + "件起购");
+                }
+            }else if (kxsShopGoodsSku.getLimitCount() != null && kxsShopGoodsSku.getLimitCount() != 0){
+                boolean b = kxsShopGoodsSku.getLimitCount() < param.getNumber();
+                if (b){
+                    return R.failed("该商品每人最多购买" + kxsShopGoodsSku.getLimitCount() + "件");
+                }
+            }
+        }
         //订单详情
         KxsShopOrderInfo orderInfo = new KxsShopOrderInfo();
         orderInfo.setNumber(param.getNumber());
@@ -186,6 +215,7 @@ public class KxsShopOrderServiceImpl extends ServiceImpl<KxsShopOrderMapper, Kxs
             this.update(lambdaUpdateWrapper);
             //TODO 余额走支付接下来的逻辑
 
+
         }