2 Commity a5adac97af ... c77d37ad68

Autor SHA1 Wiadomość Data
  lishiqiang c77d37ad68 Merge branch 'main' of http://git.wisesoft.net.cn/lishiqiang/ship-ota-server 5 dni temu
  luofeiyun 4d09e8db18 fix: 处理订单创建和修改,审核时的政策相关的操作 6 dni temu

+ 30 - 22
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/impl/OtcTradeOrderServiceImpl.java

@@ -444,12 +444,12 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
                 } catch (Exception e) {
                     log.error("发送短信异常", e);
                 }
-                AtomicReference<BigDecimal> amount = new AtomicReference<>(BigDecimal.ZERO);
+                List<BigDecimal> amountList = new ArrayList<>();
                 try {
                     List<OrderPolicyDO> orderPolicyList = orderPolicyMapper.selectList(OrderPolicyDO::getOrderId, orderId);
                     if (!orderPolicyList.isEmpty()) {
                         orderPolicyList.forEach(item -> {
-                            amount.set(amount.get().add(item.getAmount()));
+                            amountList.add(item.getAmount());
                             policyApi.updatePolicySurplusNum(item.getId(), tradeOrderDO.getVoyageId(), item.getPreUseNum());
                         });
                     }
@@ -457,6 +457,7 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
                 }catch (Exception e){
                     log.error("政策执行异常", e);
                 }
+                BigDecimal amount = amountList.stream().reduce(BigDecimal.ZERO, BigDecimal::add);
                 int orderStatus = TradeOrderStatusEnum.UNPAID.getStatus();
                 if(tradeOrderDO.getPayStatus()==1){
                     orderStatus = 6;
@@ -466,8 +467,8 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
                         .set(TradeOrderDO::getAuditStatus, tradeOrderDO.getAuditStatus() + 1)
                         .set(TradeOrderDO::getUpdateTime, LocalDateTime.now())
                         .set(TradeOrderDO::getDeposiStatus, 1)
-                        .set(TradeOrderDO::getPayAmount, tradeOrderDO.getPayAmount().subtract(amount.get()))
-                        .set(TradeOrderDO::getFreeAmount, amount.get())
+                        .set(TradeOrderDO::getPayAmount, tradeOrderDO.getPayAmount().subtract(amount))
+                        .set(TradeOrderDO::getFreeAmount, amount)
                         .eq(TradeOrderDO::getId, orderId)
                 );
                 Map<String, Object> extMap = new HashMap<>();
@@ -1858,15 +1859,19 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
                     orderPolicyDO.setDiscount(policy.getDiscount());
                     orderPolicyDO.setDiscountType(policy.getDiscountType());
                     orderPolicyDO.setUseNum(policy.getUseNum());
-                    if (createVO.getIsYd() != null && createVO.getIsYd() == 1) {
-                        orderPolicyDO.setPreUseNum(policy.getUseNum());
-                        orderPolicyDO.setRealUseNum(BigDecimal.ZERO);
-                    } else {
-                        //TODO: 需要修改订单金额,参考文档
-                        orderPolicyDO.setPreUseNum(BigDecimal.ZERO);
-                        orderPolicyDO.setRealUseNum(policy.getUseNum());
-                        policyApi.updatePolicySurplusNum(policy.getPolicyId(), createVO.getVoyageId(), policy.getUseNum());
-                    }
+                    orderPolicyDO.setPreUseNum(policy.getUseNum());
+                    // 只要不是审核,都是预占,实占和预占一样,不用区分了,其实实占没有意义了
+                    orderPolicyDO.setRealUseNum(BigDecimal.ZERO);
+//                    if (createVO.getIsYd() != null && createVO.getIsYd() == 1) {
+//                        orderPolicyDO.setPreUseNum(policy.getUseNum());
+//                        orderPolicyDO.setRealUseNum(BigDecimal.ZERO);
+//                    } else {
+//                        //TODO: 需要修改订单金额,参考文档
+//                        orderPolicyDO.setPreUseNum(BigDecimal.ZERO);
+//                        orderPolicyDO.setRealUseNum(policy.getUseNum());
+//                        // 这个地方不去扣库存,要审核通过了才扣
+////                        policyApi.updatePolicySurplusNum(policy.getPolicyId(), createVO.getVoyageId(), policy.getUseNum());
+//                    }
                     orderPolicyDO.setAmount(policy.getAmount());
                     orderPolicyDO.setRooms(policy.getRooms());
                     orderPolicyDOList.add(orderPolicyDO);
@@ -2223,15 +2228,18 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
                     orderPolicyDO.setDiscount(policy.getDiscount());
                     orderPolicyDO.setDiscountType(policy.getDiscountType());
                     orderPolicyDO.setUseNum(policy.getUseNum());
-                    if (Objects.equals(tradeOrderDO.getOrderStatus(), TradeOrderStatusEnum.UNPAID.getStatus())) {
-                        orderPolicyDO.setRealUseNum(policy.getUseNum());
-                        orderPolicyDO.setPreUseNum(BigDecimal.ZERO);
-                        policyApi.updatePolicySurplusNum(policy.getPolicyId(), createVO.getVoyageId(), policy.getUseNum());
-                        //TODO: 需要修改订单金额,参考文档
-                    } else {
-                        orderPolicyDO.setRealUseNum(BigDecimal.ZERO);
-                        orderPolicyDO.setPreUseNum(policy.getUseNum());
-                    }
+                    orderPolicyDO.setPreUseNum(policy.getUseNum());
+                    // 只要不是审核,都是预占,实占和预占一样,不用区分了,其实实占没有意义了
+                    orderPolicyDO.setRealUseNum(policy.getUseNum());
+//                    if (Objects.equals(tradeOrderDO.getOrderStatus(), TradeOrderStatusEnum.UNPAID.getStatus())) {
+//                        orderPolicyDO.setRealUseNum(policy.getUseNum());
+//                        orderPolicyDO.setPreUseNum(BigDecimal.ZERO);
+//                        policyApi.updatePolicySurplusNum(policy.getPolicyId(), createVO.getVoyageId(), policy.getUseNum());
+//                        //TODO: 需要修改订单金额,参考文档
+//                    } else {
+//                        orderPolicyDO.setRealUseNum(BigDecimal.ZERO);
+//                        orderPolicyDO.setPreUseNum(policy.getUseNum());
+//                    }
                     orderPolicyDO.setAmount(policy.getAmount());
                     orderPolicyDO.setRooms(policy.getRooms());
                     orderPolicyDOList.add(orderPolicyDO);