lishiqiang 2 nedēļas atpakaļ
vecāks
revīzija
1ad10ab8dc

+ 10 - 2
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/api/VoyageApiImpl.java

@@ -33,6 +33,7 @@ import org.redisson.api.RLock;
 import org.redisson.api.RedissonClient;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
@@ -82,6 +83,7 @@ public class VoyageApiImpl implements VoyageApi {
     private VoyageStockDetailLogMapper voyageStockDetailLogMapper;
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void preReduceStock(ReduceStockReqDTO reqDTO) {
         //TODO: 当前阶段不考虑门店库存
         log.info("开始初定订单扣库存:订单ID:"+reqDTO.getOrderId()+"old订单ID:"+reqDTO.getOldOrderId());
@@ -122,6 +124,7 @@ public class VoyageApiImpl implements VoyageApi {
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void preCancelReduceStock(ReduceStockReqDTO reqDTO) {
         //TODO: 当前阶段不考虑门店库存
 
@@ -148,6 +151,7 @@ public class VoyageApiImpl implements VoyageApi {
     }
 
     @Override
+    @Transactional
     public void reduceStock(ReduceStockReqDTO reqDTO) {
         //TODO: 当前阶段不考虑门店库存
 
@@ -169,14 +173,19 @@ public class VoyageApiImpl implements VoyageApi {
                 //再去扣确定的库存
                 reduceStockDistributor(reqDTO);
             }
-        } finally {
+        }catch (Exception e){
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            throw e;
+        }finally {
             if (lock.isHeldByCurrentThread() && lock.isLocked()) {
                 lock.unlock();
             }
+
         }
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void cancelReduceStock(ReduceStockReqDTO reqDTO) {
         //TODO: 当前阶段不考虑门店库存
         Long voyageId = reqDTO.getVoyageId();
@@ -686,7 +695,6 @@ public class VoyageApiImpl implements VoyageApi {
      * 初定扣分销商库存
      *
      */
-    @Transactional(rollbackFor = Exception.class)
     private void preReduceStockDistributor(ReduceStockReqDTO reqDTO) {
         log.info("进入初定扣库存操作-orderId:"+reqDTO.getOrderId());
         //航次库存操作日志

+ 1 - 1
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/handler/TradeOrderHandler.java

@@ -86,7 +86,7 @@ public interface TradeOrderHandler {
      *
      * @param order 订单
      */
-    default void beforeOrderCreate(TradeOrderBO order) {}
+    default void beforeOrderCreate(TradeOrderBO order) throws Exception {}
 
     /**
      * 订单创建后

+ 2 - 2
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/handler/TradeStockOrderHandler.java

@@ -43,7 +43,7 @@ public class TradeStockOrderHandler implements TradeOrderHandler{
     private TradeOrderRoomModelMapper tradeOrderRoomModelMapper;
 
     @Override
-    public void beforeOrderCreate(TradeOrderBO order) {
+    public void beforeOrderCreate(TradeOrderBO order) throws Exception {
         Integer sellMethod = order.getTradeOrderDO().getSellMethod();
         if (sellMethod == 1||sellMethod == 4||sellMethod == 7||sellMethod == 0||sellMethod == 3) {
             reduceStock(order);
@@ -51,7 +51,7 @@ public class TradeStockOrderHandler implements TradeOrderHandler{
 
     }
 
-    private void reduceStock(TradeOrderBO order){
+    private void reduceStock(TradeOrderBO order) throws  Exception{
         ReduceStockReqDTO reqDTO = new ReduceStockReqDTO();
         TradeOrderDO lastOrder = order.getOldTradeOrderDO();
         if(lastOrder != null){

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

@@ -57,6 +57,7 @@ import com.yc.ship.module.trade.utils.BeanUtils;
 import com.yc.ship.module.trade.utils.TradeUUCodeUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
@@ -156,7 +157,13 @@ public class TradeOrderServiceImpl implements TradeOrderService {
             //1.构建订单
             tradeOrderBO = buildCreateOrder(orderCreateReqDTO);
             //2.下单前处理
-            beforeOrderCreate(tradeOrderBO);
+            try {
+                beforeOrderCreate(tradeOrderBO);
+            }catch (Exception e){
+                log.error("下单前处理异常", e);
+                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                throw e;
+            }
             //3.保存订单
             tradeOrderRepositoryService.saveOrder(tradeOrderBO);
             //4.供应商下单
@@ -176,8 +183,10 @@ public class TradeOrderServiceImpl implements TradeOrderService {
                     .setMarketingName(tradeOrderBO.getExtraInfo().getMarketingName());
             return CommonResult.success(tradeOrderRespDTO);
         } catch (ServiceException e) {
-            ExceptionUtils.log(log, "下单失败:", e);
-            handleAfterOrderCreateFail(e.getCode(), tradeOrderBO);
+            try {
+                ExceptionUtils.log(log, "下单失败:", e);
+                handleAfterOrderCreateFail(e.getCode(), tradeOrderBO);
+            }catch (Exception ee) {}
             return CommonResult.error(e);
         } catch (Exception e) {
             log.error("下单失败:", e);
@@ -244,8 +253,12 @@ public class TradeOrderServiceImpl implements TradeOrderService {
                     .setMarketingName(tradeOrderBO.getExtraInfo().getMarketingName());
             return CommonResult.success(tradeOrderRespDTO);
         } catch (ServiceException e) {
-            ExceptionUtils.log(log, "订单修改失败:", e);
-            handleAfterOrderCreateFail(e.getCode(), tradeOrderBO);
+            try {
+                ExceptionUtils.log(log, "订单修改失败:", e);
+                handleAfterOrderCreateFail(e.getCode(), tradeOrderBO);
+            }catch (Exception eee){
+
+            }
             return CommonResult.error(e);
         } catch (Exception e) {
             log.error("订单修改失败:", e);
@@ -1104,7 +1117,7 @@ public class TradeOrderServiceImpl implements TradeOrderService {
         return ObjectUtils.equalsAny(sellMethod, SellMethodEnum.MINI_APP.getType(), SellMethodEnum.AUTO_MACHINE.getType(), SellMethodEnum.WINDOW.getType());
     }
 
-    private void beforeOrderCreate(TradeOrderBO tradeOrderBO) {
+    private void beforeOrderCreate(TradeOrderBO tradeOrderBO) throws Exception {
         TradeOrderHandler currentHandler;
         for (TradeOrderHandler handler : tradeOrderHandlers) {
             currentHandler = handler;

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

@@ -1668,7 +1668,7 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
+//    @Transactional(rollbackFor = Exception.class)
     public CommonResult<?> createOtcOrder(LoginUser loginUser, TradeOrderOtcCreateVO createVO) {
         Long distributorId = createVO.getDistributorId() != null ? createVO.getDistributorId() : loginUser.getDistributorId();
         Long storeId = createVO.getStoreId() != null ? createVO.getStoreId() : loginUser.getStoreId();
@@ -1846,8 +1846,12 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
         if (DateUtil.compare(travelDate, new Date()) < 0) {
             Asserts.isTrue(false, "选择的游玩日期不能早于当前时间");
         }
-
-        CommonResult<TradeOrderRespDTO> result = doShipCreateOrder(loginUser, shipTradeOrderCreateReqVO);
+        CommonResult<TradeOrderRespDTO> result = null;
+        try {
+            result = doShipCreateOrder(loginUser, shipTradeOrderCreateReqVO);
+        }catch (Exception e) {
+            return CommonResult.error(500, e.getMessage());
+        }
         if (result.isError()) {
             return CommonResult.error(result.getCode(), result.getMsg());
         }
@@ -1905,7 +1909,7 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
+//    @Transactional(rollbackFor = Exception.class)
     public CommonResult<?> motifyOtcOrder(LoginUser loginUser, TradeOrderOtcCreateVO createVO) {
         Long distributorId = createVO.getDistributorId() != null ? createVO.getDistributorId() : loginUser.getDistributorId();
         Long storeId = createVO.getStoreId() != null ? createVO.getStoreId() : loginUser.getStoreId();