rentaiming
2024-07-20 ed4f07531b9cb0794e976a14cee3b591dec8d4f6
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderReturnRequestServiceImpl.java
@@ -8,6 +8,7 @@
import com.ruoyi.common.core.enums.AuditStatusEnum;
import com.ruoyi.common.core.enums.OrderStatusEnum;
import com.ruoyi.common.core.enums.PaymentMethodEnum;
import com.ruoyi.common.core.enums.PointStatusEnum;
import com.ruoyi.common.core.enums.RequestTypeEnum;
import com.ruoyi.common.core.enums.ReturnRequestStatusEnum;
import com.ruoyi.common.core.exception.ServiceException;
@@ -28,11 +29,14 @@
import com.ruoyi.system.api.domain.Order;
import com.ruoyi.system.api.domain.dto.LogisticsDTO;
import com.ruoyi.system.api.domain.dto.MemberDTO;
import com.ruoyi.system.api.domain.dto.MemberPointsDTO;
import com.ruoyi.system.api.domain.dto.OrderReturnDTO;
import com.ruoyi.system.api.domain.dto.updMembeOneDTO;
import com.ruoyi.system.api.domain.vo.Express100VO;
import com.ruoyi.system.api.domain.vo.OrderReturnVO;
import com.ruoyi.system.api.feignClient.MemberClient;
import com.ruoyi.system.api.feignClient.SysUserClient;
import io.seata.spring.annotation.GlobalTransactional;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
@@ -248,7 +252,8 @@
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    @GlobalTransactional(rollbackFor = Exception.class)
    @Transactional
    public void confirmReturnRequest(Long id) {
        OrderReturnRequest orderReturnRequest = getOrderReturnRequest(id);
        if (orderReturnRequest.getStatus()
@@ -268,14 +273,31 @@
        String orderNo = order.getOrderNo();
        Paylog paylog = paylogService.lambdaQuery().eq(Paylog::getOutTradeNo, orderNo)
                .last("limit 1").one();
        PaymentMethodEnum paymentMethod = order.getPaymentMethod();
        if (StringUtils.isNotNull(paylog)) {
            PaymentMethodEnum paymentMethod = order.getPaymentMethod();
            boolean result = handleRefund(paymentMethod, paylog, orderNo);
            if (result) {
                paylog.setState(3);// 已退款
                paylogService.updateById(paylog);
            }
        }
        // 扣除订单积分
        Member member = memberClient.getMembeOne(order.getMemberId(), SecurityConstants.INNER)
                .getData();
        if (StringUtils.isNotNull(member)) {
            MemberPointsDTO memberPointsDTO = new MemberPointsDTO();
            memberPointsDTO.setMemberId(order.getMemberId());
            memberPointsDTO.setPointsType(1);
            memberPointsDTO.setPointsStatus(PointStatusEnum.INCREASE);
            memberPointsDTO.setPoints(order.getPoints());
            memberClient.addMemberPoints(memberPointsDTO);
            updMembeOneDTO updMembeOneDTO = new updMembeOneDTO();
            updMembeOneDTO.setMemberId(order.getMemberId());
            updMembeOneDTO.setType(2);
            updMembeOneDTO.setTotalPoints(Math.max(member.getTotalPoints() - order.getPoints(), 0));
            memberClient.updMembeOne(updMembeOneDTO, SecurityConstants.INNER);
        }
    }
    private boolean handleRefund(PaymentMethodEnum paymentMethod, Paylog paylog, String orderNo) {