xin
2025-08-19 8bd3f6063098a4346fb8465da726793bf9684477
售后审核优化
1 files added
9 files modified
159 ■■■■ changed files
oying-common/src/main/java/com/oying/utils/enums/ReturnAuditEnum.java 3 ●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/hwc/service/impl/CallbackServiceImpl.java 6 ●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/sh/domain/vo/OrderReturnResponse.java 28 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/sh/mapper/OrderReturnMapper.java 5 ●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/sh/rest/OrderReturnController.java 23 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/sh/service/OrderReturnService.java 14 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderOperationLogServiceImpl.java 23 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderReturnServiceImpl.java 43 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderServiceImpl.java 3 ●●●● patch | view | raw | blame | history
oying-system/src/main/resources/mapper/sh/OrderReturnMapper.xml 11 ●●●● patch | view | raw | blame | history
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;
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 {
oying-system/src/main/java/com/oying/modules/sh/domain/vo/OrderReturnResponse.java
New file
@@ -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;
}
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);
}
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);
    }
}
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);
}
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();
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
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
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>