wwh 1 тиждень тому
батько
коміт
fea7fe44c0

+ 3 - 0
baqing-shop/src/main/java/com/ruoyi/web/modules/order/constant/OrderConstants.java

@@ -71,6 +71,9 @@ public final class OrderConstants
71 71
 
72 72
     public static final String CLOSE_TYPE_BUYER_CANCEL = "2";
73 73
 
74
+    /** 支付失败/退款关闭(含售后完结) */
75
+    public static final String CLOSE_TYPE_REFUND = "4";
76
+
74 77
     public static final String PAY_TYPE_WECHAT = "1";
75 78
 
76 79
     public static final String CONFIG_PAY_TIMEOUT_MINUTES = "order.pay.timeout.minutes";

+ 3 - 0
baqing-shop/src/main/java/com/ruoyi/web/modules/order/mapper/BizOrderMapper.java

@@ -32,6 +32,9 @@ public interface BizOrderMapper
32 32
 
33 33
     int updateForPay(BizOrder order);
34 34
 
35
+    int updateForAftersaleClose(@Param("orderId") Long orderId, @Param("shopId") Long shopId,
36
+            @Param("closeType") String closeType, @Param("updateBy") String updateBy);
37
+
35 38
     int updateForCancelPay(@Param("orderId") Long orderId, @Param("memberId") Long memberId,
36 39
             @Param("closeType") String closeType);
37 40
 

+ 8 - 0
baqing-shop/src/main/java/com/ruoyi/web/modules/order/service/impl/SellerAftersaleServiceImpl.java

@@ -4,14 +4,17 @@ import java.util.Date;
4 4
 import java.util.List;
5 5
 import org.springframework.beans.factory.annotation.Autowired;
6 6
 import org.springframework.stereotype.Service;
7
+import org.springframework.transaction.annotation.Transactional;
7 8
 import com.ruoyi.common.exception.ServiceException;
8 9
 import com.ruoyi.common.utils.StringUtils;
9 10
 import com.ruoyi.web.modules.account.util.MemberMobileUtils;
10 11
 import com.ruoyi.web.modules.order.constant.OrderAppConstants;
12
+import com.ruoyi.web.modules.order.constant.OrderConstants;
11 13
 import com.ruoyi.web.modules.order.domain.BizOrderAftersale;
12 14
 import com.ruoyi.web.modules.order.dto.SellerAftersaleFinishDTO;
13 15
 import com.ruoyi.web.modules.order.dto.SellerAftersaleQuery;
14 16
 import com.ruoyi.web.modules.order.mapper.BizOrderAftersaleMapper;
17
+import com.ruoyi.web.modules.order.mapper.BizOrderMapper;
15 18
 import com.ruoyi.web.modules.order.service.ISellerAftersaleService;
16 19
 import com.ruoyi.web.modules.order.support.OrderAppSupport;
17 20
 import com.ruoyi.web.modules.order.vo.SellerAftersaleDetailVO;
@@ -23,6 +26,9 @@ public class SellerAftersaleServiceImpl implements ISellerAftersaleService
23 26
     @Autowired
24 27
     private BizOrderAftersaleMapper aftersaleMapper;
25 28
 
29
+    @Autowired
30
+    private BizOrderMapper orderMapper;
31
+
26 32
     @Autowired
27 33
     private OrderAppSupport orderAppSupport;
28 34
 
@@ -50,6 +56,7 @@ public class SellerAftersaleServiceImpl implements ISellerAftersaleService
50 56
     }
51 57
 
52 58
     @Override
59
+    @Transactional(rollbackFor = Exception.class)
53 60
     public void finish(Long shopId, Long aftersaleId, SellerAftersaleFinishDTO dto, String operator)
54 61
     {
55 62
         BizOrderAftersale aftersale = aftersaleMapper.selectByIdAndShop(aftersaleId, shopId);
@@ -82,6 +89,7 @@ public class SellerAftersaleServiceImpl implements ISellerAftersaleService
82 89
         {
83 90
             throw new ServiceException(OrderAppConstants.MSG_AFTERSALE_ALREADY_FINISHED);
84 91
         }
92
+        orderMapper.updateForAftersaleClose(aftersale.getOrderId(), shopId, OrderConstants.CLOSE_TYPE_REFUND, operator);
85 93
     }
86 94
 
87 95
     private void enrichListRow(SellerAftersaleListRowVO row)

+ 12 - 0
baqing-shop/src/main/resources/mapper/order/BizOrderMapper.xml

@@ -244,6 +244,18 @@
244 244
           and del_flag = '0'
245 245
     </update>
246 246
 
247
+    <update id="updateForAftersaleClose">
248
+        update biz_order
249
+        set order_status = '4',
250
+            close_type = #{closeType},
251
+            update_by = #{updateBy},
252
+            update_time = now()
253
+        where order_id = #{orderId}
254
+          and shop_id = #{shopId}
255
+          and order_status in ('1', '2', '3')
256
+          and del_flag = '0'
257
+    </update>
258
+
247 259
     <select id="selectExpiredPendingPay" resultMap="BizOrderResult">
248 260
         <include refid="selectOrderVo"/>
249 261
         where order_status = '0'

+ 8 - 0
baqing-shop/src/test/java/com/ruoyi/web/modules/order/service/SellerAftersaleServiceImplTest.java

@@ -15,10 +15,12 @@ import org.mockito.Mock;
15 15
 import org.mockito.junit.jupiter.MockitoExtension;
16 16
 import com.ruoyi.common.exception.ServiceException;
17 17
 import com.ruoyi.web.modules.order.constant.OrderAppConstants;
18
+import com.ruoyi.web.modules.order.constant.OrderConstants;
18 19
 import com.ruoyi.web.modules.order.domain.BizOrderAftersale;
19 20
 import com.ruoyi.web.modules.order.dto.SellerAftersaleFinishDTO;
20 21
 import com.ruoyi.web.modules.order.dto.SellerAftersaleQuery;
21 22
 import com.ruoyi.web.modules.order.mapper.BizOrderAftersaleMapper;
23
+import com.ruoyi.web.modules.order.mapper.BizOrderMapper;
22 24
 import com.ruoyi.web.modules.order.service.impl.SellerAftersaleServiceImpl;
23 25
 import com.ruoyi.web.modules.order.support.OrderAppSupport;
24 26
 import com.ruoyi.web.modules.order.vo.SellerAftersaleDetailVO;
@@ -34,6 +36,9 @@ class SellerAftersaleServiceImplTest
34 36
     @Mock
35 37
     private BizOrderAftersaleMapper aftersaleMapper;
36 38
 
39
+    @Mock
40
+    private BizOrderMapper orderMapper;
41
+
37 42
     @Mock
38 43
     private OrderAppSupport orderAppSupport;
39 44
 
@@ -76,6 +81,7 @@ class SellerAftersaleServiceImplTest
76 81
         BizOrderAftersale aftersale = new BizOrderAftersale();
77 82
         aftersale.setAftersaleId(AFTERSALE_ID);
78 83
         aftersale.setShopId(SHOP_ID);
84
+        aftersale.setOrderId(500L);
79 85
         aftersale.setAftersaleStatus(OrderAppConstants.AFTERSALE_STATUS_IN_PROGRESS);
80 86
         when(aftersaleMapper.selectByIdAndShop(AFTERSALE_ID, SHOP_ID)).thenReturn(aftersale);
81 87
         when(aftersaleMapper.updateForFinish(any(BizOrderAftersale.class))).thenReturn(1);
@@ -86,6 +92,7 @@ class SellerAftersaleServiceImplTest
86 92
         sellerAftersaleService.finish(SHOP_ID, AFTERSALE_ID, dto, "seller01");
87 93
 
88 94
         verify(aftersaleMapper).updateForFinish(any(BizOrderAftersale.class));
95
+        verify(orderMapper).updateForAftersaleClose(500L, SHOP_ID, OrderConstants.CLOSE_TYPE_REFUND, "seller01");
89 96
     }
90 97
 
91 98
     @Test
@@ -104,6 +111,7 @@ class SellerAftersaleServiceImplTest
104 111
                 () -> sellerAftersaleService.finish(SHOP_ID, AFTERSALE_ID, dto, "seller01"));
105 112
         assertEquals(OrderAppConstants.MSG_AFTERSALE_ALREADY_FINISHED, ex.getMessage());
106 113
         verify(aftersaleMapper, never()).updateForFinish(any());
114
+        verify(orderMapper, never()).updateForAftersaleClose(any(), any(), any(), any());
107 115
     }
108 116
 
109 117
     @Test