From 8bd3f6063098a4346fb8465da726793bf9684477 Mon Sep 17 00:00:00 2001
From: xin <1099200748@qq.com>
Date: Tue, 19 Aug 2025 22:21:57 +0800
Subject: [PATCH] 售后审核优化

---
 oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderOperationLogServiceImpl.java |   23 +++++++
 oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderServiceImpl.java             |    3 
 oying-common/src/main/java/com/oying/utils/enums/ReturnAuditEnum.java                          |    3 
 oying-system/src/main/java/com/oying/modules/sh/mapper/OrderReturnMapper.java                  |    5 +
 oying-system/src/main/resources/mapper/sh/OrderReturnMapper.xml                                |   11 +++
 oying-system/src/main/java/com/oying/modules/hwc/service/impl/CallbackServiceImpl.java         |    6 +-
 oying-system/src/main/java/com/oying/modules/sh/service/OrderReturnService.java                |   14 ++--
 oying-system/src/main/java/com/oying/modules/sh/domain/vo/OrderReturnResponse.java             |   28 +++++++++
 oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderReturnServiceImpl.java       |   43 +++++++++----
 oying-system/src/main/java/com/oying/modules/sh/rest/OrderReturnController.java                |   23 ++++---
 10 files changed, 118 insertions(+), 41 deletions(-)

diff --git a/oying-common/src/main/java/com/oying/utils/enums/ReturnAuditEnum.java b/oying-common/src/main/java/com/oying/utils/enums/ReturnAuditEnum.java
index a154601..54a2bf2 100644
--- a/oying-common/src/main/java/com/oying/utils/enums/ReturnAuditEnum.java
+++ b/oying-common/src/main/java/com/oying/utils/enums/ReturnAuditEnum.java
@@ -15,7 +15,8 @@
     ZERO(0, "申请"),
     ONE(1, "拒绝"),
     TWO(2, "通过"),
-    THREE(3, "未知");
+    THREE(3, "取消"),
+    FOUR(4, "未知");
 
     private final Integer key;
 
diff --git a/oying-system/src/main/java/com/oying/modules/hwc/service/impl/CallbackServiceImpl.java b/oying-system/src/main/java/com/oying/modules/hwc/service/impl/CallbackServiceImpl.java
index ddd360b..3af99bd 100644
--- a/oying-system/src/main/java/com/oying/modules/hwc/service/impl/CallbackServiceImpl.java
+++ b/oying-system/src/main/java/com/oying/modules/hwc/service/impl/CallbackServiceImpl.java
@@ -5,8 +5,8 @@
 import com.oying.modules.hwc.utils.SignUtil;
 import com.oying.modules.hwc.utils.XmlUtils;
 import com.oying.modules.security.config.SwiftPassProperties;
-import com.oying.modules.sh.domain.OrderReturn;
 import com.oying.modules.sh.domain.vo.OrderResponse;
+import com.oying.modules.sh.domain.vo.OrderReturnResponse;
 import com.oying.modules.sh.service.OrderReturnService;
 import com.oying.modules.sh.service.OrderService;
 import com.oying.utils.enums.OrderStatusEnum;
@@ -94,8 +94,8 @@
                 String sign_type = map.get("sign_type");
                 String reSign = map.get("sign");
                 if (map.containsKey("sign")) {
-                    OrderReturn order = returnService.getByReturnNum(map.get("out_refund_no"));
-                    PayTypeEnum status = PayTypeEnum.find(order.getPayType());
+                    OrderReturnResponse order = returnService.getByReturnNum(map.get("out_refund_no"));
+                    PayTypeEnum status = PayTypeEnum.find(order.getOrderReturn().getPayType());
                     if (SignUtil.verifySign(reSign, sign_type, map, properties, status)) {
                         log.error("汇旺财退款验证签名错误!:{}", map.toString());
                     } else {
diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/vo/OrderReturnResponse.java b/oying-system/src/main/java/com/oying/modules/sh/domain/vo/OrderReturnResponse.java
new file mode 100644
index 0000000..512bd71
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/sh/domain/vo/OrderReturnResponse.java
@@ -0,0 +1,28 @@
+package com.oying.modules.sh.domain.vo;
+
+import com.oying.modules.sh.domain.Order;
+import com.oying.modules.sh.domain.OrderAddressSnapshot;
+import com.oying.modules.sh.domain.OrderOperationLog;
+import com.oying.modules.sh.domain.OrderReturn;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @author xin
+ * @description
+ * @date 2025/8/19 22:14
+ */
+@Getter
+@Setter
+@AllArgsConstructor
+public class OrderReturnResponse {
+
+    private OrderReturn orderReturn;
+
+    private OrderAddressSnapshot address;
+
+    private List<OrderOperationLog> operation;
+}
diff --git a/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderReturnMapper.java b/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderReturnMapper.java
index b94b03d..59a4b19 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderReturnMapper.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderReturnMapper.java
@@ -24,9 +24,12 @@
 
     OrderReturn getByReturnNum(String returnNum);
 
-    void updatePayStatus(String returnNum, String payState, String payTime);
+    void updatePayStatus(@Param("returnNum") String returnNum, @Param("refundStatus") String refundStatus, @Param("successTime") String successTime);
 
     Long countAll(@Param("criteria") OrderReturnQueryCriteria criteria, @Param("blurry") String blurry);
 
     OrderReturn getByOrderNum(String orderNum, Integer status);
+
+    void updateStatus(@Param("returnNum") String returnNum, @Param("returnStatus") Integer returnStatus,
+                      @Param("value") String value, @Param("auditStatus") Integer auditStatus);
 }
diff --git a/oying-system/src/main/java/com/oying/modules/sh/rest/OrderReturnController.java b/oying-system/src/main/java/com/oying/modules/sh/rest/OrderReturnController.java
index af2c0a3..d18b3ae 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/rest/OrderReturnController.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/rest/OrderReturnController.java
@@ -50,11 +50,25 @@
         return new ResponseEntity<>(R.success(orderReturnService.queryAll(criteria, page)), HttpStatus.OK);
     }
 
+    @ApiOperation("订单号订单售后")
+    @GetMapping(value = "/getByReturnNum")
+    public ResponseEntity<Object> getByReturnNum(@RequestParam String returnNum) {
+        return new ResponseEntity<>(R.success(orderReturnService.getByReturnNum(returnNum)), HttpStatus.OK);
+    }
+
     @PostMapping
     @Log("申请订单售后")
     @ApiOperation("申请订单售后")
     public ResponseEntity<Object> createOrderReturn(@Validated @RequestBody ReturnOrder resources) {
         orderReturnService.create(resources);
+        return new ResponseEntity<>(R.success(), HttpStatus.CREATED);
+    }
+
+    @PostMapping("cancel")
+    @Log("取消订单售后")
+    @ApiOperation("取消订单售后")
+    public ResponseEntity<Object> cancel(@RequestParam String returnNum) {
+        orderReturnService.cancel(returnNum);
         return new ResponseEntity<>(R.success(), HttpStatus.CREATED);
     }
 
@@ -74,14 +88,5 @@
     public ResponseEntity<Object> updateOrderReturn(@Validated @RequestBody OrderReturn resources) {
         orderReturnService.update(resources);
         return new ResponseEntity<>(R.success(), HttpStatus.NO_CONTENT);
-    }
-
-    @DeleteMapping
-    @Log("删除退款订单")
-    @ApiOperation("删除退款订单")
-    @PreAuthorize("@el.check('orderReturn:del')")
-    public ResponseEntity<Object> deleteOrderReturn(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
-        orderReturnService.deleteAll(ids);
-        return new ResponseEntity<>(R.success(), HttpStatus.OK);
     }
 }
diff --git a/oying-system/src/main/java/com/oying/modules/sh/service/OrderReturnService.java b/oying-system/src/main/java/com/oying/modules/sh/service/OrderReturnService.java
index 3ba6a84..f8f1c9e 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/service/OrderReturnService.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/service/OrderReturnService.java
@@ -9,6 +9,7 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.oying.modules.sh.domain.request.AuditOrderReturn;
 import com.oying.modules.sh.domain.request.ReturnOrder;
+import com.oying.modules.sh.domain.vo.OrderReturnResponse;
 import com.oying.utils.PageResult;
 
 /**
@@ -39,17 +40,14 @@
     */
     void create(ReturnOrder resources);
 
+
+    void cancel(String returnNum);
+
     /**
     * 编辑
     * @param resources /
     */
     void update(OrderReturn resources);
-
-    /**
-    * 多选删除
-    * @param ids /
-    */
-    void deleteAll(List<Long> ids);
 
     /**
     * 导出数据
@@ -59,9 +57,9 @@
     */
     void download(List<OrderReturn> all, HttpServletResponse response) throws IOException;
 
-    OrderReturn getByReturnNum(String outRefundNo);
+    OrderReturnResponse getByReturnNum(String outRefundNo);
 
-    void updatePayStatus(String outRefundNo, String status, String time);
+    void updatePayStatus(String outRefundNo, String refundStatus, String successTime);
 
     void audit(AuditOrderReturn resources);
 }
diff --git a/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderOperationLogServiceImpl.java b/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderOperationLogServiceImpl.java
index bf9450b..a091f1b 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderOperationLogServiceImpl.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderOperationLogServiceImpl.java
@@ -90,10 +90,10 @@
                 orderOperationLogMapper.insert(log1);
                 response.getOrder().setOrderStatus(OrderStatusEnum.TWO.getKey());
                 response.getOrder().setOrderStatusDescribe(OrderStatusEnum.TWO.getValue());
-            case FOUR:
+            case THREE:
                 userType = ConstantsKey.MERCHANT;
                 break;
-            case THREE:
+            case FOUR:
                 orderMapper.updateRider(response.getOrder().getOrderNum(), SecurityUtils.getCurrentUserId(), SecurityUtils.getCurrentUsername(), cardName);
             case FIVE:
             case SIX:
@@ -117,7 +117,26 @@
                 orderMapper.updateOrderStatus(response.getOrder().getOrderNum(), statusEnum.getKey(), statusEnum.getValue());
                 statusEnum = OrderStatusEnum.EIGHT;
                 break;
+            case TEN:
+            case TWELVE:
+                userType = ConstantsKey.BUYER;
+                orderMapper.updateOrderStatus(response.getOrder().getOrderNum(), statusEnum.getKey(), statusEnum.getValue());
+                break;
+            case FIFTEEN:
+                userType = ConstantsKey.BUYER;
+                orderMapper.updateOrderStatus(response.getOrder().getOrderNum(), OrderStatusEnum.EIGHT.getKey(), OrderStatusEnum.EIGHT.getValue());
+                break;
+            case ELEVEN:
+                userType = ConstantsKey.MERCHANT;
+                orderMapper.updateOrderStatus(response.getOrder().getOrderNum(), OrderStatusEnum.EIGHT.getKey(), OrderStatusEnum.EIGHT.getValue());
+                break;
+            case THIRTEEN:
+            case FOURTEEN:
+                userType = ConstantsKey.MERCHANT;
+                orderMapper.updateOrderStatus(response.getOrder().getOrderNum(), statusEnum.getKey(), statusEnum.getValue());
+                break;
             default:
+                throw new BadRequestException("状态错误");
         }
         if (username == null) {
             username = SecurityUtils.getCurrentUsername();
diff --git a/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderReturnServiceImpl.java b/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderReturnServiceImpl.java
index 55473c5..d5add54 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderReturnServiceImpl.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderReturnServiceImpl.java
@@ -6,8 +6,9 @@
 import com.oying.modules.sh.domain.OrderReturn;
 import com.oying.modules.sh.domain.request.AuditOrderReturn;
 import com.oying.modules.sh.domain.request.ReturnOrder;
-import com.oying.modules.sh.service.OrderReturnProductSnapshotService;
-import com.oying.modules.sh.service.OrderService;
+import com.oying.modules.sh.domain.vo.OrderResponse;
+import com.oying.modules.sh.domain.vo.OrderReturnResponse;
+import com.oying.modules.sh.service.*;
 import com.oying.utils.*;
 import com.oying.utils.enums.GenerateEnum;
 import com.oying.utils.enums.OrderStatusEnum;
@@ -16,7 +17,6 @@
 import lombok.RequiredArgsConstructor;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.oying.modules.sh.service.OrderReturnService;
 import com.oying.modules.sh.domain.dto.OrderReturnQueryCriteria;
 import com.oying.modules.sh.mapper.OrderReturnMapper;
 import org.springframework.stereotype.Service;
@@ -37,11 +37,14 @@
 public class OrderReturnServiceImpl extends ServiceImpl<OrderReturnMapper, OrderReturn> implements OrderReturnService {
 
     private final OrderReturnMapper orderReturnMapper;
+    private final OrderOperationLogService operationLogService;
     private final OrderService orderService;
     private final OrderReturnProductSnapshotService productSnapshotService;
     private final RedisUtils redisUtils;
     private final SwiftPassService swiftPassService;
+    private final OrderAddressSnapshotService addressSnapshotService;
     private static final String ORDER_RETURN_KEY = "oying:order:refund";
+    private static final String ORDER_CODE = "REFUND";
 
     @Override
     public PageResult<OrderReturn> queryAll(OrderReturnQueryCriteria criteria, Page<Object> page) {
@@ -57,13 +60,16 @@
     }
 
     @Override
-    public OrderReturn getByReturnNum(String returnNum) {
-        return orderReturnMapper.getByReturnNum(returnNum);
+    public OrderReturnResponse getByReturnNum(String returnNum) {
+        OrderReturn orderReturn = orderReturnMapper.getByReturnNum(returnNum);
+        return new OrderReturnResponse(orderReturn,
+                addressSnapshotService.queryByOrderNum(orderReturn.getOrderNum()),
+                operationLogService.getByOrderNum(orderReturn.getOrderNum(), ORDER_CODE));
     }
 
     @Override
-    public void updatePayStatus(String returnNum, String status, String time) {
-        orderReturnMapper.updatePayStatus(returnNum, status, time);
+    public void updatePayStatus(String returnNum, String refundStatus, String successTime) {
+        orderReturnMapper.updatePayStatus(returnNum, refundStatus, successTime);
     }
 
     @Override
@@ -117,7 +123,22 @@
         returnOrder.setPhotos(resources.getPhotos());
         returnOrder.setAuditStatus(ReturnAuditEnum.ZERO.getKey());
         orderReturnMapper.insert(returnOrder);
+    }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void cancel(String returnNum) {
+        OrderReturn orderReturn = orderReturnMapper.getByReturnNum(returnNum);
+        if (orderReturn == null) {
+            throw new BadRequestException("订单不存在!");
+        }
+        if (!orderReturn.getUserId().equals(SecurityUtils.getCurrentUserId())) {
+            throw new BadRequestException("不能修改他人订单");
+        }
+        orderReturnMapper.updateStatus(returnNum, OrderStatusEnum.FIFTEEN.getKey(), OrderStatusEnum.FIFTEEN.getValue(),
+                ReturnAuditEnum.THREE.getKey());
+        OrderResponse response = orderService.getByOrderNum(orderReturn.getOrderNum());
+        operationLogService.create(response, OrderStatusEnum.FIFTEEN, null);
     }
 
     @Override
@@ -133,7 +154,7 @@
     public synchronized void audit(AuditOrderReturn resources) {
         OrderReturn orderReturn = orderReturnMapper.getByReturnNum(resources.getReturnNum());
         if (orderReturn == null) {
-            throw new BadRequestException("订单不存在");
+            throw new BadRequestException("订单不存在!");
         }
         if (!Objects.equals(orderReturn.getReturnStatus(), ReturnAuditEnum.ZERO.getKey())) {
             throw new BadRequestException("订单已处理或取消");
@@ -174,12 +195,6 @@
         // 审核信息
         orderReturn.setAuditMessage(resources.getMessage());
         orderReturnMapper.updateById(orderReturn);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void deleteAll(List<Long> ids) {
-        orderReturnMapper.deleteBatchIds(ids);
     }
 
     @Override
diff --git a/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderServiceImpl.java b/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderServiceImpl.java
index 27ef9c0..5c4657e 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderServiceImpl.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderServiceImpl.java
@@ -57,6 +57,7 @@
     private static final String DESCRIBE = "哦应:";
     private static final String ORDER_KEY = "oying:order";
     private static final String ORDER_STORE_KEY = "oying:order:store";
+    private static final String ORDER_CODE = "ORDER";
 
     @Override
     public PageResult<Order> queryAll(OrderQueryCriteria criteria, Page<Object> page) {
@@ -267,7 +268,7 @@
     public OrderResponse getByOrderNum(String orderNum) {
         return new OrderResponse(orderMapper.getByOrderNum(orderNum),
                 addressSnapshotService.queryByOrderNum(orderNum),
-                operationLogService.getByOrderNum(orderNum, null));
+                operationLogService.getByOrderNum(orderNum, ORDER_CODE));
     }
 
     @Override
diff --git a/oying-system/src/main/resources/mapper/sh/OrderReturnMapper.xml b/oying-system/src/main/resources/mapper/sh/OrderReturnMapper.xml
index 56d0931..edeaadc 100644
--- a/oying-system/src/main/resources/mapper/sh/OrderReturnMapper.xml
+++ b/oying-system/src/main/resources/mapper/sh/OrderReturnMapper.xml
@@ -132,8 +132,15 @@
 
     <update id="updatePayStatus">
         update sh_order_return
-        set return_status = #{payState},
-            success_time  = #{payTime}
+        set refund_status = #{refundStatus},
+            success_time  = #{successTime}
+        where return_num = #{returnNum}
+    </update>
+    <update id="updateStatus">
+        update sh_order_return
+        set return_status = #{returnStatus},
+            return_status_describe = #{value},
+            audit_status  = #{auditStatus}
         where return_num = #{returnNum}
     </update>
 

--
Gitblit v1.9.3