FengChaoYu 7 місяців тому
батько
коміт
ce933d1a3a

+ 8 - 2
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/order/PayOrderLogic.java

@@ -20,6 +20,7 @@ import com.gree.mall.miniapp.bean.order.WorkerOrderDetail;
 import com.gree.mall.miniapp.bean.user.CurrentCompanyWechat;
 import com.gree.mall.miniapp.commonmapper.MaterialMapper;
 import com.gree.mall.miniapp.enums.*;
+import com.gree.mall.miniapp.enums.material.NormTypeEnum;
 import com.gree.mall.miniapp.enums.material.PartsAttrEnum;
 import com.gree.mall.miniapp.enums.material.WebsitGoodsTypeEnum;
 import com.gree.mall.miniapp.exception.RemoteServiceException;
@@ -611,7 +612,7 @@ public class PayOrderLogic {
         Map<String, WorkerNormStockBean> workerStockMap = new HashMap<>();
         for (WorkerOrderItem item : workerOrderItems) {
             WebsitNormCharge websitNormCharge = websitNormChargeService.getById(item.getGoodsId());
-            if (websitNormCharge.getNormType().equals("M")) {
+            if (websitNormCharge.getNormType().equals(NormTypeEnum.M.getKey())) {
                 // 获取当前关联师傅库存记录
                 List<WorkerNormStockBean> stockBeanList = materialMapper.queryWorkerStockQty(item.getGoodsId(), workerOrder.getWorkerId());
                 if (CollectionUtil.isNotEmpty(stockBeanList)) {
@@ -619,7 +620,7 @@ public class PayOrderLogic {
                     for (WorkerNormStockBean stockBean : stockBeanList) {
                         // 当前订单收费标准扣总数量
                         BigDecimal useTotalQty = totalNum.multiply(stockBean.getQty());
-                        if (!workerStockMap.containsKey(stockBean.getWorkerGoodsId())) {
+                        if (!workerStockMap.containsKey(stockBean.getWorkerGoodsId() + item.getGoodsAmount())) {
                             WorkerNormStockBean bean = new WorkerNormStockBean();
                             BeanUtils.copyProperties(stockBean, bean);
                             bean.setRealQty(BigDecimal.ZERO);
@@ -628,6 +629,11 @@ public class PayOrderLogic {
                         WorkerNormStockBean stock = workerStockMap.get(stockBean.getWorkerGoodsId() + item.getGoodsAmount());
                         stock.setRealQty(stock.getRealQty().add(useTotalQty));
                         stock.setNormPrice(item.getGoodsAmount());
+
+                        if (!stockBean.getIsSmall() && stock.getRealQty().compareTo(stockBean.getStockQty()) > 0) {
+                            throw new RemoteServiceException("收费标准关联的 " + stockBean.getGoodsName() + "库存数量"
+                                    + stock.getStockQty() + ", 需扣" + stock.getRealQty() + ", 库存数量不够扣减");
+                        }
                     }
                 }
             }