xiaoyong931011
2022-09-22 a56aa58c55f966c38cb8b5fc969eb1018fad5ce8
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java
@@ -2,11 +2,15 @@
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.entity.QueryRequest;
import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
import cc.mrbird.febs.common.enumerates.OrderDeliveryStateEnum;
import cc.mrbird.febs.mall.dto.*;
import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.mapper.*;
import cc.mrbird.febs.mall.service.IAdminMallOrderService;
import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
import cc.mrbird.febs.mall.service.IMallMoneyFlowService;
import cc.mrbird.febs.mall.vo.*;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
@@ -17,12 +21,15 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.List;
@Slf4j
@Service
@RequiredArgsConstructor
@Transactional
public class AdminMallOrderService extends ServiceImpl<MallOrderInfoMapper, MallOrderInfo> implements IAdminMallOrderService {
    private final MallOrderInfoMapper mallOrderInfoMapper;
@@ -37,14 +44,42 @@
    private final MallOrderRefundAddressMapper mallOrderRefundAddressMapper;
    private final MallGoodsCommentMapper mallGoodsCommentMapper;
    private final MallMoneyFlowMapper mallMoneyFlowMapper;
    private final IApiMallMemberWalletService iApiMallMemberWalletService;
    private final MallMemberPaymentMapper mallMemberPaymentMapper;
    private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
    private final IMallMoneyFlowService mallMoneyFlowService;
    private final MallRefundMapper mallRefundMapper;
    @Override
    public IPage<MallOrderInfo> findOrderListInPage(MallOrderInfo mallOrderInfo, QueryRequest request) {
        Page<MallOrderInfo> page = new Page<>(request.getPageNum(), request.getPageSize());
        return this.baseMapper.selectInPage(mallOrderInfo, page);
    }
    @Override
    public IPage<AdminMallOrderInfoVo> getOrderListInPage(MallOrderInfoDto mallOrderInfo, QueryRequest request) {
        Page<AdminMallOrderInfoVo> page = new Page<>(request.getPageNum(), request.getPageSize());
        IPage<AdminMallOrderInfoVo> adminMallOrderInfoVos = this.baseMapper.selectOrderListInPage(page, mallOrderInfo);
        if(CollUtil.isNotEmpty(adminMallOrderInfoVos.getRecords())){
            for(AdminMallOrderInfoVo adminMallOrderInfoVo : adminMallOrderInfoVos.getRecords()){
                Long orderId = adminMallOrderInfoVo.getId();
                List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(orderId);
                if(CollUtil.isNotEmpty(mallOrderItemList)){
                    StringBuffer stringBuffer = new StringBuffer();
                    for(MallOrderItem mallOrderItem : mallOrderItemList){
                        stringBuffer.append(mallOrderItem.getGoodsName()).append("*").append(mallOrderItem.getCnt()).append(";");
                    }
                    adminMallOrderInfoVo.setGoodsName(stringBuffer.toString());
                }
            }
        }
        return adminMallOrderInfoVos;
    }
@@ -63,6 +98,10 @@
        if(2 != status){
            return new FebsResponse().fail().message("订单不是待发货状态");
        }
        Integer deliveryType = mallOrderInfo.getDeliveryType();
        if(2 != deliveryType){
            return new FebsResponse().fail().message("订单的配送方式不是快递");
        }
        String expressNo = deliverGoodsDto.getExpressNo();
        if(StrUtil.isEmpty(expressNo)){
            return new FebsResponse().fail().message("请输入物流单号");
@@ -79,6 +118,7 @@
        mallExpressInfoMapper.insert(mallExpressInfo);
        mallOrderInfo.setStatus(3);
        mallOrderInfo.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_ING.getValue());
        mallOrderInfoMapper.updateById(mallOrderInfo);
        return new FebsResponse().success();
    }
@@ -125,13 +165,29 @@
        if(ObjectUtil.isEmpty(mallOrderRefund)){
            return new FebsResponse().fail().message("系统繁忙,请刷新重试");
        }
        mallOrderRefund.setStatus(2);
        Integer status = mallOrderRefund.getStatus();
        if(status != 1){
            return new FebsResponse().fail().message("申请记录不是已申请状态,请刷新页面");
        }
        mallOrderRefund.setStatus(5);
        mallOrderRefundMapper.updateById(mallOrderRefund);
        MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(mallOrderRefund.getOrderId());
        mallOrderInfo.setStatus(6);
        mallOrderInfoMapper.updateById(mallOrderInfo);
        if(!"微信支付".equals(mallOrderInfo.getPayMethod()) && !"支付宝支付".equals(mallOrderInfo.getPayMethod())){
            BigDecimal amount = mallOrderRefund.getAmount();
            //用户钱包增加对应的余额
            iApiMallMemberWalletService.addBalance(amount, mallOrderInfo.getMemberId());
            mallMoneyFlowService.addMoneyFlow(mallOrderRefund.getMemberId(), amount, MoneyFlowTypeEnum.REFUND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue());
        }
        MallOrderRefundOperation mallOrderRefundOperation = new MallOrderRefundOperation();
        mallOrderRefundOperation.setRefundId(mallOrderRefund.getId());
        mallOrderRefundOperation.setOrderId(mallOrderRefund.getOrderId());
        mallOrderRefundOperation.setContent("已同意退款申请");
        mallOrderRefundOperation.setContent("已同意退款不退货申请");
        mallOrderRefundOperationMapper.insert(mallOrderRefundOperation);
        return new FebsResponse().success();
@@ -143,6 +199,10 @@
        if(ObjectUtil.isEmpty(mallOrderRefund)){
            return new FebsResponse().fail().message("系统繁忙,请刷新重试");
        }
        Integer status = mallOrderRefund.getStatus();
        if(status != 1){
            return new FebsResponse().fail().message("申请记录不是已申请状态,请刷新页面");
        }
        mallOrderRefund.setStatus(3);
        mallOrderRefundMapper.updateById(mallOrderRefund);
@@ -151,6 +211,10 @@
        mallOrderRefundOperation.setOrderId(mallOrderRefund.getOrderId());
        mallOrderRefundOperation.setContent("不同意退款申请");
        mallOrderRefundOperationMapper.insert(mallOrderRefundOperation);
        //恢复订单状态
        MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(mallOrderRefund.getOrderId());
        mallOrderInfo.setStatus(mallOrderRefund.getBeforeStatus());
        mallOrderInfoMapper.updateById(mallOrderInfo);
        return new FebsResponse().success();
    }
@@ -160,6 +224,10 @@
        MallOrderRefund mallOrderRefund = mallOrderRefundMapper.selectById(id);
        if(ObjectUtil.isEmpty(mallOrderRefund)){
            return new FebsResponse().fail().message("系统繁忙,请刷新重试");
        }
        Integer status = mallOrderRefund.getStatus();
        if(status != 4){
            return new FebsResponse().fail().message("申请记录不是已提交物流信息状态,请刷新页面");
        }
        mallOrderRefund.setStatus(5);
        mallOrderRefundMapper.updateById(mallOrderRefund);
@@ -177,17 +245,12 @@
        mallOrderInfo.setStatus(6);
        mallOrderInfoMapper.updateById(mallOrderInfo);
        BigDecimal refundAmount = mallOrderRefund.getAmount();
        //用户钱包增加对应的余额
        iApiMallMemberWalletService.addBalance(mallOrderInfo.getAmount(),mallOrderInfo.getMemberId());
        iApiMallMemberWalletService.addBalance(refundAmount, mallOrderInfo.getMemberId());
        //新增一条资金流水
        MallMoneyFlow mallMoneyFlow = new MallMoneyFlow();
        mallMoneyFlow.setMemberId(mallOrderRefund.getMemberId());
        mallMoneyFlow.setOrderNo(mallOrderInfo.getOrderNo());
        mallMoneyFlow.setType(4);
        mallMoneyFlow.setAmount(mallOrderInfo.getAmount());
        mallMoneyFlowMapper.insert(mallMoneyFlow);
        mallMoneyFlowService.addMoneyFlow(mallOrderRefund.getMemberId(), refundAmount, MoneyFlowTypeEnum.REFUND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue());
        return new FebsResponse().success();
    }
@@ -231,5 +294,163 @@
        return new FebsResponse().success();
    }
    @Override
    public List<AdminAddAddressTreeVo> getRefundAddress() {
        List<AdminAddAddressTreeVo> list = mallOrderRefundAddressMapper.getRefundAddress();
        return list;
    }
    @Override
    public FebsResponse withAddressUpdate(WithAddressUpdateDto withAddressUpdateDto) {
        Long addressId = withAddressUpdateDto.getAddressId();
        MallOrderRefundAddress mallOrderRefundAddress = mallOrderRefundAddressMapper.selectById(addressId);
        MallOrderRefund mallOrderRefund = mallOrderRefundMapper.selectById(withAddressUpdateDto.getId());
        if(ObjectUtil.isEmpty(mallOrderRefund)){
            return new FebsResponse().fail().message("系统繁忙,请刷新重试");
        }
        Integer status = mallOrderRefund.getStatus();
        if(status != 1){
            return new FebsResponse().fail().message("申请记录不是已申请状态,请刷新页面");
        }
        mallOrderRefund.setStatus(2);
        mallOrderRefund.setName(mallOrderRefundAddress.getName());
        mallOrderRefund.setPhone(mallOrderRefundAddress.getPhone());
        mallOrderRefund.setAddress(mallOrderRefundAddress.getAddress());
        mallOrderRefundMapper.updateById(mallOrderRefund);
        MallOrderRefundOperation mallOrderRefundOperation = new MallOrderRefundOperation();
        mallOrderRefundOperation.setRefundId(mallOrderRefund.getId());
        mallOrderRefundOperation.setOrderId(mallOrderRefund.getOrderId());
        mallOrderRefundOperation.setContent("已同意退款退货申请");
        mallOrderRefundOperationMapper.insert(mallOrderRefundOperation);
        return new FebsResponse().success();
    }
    @Override
    public AdminMallOrderRefundVo getMallOrderRefundInfoById(long id) {
        return mallOrderRefundMapper.getMallOrderRefundInfoById(id);
    }
    @Override
    public IPage<AdminPayMethodVo> getPayMethodListInPage(PayMethodDto payMethodDto, QueryRequest request) {
        payMethodDto.setType("PAYMENT_METHOD");
        Page<AdminPayMethodVo> page = new Page<>(request.getPageNum(), request.getPageSize());
        IPage<AdminPayMethodVo> adminPayMethodVos = dataDictionaryCustomMapper.getPayMethodListInPage(page, payMethodDto);
        return adminPayMethodVos;
    }
    @Override
    public AdminMallPayMethodEditVo getMallPayMethodEditInfoById(long id) {
        AdminMallPayMethodEditVo adminMallPayMethodEditVo = dataDictionaryCustomMapper.getMallPayMethodEditInfoById(id);
        return adminMallPayMethodEditVo;
    }
    @Override
    public FebsResponse payMethodEdit(PayMethodEditDto payMethodEditDto) {
        DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectById(payMethodEditDto.getId());
        if(ObjectUtil.isEmpty(dataDictionaryCustom)){
            return new FebsResponse().fail().message("系统繁忙,请刷新重试");
        }
        dataDictionaryCustom.setValue(payMethodEditDto.getValue());
        dataDictionaryCustomMapper.updateById(dataDictionaryCustom);
        return new FebsResponse().success();
    }
    @Override
    public FebsResponse cancelOrder(Long id) {
        MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(id);
        if(ObjectUtil.isEmpty(mallOrderInfo)){
            return new FebsResponse().fail().message("系统繁忙,请刷新重试");
        }
        Integer status = mallOrderInfo.getStatus();
        if(status != 2){
            return new FebsResponse().fail().message("订单不是代发货状态");
        }
        mallOrderInfo.setStatus(7);
        mallOrderInfoMapper.updateById(mallOrderInfo);
        return new FebsResponse().success();
    }
    @Override
    public AdminMallMemberPaymentVo getMallMemberRefundPayInfoByFlowId(long id) {
        AdminMallMemberPaymentVo adminMallMemberPaymentVo = new AdminMallMemberPaymentVo();
        MallOrderRefund mallOrderRefund = mallOrderRefundMapper.selectById(id);
        AdminMallMemberPaymentVo adminMallMemberPaymentVoa = mallMemberPaymentMapper.getMallMemberPaymentInfoByMemberId(mallOrderRefund.getMemberId());
        if(ObjectUtil.isNotEmpty(adminMallMemberPaymentVoa)){
            adminMallMemberPaymentVo = adminMallMemberPaymentVoa;
        }
        return adminMallMemberPaymentVo;
    }
    @Override
    public IPage<AdminMallGoodsCommentVo> getCommentListInPage(AdminMallGoodsCommentDto adminMallGoodsCommentDto, QueryRequest request) {
        Page<AdminMallGoodsCommentVo> page = new Page<>(request.getPageNum(), request.getPageSize());
        IPage<AdminMallGoodsCommentVo> adminMallGoodsCommentVos = mallGoodsCommentMapper.getCommentListInPage(page, adminMallGoodsCommentDto);
        return adminMallGoodsCommentVos;
    }
    @Override
    public FebsResponse showStateSwitchOn(Long id) {
        MallGoodsComment mallGoodsComment = mallGoodsCommentMapper.selectById(id);
        if (ObjectUtil.isEmpty(mallGoodsComment)) {
            return new FebsResponse().fail().message("评论不存在,请刷新当前页面");
        }
        mallGoodsComment.setShowState(MallGoodsComment.SHOW_STATE_ENABLE);
        mallGoodsCommentMapper.updateById(mallGoodsComment);
        return new FebsResponse().success();
    }
    @Override
    public FebsResponse showStateSwitchOff(Long id) {
        MallGoodsComment mallGoodsComment = mallGoodsCommentMapper.selectById(id);
        if (ObjectUtil.isEmpty(mallGoodsComment)) {
            return new FebsResponse().fail().message("评论不存在,请刷新当前页面");
        }
        mallGoodsComment.setShowState(MallGoodsComment.SHOW_STATE_DISABLED);
        mallGoodsCommentMapper.updateById(mallGoodsComment);
        return new FebsResponse().success();
    }
    @Override
    public void updateOrderStateAndDeliveryState(Long id, int value, int value1) {
        mallOrderInfoMapper.updateOrderStateAndDeliveryState(id,value,value1);
    }
    @Override
    public IPage<MallRefundEntity> getOrderRefundListInPage(MallRefundEntity mallRefundEntity, QueryRequest request) {
        Page<MallRefundEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
        IPage<MallRefundEntity> mallRefundEntityIPage = mallRefundMapper.getOrderRefundListInPage(page, mallRefundEntity);
        List<MallRefundEntity> records = mallRefundEntityIPage.getRecords();
        if(CollUtil.isNotEmpty(records)){
            for(MallRefundEntity mallRefundEntityPic : records){
                String refundPic = mallRefundEntityPic.getRefundPic();
                if(StrUtil.isNotEmpty(refundPic)){
                    String[] split = StrUtil.split(refundPic, ",");
                    mallRefundEntityPic.setRefundPicList(split);
                }
            }
        }
        return mallRefundEntityIPage;
    }
    @Override
    public void deliverGoodsByOrderNo(DeliverGoodsDto deliverGoodsDto) {
        MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectByOrderNo(deliverGoodsDto.getOrderNo());
        if (mallOrderInfo == null) {
            return;
        }
        MallExpressInfo mallExpressInfo = new MallExpressInfo();
        mallExpressInfo.setMemberId(mallOrderInfo.getMemberId());
        mallExpressInfo.setOrderId(mallOrderInfo.getId());
        mallExpressInfo.setExpressNo(deliverGoodsDto.getExpressNo());
        mallExpressInfo.setExpressCom(deliverGoodsDto.getExpressCom());
        mallExpressInfo.setExpressCode(deliverGoodsDto.getExpressCode());
        mallExpressInfoMapper.insert(mallExpressInfo);
        mallOrderInfo.setStatus(3);
        mallOrderInfoMapper.updateById(mallOrderInfo);
    }
}