xiaoyong931011
2021-09-26 9f03ae0b6bab4f2bb0abbe40ec66abd1d1ae87c4
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java
@@ -1,12 +1,16 @@
package cc.mrbird.febs.mall.service.impl;
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.entity.QueryRequest;
import cc.mrbird.febs.mall.dto.MallOrderInfoDto;
import cc.mrbird.febs.mall.entity.MallOrderInfo;
import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
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.vo.AdminMallOrderInfoVo;
import cc.mrbird.febs.mall.vo.AdminMallOrderVo;
import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
import cc.mrbird.febs.mall.vo.*;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -14,13 +18,31 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
@Slf4j
@Service
@RequiredArgsConstructor
public class AdminMallOrderService extends ServiceImpl<MallOrderInfoMapper, MallOrderInfo> implements IAdminMallOrderService {
    private final MallOrderInfoMapper mallOrderInfoMapper;
    private final MallExpressInfoMapper mallExpressInfoMapper;
    private final MallOrderItemMapper mallOrderItemMapper;
    private final MallOrderRefundMapper mallOrderRefundMapper;
    private final MallOrderRefundOperationMapper mallOrderRefundOperationMapper;
    private final MallOrderRefundAddressMapper mallOrderRefundAddressMapper;
    private final MallMoneyFlowMapper mallMoneyFlowMapper;
    private final IApiMallMemberWalletService iApiMallMemberWalletService;
    private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
    @Override
    public IPage<AdminMallOrderInfoVo> getOrderListInPage(MallOrderInfoDto mallOrderInfo, QueryRequest request) {
        Page<AdminMallOrderInfoVo> page = new Page<>(request.getPageNum(), request.getPageSize());
@@ -32,4 +54,279 @@
    public AdminMallOrderVo getMallOrderInfoById(long id) {
        return this.baseMapper.getMallOrderInfoById(id);
    }
    @Override
    public FebsResponse deliverGoods(DeliverGoodsDto deliverGoodsDto) {
        MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(deliverGoodsDto.getId());
        if(ObjectUtil.isEmpty(mallOrderInfo)){
            return new FebsResponse().fail().message("订单不存在,刷新后重试");
        }
        Integer status = mallOrderInfo.getStatus();
        if(2 != status){
            return new FebsResponse().fail().message("订单不是待发货状态");
        }
        String expressNo = deliverGoodsDto.getExpressNo();
        if(StrUtil.isEmpty(expressNo)){
            return new FebsResponse().fail().message("请输入物流单号");
        }
        String expressCom = deliverGoodsDto.getExpressCom();
        if(StrUtil.isEmpty(expressCom)){
            return new FebsResponse().fail().message("请输入物流公司");
        }
        MallExpressInfo mallExpressInfo = new MallExpressInfo();
        mallExpressInfo.setMemberId(mallOrderInfo.getMemberId());
        mallExpressInfo.setOrderId(mallOrderInfo.getId());
        mallExpressInfo.setExpressNo(expressNo);
        mallExpressInfo.setExpressCom(expressCom);
        mallExpressInfoMapper.insert(mallExpressInfo);
        mallOrderInfo.setStatus(3);
        mallOrderInfoMapper.updateById(mallOrderInfo);
        return new FebsResponse().success();
    }
    @Override
    public AdminOrderDetailVo getMallOrderDetailById(long id) {
        AdminOrderDetailVo adminOrderDetailVo = mallOrderInfoMapper.getMallOrderDetailById(id);
        MallExpressInfo mallExpressInfo = mallExpressInfoMapper.selectByOrderId(id);
        if(ObjectUtil.isNotEmpty(mallExpressInfo)){
            adminOrderDetailVo.setExpressNo(mallExpressInfo.getExpressNo());
            adminOrderDetailVo.setExpressCom(mallExpressInfo.getExpressCom());
        }
        List<MallOrderItem> mallOrderItems = mallOrderInfoMapper.getMallOrderItemByOrderId(id);
        if(CollUtil.isNotEmpty(mallOrderItems)){
            StringBuffer orderItems = new StringBuffer();
            for (MallOrderItem item : mallOrderItems){
                StringBuffer orderItem = new StringBuffer();
                orderItems.append(item.getGoodsName()+"-"+item.getCnt()+"*"+item.getPrice()+"-合计"+item.getAmount()+"; \n ");
                orderItems.append(orderItem);
            }
            adminOrderDetailVo.setOrderItems(orderItems.toString());
        }
        return adminOrderDetailVo;
    }
    @Override
    public IPage<AdminMallOrderRefundVo> getRefundListInPage(MallOrderRefundDto mallOrderRefundDto, QueryRequest request) {
        Page<AdminMallOrderRefundVo> page = new Page<>(request.getPageNum(), request.getPageSize());
        IPage<AdminMallOrderRefundVo> adminMallOrderRefundVos = mallOrderRefundMapper.selectRefundListInPage(page, mallOrderRefundDto);
        return adminMallOrderRefundVos;
    }
    @Override
    public IPage<AdminMallOrderRefundOperationVo> seeRefund(QueryRequest request, MallOrderRefund mallOrderRefund) {
        Page<AdminMallOrderRefundOperationVo> page = new Page<>(request.getPageNum(), request.getPageSize());
        IPage<AdminMallOrderRefundOperationVo> adminMallOrderRefundOperationVos = mallOrderRefundOperationMapper.selectRefundOperationInPage(page, mallOrderRefund);
        return adminMallOrderRefundOperationVos;
    }
    @Override
    public FebsResponse agreeRefund(Long id) {
        MallOrderRefund mallOrderRefund = mallOrderRefundMapper.selectById(id);
        if(ObjectUtil.isEmpty(mallOrderRefund)){
            return new FebsResponse().fail().message("系统繁忙,请刷新重试");
        }
        Integer status = mallOrderRefund.getStatus();
        if(status != 1){
            return new FebsResponse().fail().message("申请记录不是已申请状态,请刷新页面");
        }
        mallOrderRefund.setStatus(2);
        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 FebsResponse disagreeRefund(Long id) {
        MallOrderRefund mallOrderRefund = mallOrderRefundMapper.selectById(id);
        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);
        MallOrderRefundOperation mallOrderRefundOperation = new MallOrderRefundOperation();
        mallOrderRefundOperation.setRefundId(mallOrderRefund.getId());
        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();
    }
    @Override
    public FebsResponse refundConfirm(Long id) {
        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);
        MallOrderRefundOperation mallOrderRefundOperation = new MallOrderRefundOperation();
        mallOrderRefundOperation.setRefundId(mallOrderRefund.getId());
        mallOrderRefundOperation.setOrderId(mallOrderRefund.getOrderId());
        mallOrderRefundOperation.setContent("已退款到用户账户");
        mallOrderRefundOperationMapper.insert(mallOrderRefundOperation);
        MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(mallOrderRefund.getOrderId());
        if(ObjectUtil.isEmpty(mallOrderInfo)){
            return new FebsResponse().fail().message("系统繁忙,请刷新重试");
        }
        mallOrderInfo.setStatus(6);
        mallOrderInfoMapper.updateById(mallOrderInfo);
        //用户钱包增加对应的余额
        iApiMallMemberWalletService.addBalance(mallOrderInfo.getAmount(),mallOrderInfo.getMemberId());
        //新增一条资金流水
        MallMoneyFlow mallMoneyFlow = new MallMoneyFlow();
        mallMoneyFlow.setMemberId(mallOrderRefund.getMemberId());
        mallMoneyFlow.setOrderNo(mallOrderInfo.getOrderNo());
        mallMoneyFlow.setType(4);
        mallMoneyFlow.setAmount(mallOrderInfo.getAmount());
        mallMoneyFlowMapper.insert(mallMoneyFlow);
        return new FebsResponse().success();
    }
    @Override
    public IPage<AdminMallOrderRefundAddressVo> getMallOrderRefundAddressInPage(MallOrderRefundAddressDto mallOrderRefundAddressDto, QueryRequest request) {
        Page<AdminMallOrderRefundAddressVo> page = new Page<>(request.getPageNum(), request.getPageSize());
        IPage<AdminMallOrderRefundAddressVo> adminMallOrderRefundAddressVos = mallOrderRefundAddressMapper.getMallOrderRefundAddressInPage(page, mallOrderRefundAddressDto);
        return adminMallOrderRefundAddressVos;
    }
    @Override
    public AdminMallOrderRefundAddressVo getMallOrderRefundAddressInfoById(long id) {
        AdminMallOrderRefundAddressVo AdminMallOrderRefundAddressVo = mallOrderRefundAddressMapper.getMallOrderRefundAddressInfoById(id);
        return AdminMallOrderRefundAddressVo;
    }
    @Override
    public FebsResponse addressUpdate(AddressUpdateDto addressUpdateDto) {
        Long id = addressUpdateDto.getId();
        MallOrderRefundAddress mallOrderRefundAddress = mallOrderRefundAddressMapper.selectById(id);
        mallOrderRefundAddress.setName(addressUpdateDto.getName());
        mallOrderRefundAddress.setPhone(addressUpdateDto.getPhone());
        mallOrderRefundAddress.setAddress(addressUpdateDto.getAddress());
        mallOrderRefundAddressMapper.updateById(mallOrderRefundAddress);
        return new FebsResponse().success();
    }
    @Override
    public FebsResponse deleteAddress(Long id) {
        mallOrderRefundAddressMapper.deleteById(id);
        return new FebsResponse().success();
    }
    @Override
    public FebsResponse addAddress(AddAddressDto addAddressDto) {
        MallOrderRefundAddress mallOrderRefundAddress = new MallOrderRefundAddress();
        mallOrderRefundAddress.setName(addAddressDto.getName());
        mallOrderRefundAddress.setPhone(addAddressDto.getPhone());
        mallOrderRefundAddress.setAddress(addAddressDto.getAddress());
        mallOrderRefundAddressMapper.insert(mallOrderRefundAddress);
        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();
    }
}