mitao
2024-07-26 357bf93f7fa56e414ad54d4fbfbf6bd97da5b1d2
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderReturnRequestServiceImpl.java
@@ -40,6 +40,7 @@
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.function.Function;
import java.util.regex.Matcher;
@@ -236,13 +237,38 @@
        if (orderReturnRequest.getAuditStatus() != AuditStatusEnum.TO_BE_REVIEWED) {
            throw new ServiceException("该售后已被审核");
        }
        Order order = orderMapper.selectById(orderReturnRequest.getOrderId());
        if (dto.getAuditStatus() == AuditStatusEnum.PASSED) {
            orderReturnRequest.setStatus(ReturnRequestStatusEnum.TO_BE_RETURNED);
            if (orderReturnRequest.getRequestType()
                    .equals(RequestTypeEnum.REFUNDS_AND_RETURNS)) {
                orderReturnRequest.setStatus(ReturnRequestStatusEnum.TO_BE_RETURNED);
            } else {
                orderReturnRequest.setStatus(ReturnRequestStatusEnum.COMPLETED);
                if (Objects.nonNull(order)) {
                    Paylog paylog = paylogService.lambdaQuery()
                            .eq(Paylog::getOutTradeNo, order.getOrderNo())
                            .last("limit 1").one();
                    if (StringUtils.isNotNull(paylog)) {
                        PaymentMethodEnum paymentMethod = order.getPaymentMethod();
                        boolean result = handleRefund(paymentMethod, paylog,
                                paylog.getOutTradeNo());
                        if (result) {
                            paylog.setState(3);// 已退款
                            paylogService.updateById(paylog);
                        }
                    }
                }
            }
            orderReturnRequest.setAuditStatus(AuditStatusEnum.PASSED);
        } else {
            orderReturnRequest.setStatus(ReturnRequestStatusEnum.REJECTED);
            orderReturnRequest.setAuditStatus(AuditStatusEnum.REJECTED);
            orderReturnRequest.setRefuseReason(dto.getRefuseComment());
            if (Objects.nonNull(order)) {
                order.setIsRequest(1);
                orderMapper.updateById(order);
            }
        }
        orderReturnRequest.setAuditTime(LocalDateTime.now());
        this.updateById(orderReturnRequest);