Bläddra i källkod

审核回滚的逻辑修改

ZHOUTD 1 vecka sedan
förälder
incheckning
1bb9354ec7

+ 5 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeDetailBaseMapper.java

@@ -8,6 +8,7 @@ import com.yc.ship.module.trade.dal.dataobject.order.TradeDetailDO;
 import com.yc.ship.module.trade.service.order.bo.TradeOrderDetailBaseBO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
 
 import java.time.LocalDateTime;
 import java.util.List;
@@ -53,4 +54,8 @@ public interface TradeDetailBaseMapper extends BaseMapperX<TradeDetailBaseDO> {
 
     @TenantIgnore
     void deleteAllByOrderId(@Param("orderId") Long orderId);
+
+    @Update("UPDATE trade_detail_base SET deleted = #{deleted},update_time = now() WHERE id = #{id}")
+    @TenantIgnore
+    void updateDeletedById(@Param("id") Long id, @Param("deleted")  int deleted);
 }

+ 5 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeDetailMapper.java

@@ -18,6 +18,7 @@ import com.yc.ship.module.trade.dal.dataobject.order.TradeDetailDO;
 import com.yc.ship.module.trade.service.order.bo.TradeDetailBO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
 import org.springframework.cache.annotation.Cacheable;
 
 import java.math.BigDecimal;
@@ -204,4 +205,8 @@ public interface TradeDetailMapper extends BaseMapperX<TradeDetailDO> {
 
     @TenantIgnore
     void deleteAllByOrderId(@Param("orderId") Long orderId);
+
+    @Update("UPDATE trade_detail SET deleted = #{deleted},update_time = now() WHERE id = #{id}")
+    @TenantIgnore
+    void updateDeletedById(@Param("id") Long id, @Param("deleted")  int deleted);
 }

+ 4 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeOrderCountryMapper.java

@@ -36,4 +36,8 @@ public interface TradeOrderCountryMapper extends BaseMapperX<TradeOrderCountryDO
     @Delete("delete from trade_order_country where order_id = #{orderId}")
     @TenantIgnore
     void deleteAllByOrderId(Long orderId);
+
+    @Update("UPDATE trade_order_country SET deleted = #{deleted},update_time = now() WHERE id = #{id}")
+    @TenantIgnore
+    void updateDeletedById(@Param("id") Long id, @Param("deleted")  int deleted);
 }

+ 4 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeOrderFloorMapper.java

@@ -22,4 +22,8 @@ public interface TradeOrderFloorMapper extends BaseMapperX<TradeOrderFloorDO> {
     @Delete("delete from trade_order_floor where order_id = #{orderId}")
     @TenantIgnore
     void deleteAllByOrderId(@Param("orderId") Long orderId);
+
+    @Update("UPDATE trade_order_floor SET deleted = #{deleted},update_time = now() WHERE id = #{id}")
+    @TenantIgnore
+    void updateDeletedById(@Param("id") Long id, @Param("deleted")  int deleted);
 }

+ 4 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeOrderRoomModelMapper.java

@@ -55,4 +55,8 @@ public interface TradeOrderRoomModelMapper extends BaseMapperX<TradeOrderRoomMod
 
     @TenantIgnore
     void deleteAllByOrderId(@Param("orderId") Long orderId);
+
+    @Update("UPDATE trade_order_room_model SET deleted = #{deleted},update_time = now() WHERE id = #{id}")
+    @TenantIgnore
+    void updateDeletedById(@Param("id") Long id, @Param("deleted")  int deleted);
 }

+ 4 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeOrderTotalMapper.java

@@ -37,4 +37,8 @@ public interface TradeOrderTotalMapper extends BaseMapperX<TradeOrderTotalDO> {
     @Delete("delete from trade_order_total where old_order_id = #{orderId}")
     @TenantIgnore
     void deleteAllByOrderId(@Param("orderId") Long orderId);
+
+    @Update("UPDATE trade_order_total SET deleted = #{deleted},update_time = now() WHERE id = #{id}")
+    @TenantIgnore
+    void updateDeletedById(@Param("id") Long id, @Param("deleted")  int deleted);
 }

+ 4 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeOrderUserMapper.java

@@ -23,4 +23,8 @@ public interface TradeOrderUserMapper extends BaseMapperX<TradeOrderUserDO> {
     @Delete("delete from trade_order_user where order_id = #{orderId}")
     @TenantIgnore
     void deleteAllByOrderId(@Param("orderId") Long orderId);
+
+    @Update("UPDATE trade_order_user SET deleted = #{deleted},update_time = now() WHERE id = #{id}")
+    @TenantIgnore
+    void updateDeletedById(@Param("id") Long id, @Param("deleted")  int deleted);
 }

+ 4 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeVisitorMapper.java

@@ -128,4 +128,8 @@ public interface TradeVisitorMapper extends BaseMapperX<TradeVisitorDO> {
 
     @TenantIgnore
     void deleteAllByOrderId(@Param("orderId") Long orderId);
+
+    @Update("UPDATE trade_visitor SET deleted = #{deleted},update_time = now() WHERE id = #{id}")
+    @TenantIgnore
+    void updateDeletedById(@Param("id") Long id, @Param("deleted")  int deleted);
 }

+ 6 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/orderpolicy/OrderPolicyMapper.java

@@ -5,11 +5,13 @@ import java.util.*;
 import com.yc.ship.framework.common.pojo.PageResult;
 import com.yc.ship.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.yc.ship.framework.mybatis.core.mapper.BaseMapperX;
+import com.yc.ship.framework.tenant.core.aop.TenantIgnore;
 import com.yc.ship.module.trade.controller.admin.order.vo.order.OrderTotalPolicyVO;
 import com.yc.ship.module.trade.dal.dataobject.orderpolicy.OrderPolicyDO;
 import org.apache.ibatis.annotations.Mapper;
 import com.yc.ship.module.trade.controller.admin.orderpolicy.vo.*;
 import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
 
 /**
  * 订单使用的优惠政策 Mapper
@@ -48,4 +50,8 @@ public interface OrderPolicyMapper extends BaseMapperX<OrderPolicyDO> {
     List<OrderTotalPolicyVO> selectOrderPolicyStatsByOrderIds(@Param("orderIds") List<Long> orderIds);
 
     void deleteAllByOrderId(@Param("orderId")Long orderId);
+
+    @Update("UPDATE trade_order_policy SET deleted = #{deleted},update_time = now() WHERE id = #{id}")
+    @TenantIgnore
+    void updateDeletedById(@Param("id") Long id, @Param("deleted")  int deleted);
 }

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

@@ -699,8 +699,9 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
     @Transactional(rollbackFor = Exception.class)
     public void rollbackOrderUserDataVersion(Long orderId){
 
-        tradeOrderUserMapper.deleteAllByOrderId(orderId);
         //首先把旧数据删除
+        tradeOrderUserMapper.delete(TradeOrderUserDO::getOrderId,orderId);
+
         // ====================== 【关键1】加锁查询:锁住当前版本行 ======================
         // FOR UPDATE 行锁 → 并发请求会排队,绝对安全
 
@@ -721,8 +722,9 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
             TradeOrderUserDO a = new TradeOrderUserDO();
             BeanUtils.copyProperties(lastVersion, a);
             a.setSyncStatus("0");
-            int updateMain = tradeOrderUserMapper.insert(a);
-            if (!(updateMain ==1)) {
+            tradeOrderUserMapper.updateDeletedById(dataId,0);
+            boolean updateMain = tradeOrderUserMapper.insertOrUpdate(a);
+            if (!updateMain) {
                 throw new RuntimeException("主表回退失败");
             }
 
@@ -756,8 +758,8 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
     @Transactional(rollbackFor = Exception.class)
     public void rollbackOrderDetailDataVersion(Long orderId){
         //首先把旧数据删除
-        tradeDetailMapper.deleteAllByOrderId(orderId);
-
+        tradeDetailMapper.delete(TradeDetailDO::getOrderId,orderId);
+        
         // ====================== 【关键1】加锁查询:锁住当前版本行 ======================
         // FOR UPDATE 行锁 → 并发请求会排队,绝对安全
 
@@ -778,8 +780,9 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
             TradeDetailDO a = new TradeDetailDO();
             BeanUtils.copyProperties(lastVersion, a);
             a.setSyncStatus("0");
-            int updateMain = tradeDetailMapper.insert(a);
-            if (!(updateMain ==1)) {
+            tradeDetailMapper.updateDeletedById(dataId,0);
+            boolean updateMain = tradeDetailMapper.insertOrUpdate(a);
+            if (!updateMain) {
                 throw new RuntimeException("主表回退失败");
             }
 
@@ -813,8 +816,8 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
     @Transactional(rollbackFor = Exception.class)
     public void rollbackOrderDetailBaseDataVersion(Long orderId){
         //首先把旧数据删除
-        tradeDetailBaseMapper.deleteAllByOrderId(orderId);
-
+        tradeDetailBaseMapper.delete(TradeDetailBaseDO::getOrderId,orderId);
+        
         // ====================== 【关键1】加锁查询:锁住当前版本行 ======================
         // FOR UPDATE 行锁 → 并发请求会排队,绝对安全
 
@@ -835,8 +838,9 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
             TradeDetailBaseDO a = new TradeDetailBaseDO();
             BeanUtils.copyProperties(lastVersion, a);
 //            a.setSyncStatus("0");
-            int updateMain = tradeDetailBaseMapper.insert(a);
-            if (!(updateMain ==1)) {
+            tradeDetailBaseMapper.updateDeletedById(dataId,0);
+            boolean updateMain = tradeDetailBaseMapper.insertOrUpdate(a);
+            if (!updateMain) {
                 throw new RuntimeException("主表回退失败");
             }
 
@@ -870,7 +874,7 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
     @Transactional(rollbackFor = Exception.class)
     public void rollbackOrderTotalDataVersion(Long orderId){
         //首先把旧数据删除
-        tradeOrderTotalMapper.deleteAllByOrderId(orderId);
+        tradeOrderTotalMapper.delete(TradeOrderTotalDO::getOldOrderId,orderId);
 
         // ====================== 【关键1】加锁查询:锁住当前版本行 ======================
         // FOR UPDATE 行锁 → 并发请求会排队,绝对安全
@@ -892,8 +896,9 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
             TradeOrderTotalDO a = new TradeOrderTotalDO();
             BeanUtils.copyProperties(lastVersion, a);
             a.setSyncStatus("0");
-            int updateMain = tradeOrderTotalMapper.insert(a);
-            if (!(updateMain ==1)) {
+            tradeOrderTotalMapper.updateDeletedById(dataId,0);
+            boolean updateMain = tradeOrderTotalMapper.insertOrUpdate(a);
+            if (!updateMain) {
                 throw new RuntimeException("主表回退失败");
             }
             // ====================== 3. 查询【再上一版】 ======================
@@ -923,7 +928,7 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
     @Transactional(rollbackFor = Exception.class)
     public void rollbackOrderCountryDataVersion(Long orderId){
         //首先把旧数据删除
-        tradeOrderCountryMapper.deleteAllByOrderId(orderId);
+        tradeOrderCountryMapper.delete(TradeOrderCountryDO::getOrderId,orderId);
 
         // ====================== 【关键1】加锁查询:锁住当前版本行 ======================
         // FOR UPDATE 行锁 → 并发请求会排队,绝对安全
@@ -945,8 +950,9 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
             TradeOrderCountryDO a = new TradeOrderCountryDO();
             BeanUtils.copyProperties(lastVersion, a);
             a.setSyncStatus("0");
-            int updateMain = tradeOrderCountryMapper.insert(a);
-            if (!(updateMain ==1)) {
+            tradeOrderCountryMapper.updateDeletedById(dataId,0);
+            boolean updateMain = tradeOrderCountryMapper.insertOrUpdate(a);
+            if (!updateMain) {
                 throw new RuntimeException("主表回退失败");
             }
 
@@ -979,8 +985,8 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
 
     @Transactional(rollbackFor = Exception.class)
     public void rollbackOrderRoomModelDataVersion(Long orderId){
-        //首先把旧数据删除
-        tradeOrderRoomModelMapper.deleteAllByOrderId(orderId);
+        //首先把旧数据删除,26-6-8修改:作逻辑删除,然后回滚时手动设置deleted=0去insertOrUpdate
+        tradeOrderRoomModelMapper.delete(TradeOrderRoomModelDO::getOrderId,orderId);
 
         // ====================== 【关键1】加锁查询:锁住当前版本行 ======================
         // FOR UPDATE 行锁 → 并发请求会排队,绝对安全
@@ -1002,8 +1008,9 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
             TradeOrderRoomModelDO a = new TradeOrderRoomModelDO();
             BeanUtils.copyProperties(lastVersion, a);
             a.setSyncStatus("0");
-            int updateMain = tradeOrderRoomModelMapper.insert(a);
-            if (!(updateMain ==1)) {
+            tradeOrderRoomModelMapper.updateDeletedById(dataId,0);
+            boolean updateMain = tradeOrderRoomModelMapper.insertOrUpdate(a);
+            if (!updateMain) {
                 throw new RuntimeException("主表回退失败");
             }
 
@@ -1037,7 +1044,7 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
     @Transactional(rollbackFor = Exception.class)
     public void rollbackOrderVisitorDataVersion(Long orderId){
         //首先把旧数据删除
-        tradeVisitorMapper.deleteAllByOrderId(orderId);
+        tradeVisitorMapper.delete(TradeVisitorDO::getOrderId,orderId);
 
         // ====================== 【关键1】加锁查询:锁住当前版本行 ======================
         // FOR UPDATE 行锁 → 并发请求会排队,绝对安全
@@ -1059,8 +1066,9 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
             TradeVisitorDO a = new TradeVisitorDO();
             BeanUtils.copyProperties(lastVersion, a);
             a.setSyncStatus("0");
-            int updateMain = tradeVisitorMapper.insert(a);
-            if (!(updateMain ==1)) {
+            tradeVisitorMapper.updateDeletedById(dataId,0);
+            boolean updateMain = tradeVisitorMapper.insertOrUpdate(a);
+            if (!updateMain) {
                 throw new RuntimeException("主表回退失败");
             }
 
@@ -1094,7 +1102,7 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
     @Transactional(rollbackFor = Exception.class)
     public void rollbackOrderFloorDataVersion(Long orderId){
         //首先把旧数据删除
-        tradeOrderFloorMapper.deleteAllByOrderId(orderId);
+        tradeOrderFloorMapper.delete(TradeOrderFloorDO::getOrderId,orderId);
 
         // ====================== 【关键1】加锁查询:锁住当前版本行 ======================
         // FOR UPDATE 行锁 → 并发请求会排队,绝对安全
@@ -1116,8 +1124,9 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
             TradeOrderFloorDO a = new TradeOrderFloorDO();
             BeanUtils.copyProperties(lastVersion, a);
             a.setSyncStatus("0");
-            int updateMain = tradeOrderFloorMapper.insert(a);
-            if (!(updateMain ==1)) {
+            tradeOrderFloorMapper.updateDeletedById(dataId,0);
+            boolean updateMain = tradeOrderFloorMapper.insertOrUpdate(a);
+            if (!updateMain) {
                 throw new RuntimeException("主表回退失败");
             }
 
@@ -1151,7 +1160,7 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
     @Transactional(rollbackFor = Exception.class)
     public void rollbackOrderPolicyDataVersion(Long orderId){
         //首先把旧数据删除
-        orderPolicyMapper.deleteAllByOrderId(orderId);
+        orderPolicyMapper.delete(OrderPolicyDO::getOrderId,orderId);
 
         // ====================== 【关键1】加锁查询:锁住当前版本行 ======================
         // FOR UPDATE 行锁 → 并发请求会排队,绝对安全
@@ -1172,8 +1181,9 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
             // ====================== 2. 主表回退(直接把上版本插进去) ======================
             OrderPolicyDO a = new OrderPolicyDO();
             BeanUtils.copyProperties(lastVersion, a);
-            int updateMain = orderPolicyMapper.insert(a);
-            if (!(updateMain ==1)) {
+            orderPolicyMapper.updateDeletedById(dataId,0);
+            boolean updateMain = orderPolicyMapper.insertOrUpdate(a);
+            if (!updateMain) {
                 throw new RuntimeException("主表回退失败");
             }