Administrator
2025-07-21 b65ec94141b46eee27eab3e78e7551ab737a93e0
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java
@@ -3,6 +3,9 @@
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.entity.QueryRequest;
import cc.mrbird.febs.common.enumerates.*;
import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.utils.AppContants;
import cc.mrbird.febs.common.utils.LoginUserUtil;
import cc.mrbird.febs.mall.dto.*;
import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.mapper.*;
@@ -14,6 +17,7 @@
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
@@ -22,6 +26,7 @@
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@Slf4j
@@ -78,12 +83,12 @@
                                .append("-")
                                .append(mallOrderItem.getSkuName())
                                .append("*").append(mallOrderItem.getCnt()).append(";");
                        if(ObjectUtil.isNotEmpty(mallOrderItem.getMemberInviteId())){
                            MallMember mallMember = mallMemberMapper.selectInfoByInviteId(mallOrderItem.getMemberInviteId());
                            if(ObjectUtil.isNotEmpty(mallMember)){
                                adminMallOrderInfoVo.setRefererName(mallMember.getName());
                            }
                        }
//                        if(ObjectUtil.isNotEmpty(mallOrderItem.getMemberInviteId())){
//                            MallMember mallMember = mallMemberMapper.selectInfoByInviteId(mallOrderItem.getMemberInviteId());
//                            if(ObjectUtil.isNotEmpty(mallMember)){
//                                adminMallOrderInfoVo.setRefererName(mallMember.getName());
//                            }
//                        }
                    }
                    adminMallOrderInfoVo.setGoodsName(stringBuffer.toString());
                }
@@ -121,6 +126,7 @@
        }
        MallExpressInfo mallExpressInfo = new MallExpressInfo();
        mallExpressInfo.setMemberId(mallOrderInfo.getMemberId());
        mallExpressInfo.setOrderNo(mallOrderInfo.getOrderNo());
        mallExpressInfo.setOrderId(mallOrderInfo.getId());
        mallExpressInfo.setExpressNo(expressNo);
        mallExpressInfo.setExpressCom(expressCom);
@@ -136,8 +142,15 @@
    @Override
    public AdminOrderDetailVo getMallOrderDetailById(long id) {
        AdminOrderDetailVo adminOrderDetailVo = mallOrderInfoMapper.getMallOrderDetailById(id);
        MallExpressInfo mallExpressInfo = mallExpressInfoMapper.selectByOrderId(id);
        if(ObjectUtil.isNotEmpty(mallExpressInfo)){
        MallExpressInfo mallExpressInfo = mallExpressInfoMapper.selectOne(
                Wrappers.lambdaQuery(MallExpressInfo.class)
                        .eq(MallExpressInfo::getOrderId, id)
                        .eq(MallExpressInfo::getOrderNo, adminOrderDetailVo.getOrderNo())
                        .last("limit 1")
        );
//        MallExpressInfo mallExpressInfo = mallExpressInfoMapper.selectByOrderId(id);
        if(ObjectUtil.isNotNull(mallExpressInfo)){
            adminOrderDetailVo.setExpressNo(mallExpressInfo.getExpressNo());
            adminOrderDetailVo.setExpressCom(mallExpressInfo.getExpressCom());
        }
@@ -492,9 +505,15 @@
        if(StrUtil.isEmpty(expressCom)){
            return new FebsResponse().fail().message("请输入物流公司");
        }
        MallExpressInfo mallExpressInfo = mallExpressInfoMapper.selectByOrderId(mallOrderInfo.getId());
        MallExpressInfo mallExpressInfo = mallExpressInfoMapper.selectOne(
                Wrappers.lambdaQuery(MallExpressInfo.class)
                        .eq(MallExpressInfo::getOrderId, mallOrderInfo.getId())
                        .eq(MallExpressInfo::getOrderNo, mallOrderInfo.getOrderNo())
                        .last("limit 1")
        );
//        MallExpressInfo mallExpressInfo = mallExpressInfoMapper.selectByOrderId(mallOrderInfo.getId());
        if(ObjectUtil.isEmpty(mallExpressInfo)){
        if(ObjectUtil.isNull(mallExpressInfo)){
            return new FebsResponse().fail().message("请先发货");
        }
        mallExpressInfo.setExpressNo(expressNo);
@@ -502,6 +521,72 @@
        mallExpressInfoMapper.updateById(mallExpressInfo);
        return new FebsResponse().success();
    }
    @Override
    public FebsResponse confirmOrder(AdminRefundOrderDto dto) {
        Integer type = dto.getType();
        MallOrderInfo orderInfo = this.baseMapper.selectById(dto.getOrderId());
        if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) {
            throw new FebsException("订单不存在");
        }
        if (orderInfo.getStatus() == OrderStatusEnum.REFUNDING.getValue()) {
            throw new FebsException("已提交退款, 请勿重复提交");
        }
        if (orderInfo.getStatus() != OrderStatusEnum.WAIT_SHIPPING.getValue()
                && orderInfo.getStatus() != OrderStatusEnum.WAIT_FINISH.getValue()) {
            throw new FebsException("该订单不能退款");
        }
        Integer beforeStatus = orderInfo.getStatus();
        Long memberId = orderInfo.getMemberId();
        orderInfo.setStatus(OrderStatusEnum.REFUNDING.getValue());
        this.baseMapper.updateById(orderInfo);
        MallOrderRefund orderRefund = mallOrderRefundMapper.selectOrderRefundByOrderId(orderInfo.getId());
        if (orderRefund == null) {
            orderRefund = new MallOrderRefund();
            orderRefund.setOrderId(orderInfo.getId());
            orderRefund.setMemberId(memberId);
            orderRefund.setType(type);
            orderRefund.setRefundTime(new Date());
            orderRefund.setBeforeStatus(beforeStatus);
            orderRefund.setStatus(OrderRefundStatusEnum.REFUND_APPLY.getValue());
            // 未发货则退运费,发货了则不退
            if (beforeStatus == 2) {
                orderRefund.setAmount(orderInfo.getAmount().add(orderInfo.getCarriage()));
            } else {
                orderRefund.setAmount(orderInfo.getAmount());
            }
            orderRefund.setDesp(StrUtil.format("系统发起退款{}", orderRefund.getAmount()));
            orderRefund.setReason(StrUtil.format("系统发起退款{}", orderRefund.getAmount()));
            mallOrderRefundMapper.insert(orderRefund);
        } else {
            orderRefund.setType(type);
            orderRefund.setRefundTime(new Date());
            orderRefund.setBeforeStatus(beforeStatus);
            orderRefund.setStatus(OrderRefundStatusEnum.REFUND_APPLY.getValue());
            // 未发货则退运费,发货了则不退
            if (beforeStatus == 2) {
                orderRefund.setAmount(orderInfo.getAmount().add(orderInfo.getCarriage()));
            } else {
                orderRefund.setAmount(orderInfo.getAmount());
            }
            orderRefund.setDesp(StrUtil.format("系统发起退款{}", orderRefund.getAmount()));
            orderRefund.setReason(StrUtil.format("系统发起退款{}", orderRefund.getAmount()));
            mallOrderRefundMapper.updateById(orderRefund);
        }
        MallOrderRefundOperation operation = new MallOrderRefundOperation();
        operation.setOrderId(orderInfo.getId());
        operation.setRefundId(orderRefund.getId());
        operation.setContent(StrUtil.format("系统发起退款{}", orderRefund.getAmount()));
        mallOrderRefundOperationMapper.insert(operation);
        return new FebsResponse().success().message("操作成功");
    }
    @Override
@@ -514,6 +599,7 @@
        MallExpressInfo mallExpressInfo = new MallExpressInfo();
        mallExpressInfo.setMemberId(mallOrderInfo.getMemberId());
        mallExpressInfo.setOrderId(mallOrderInfo.getId());
        mallExpressInfo.setOrderNo(deliverGoodsDto.getOrderNo());
        mallExpressInfo.setExpressNo(deliverGoodsDto.getExpressNo());
        mallExpressInfo.setExpressCom(deliverGoodsDto.getExpressCom());
        mallExpressInfo.setExpressCode(deliverGoodsDto.getExpressCode());