Przeglądaj źródła

预付款退款修改

lishiqiang 4 dni temu
rodzic
commit
6eca405aff

+ 3 - 3
ship-module-ota/ship-module-ota-biz/src/main/java/com/yc/ship/module/ota/service/distributorrecharge/DistributorRechargeServiceImpl.java

@@ -42,6 +42,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.redisson.api.RLock;
 import org.redisson.api.RedissonClient;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 
@@ -302,7 +303,7 @@ public class DistributorRechargeServiceImpl implements DistributorRechargeServic
     }
 
     @Override
-    @Transactional
+    @Transactional(propagation = Propagation.NESTED,rollbackFor = Exception.class)
     @TenantIgnore
     public CommonResult<DistributorRechargeRespDTO> tradeRecharge(DistributorRechargeReqDTO rechargeReqDTO) {
         RLock lock = null;
@@ -414,8 +415,7 @@ public class DistributorRechargeServiceImpl implements DistributorRechargeServic
 
                             break;
                         case 5:
-                        case 10:
-                            break;
+
                         case 20:
                             //预付款退款 定向库存退款 导游代退失败回退预存款
                             beforeBalance = distributor.getBalance();

+ 2 - 0
ship-module-product/ship-module-product-api/src/main/java/com/yc/ship/module/product/api/VoyageApi.java

@@ -30,4 +30,6 @@ public interface VoyageApi {
      * @param reqDTO 请求参数
      */
     void cancelReduceStock(ReduceStockReqDTO reqDTO);
+
+    void cancelReduceStockNew(ReduceStockReqDTO reqDTO);
 }

+ 32 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/api/VoyageApiImpl.java

@@ -223,6 +223,38 @@ public class VoyageApiImpl implements VoyageApi {
         }
     }
 
+    @Override
+    @Transactional(propagation = Propagation.NESTED,rollbackFor = Exception.class)
+    public void cancelReduceStockNew(ReduceStockReqDTO reqDTO) {
+        log.error("开始确定订单还库存:请求参数:{}", JSONObject.toJSONString(reqDTO));
+        //TODO: 当前阶段不考虑门店库存
+        Long voyageId = reqDTO.getVoyageId();
+        //现在给整个航次的库存加锁
+        String lockKey = String.format(ProductRedisKeyConstants.STOCK_REDIS_KEY_PREFIX, voyageId);
+        RLock lock = redissonClient.getLock(lockKey);
+        try {
+            lock.lock(60, TimeUnit.SECONDS);
+            String uuid = UuidUtils.getUUID();
+            //判断是分销商还是门店下单 1:分销商,2:门店
+            Integer type = reqDTO.getType();
+            //分销商下单,当前阶段不考虑门店下单
+            if (Objects.equals(type, DistributorOrStoreEnum.DISTRIBUTOR.getValue())) {
+                //分销商下单只扣分销商库存,默认是OTA,默认OTC只能门店下单
+                //初定扣分销商库存
+                cancelReduceStockDistributor(reqDTO.getOrderId(), reqDTO.getType(),reqDTO.getOrderRoomList(), uuid);
+                if (reqDTO.getOldOrderId() != null && !reqDTO.getOldOrderId().equals(reqDTO.getOrderId())) {
+                    cancelReduceStockDistributor(reqDTO.getOldOrderId(), reqDTO.getType(),reqDTO.getOrderRoomList(), uuid);
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }finally {
+            if (lock.isHeldByCurrentThread() && lock.isLocked()) {
+                lock.unlock();
+            }
+        }
+    }
+
     /**
      * 确定状态时取消订单还库存
      * roomUseDTOList 需要退的房间

+ 0 - 1
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/impl/TradeOrderServiceImpl.java

@@ -291,7 +291,6 @@ public class TradeOrderServiceImpl implements TradeOrderService {
     }
 
     @Override
-
     public CommonResult<TradeOrderRespDTO> modifyShipOrder(ShipTradeOrderCreateReqVO shipTradeOrderCreateReqVO) {
         TradeOrderBO tradeOrderBO = null;
         try {

+ 4 - 3
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/refund/impl/TradeRefundServiceImpl.java

@@ -281,8 +281,6 @@ public class TradeRefundServiceImpl implements TradeRefundService {
         TradeRefundAuditRespDTO respDTO = new TradeRefundAuditRespDTO();
         respDTO.setRefundAuditId(refundAuditDO.getId()).setRefundId(refundDO.getId());
 
-        //发送审核通知消息
-        tradePublishUtils.publishRefundAuditMsg(refundAuditDO.getId().toString());
         if (ObjectUtil.equal(refundAuditDO.getAuditStatus(), YES)) {
             //同意-》更新退款单为审核通过-》向供应商发起退款
             if (refundAuditReqDTO.getRefundAmount() != null && refundAuditReqDTO.getRefundAmount().compareTo(refundDO.getRefundAmount()) != 0) {
@@ -309,10 +307,13 @@ public class TradeRefundServiceImpl implements TradeRefundService {
                 reqDTO.setUseRoomNum(BigDecimal.valueOf(tradeOrderTotal.getUseRoomTotalNum()));
                 List<OrderRoomUseDTO> orderRoomUseDTOList = tradeVisitorMapper.selectRefundRoomShipVisitor(tradeOrderDO.getId());
                 reqDTO.setOrderRoomList(orderRoomUseDTOList);
-                voyageApi.cancelReduceStock(reqDTO);
+                voyageApi.cancelReduceStockNew(reqDTO);
             } catch (Exception e) {
+                e.printStackTrace();
                 log.error("取消库存cancelReduceStock失败", e);
             }
+            //发送审核通知消息
+            tradePublishUtils.publishRefundAuditMsg(refundAuditDO.getId().toString());
         } else {
             //拒绝-》更新退款单为审核拒绝-》更新订单为原状态
             tradeRefundRepositoryService.updateRefundStatus(refundAuditReqDTO.getRefundId(), RefundStatusEnum.REFUSE);