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.DeliverGoodsDto; import cc.mrbird.febs.mall.dto.MallOrderInfoDto; import cc.mrbird.febs.mall.dto.MallOrderRefundDto; 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.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; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.List; @Slf4j @Service @RequiredArgsConstructor public class AdminMallOrderService extends ServiceImpl implements IAdminMallOrderService { private final MallOrderInfoMapper mallOrderInfoMapper; private final MallExpressInfoMapper mallExpressInfoMapper; private final MallOrderItemMapper mallOrderItemMapper; private final MallOrderRefundMapper mallOrderRefundMapper; private final MallOrderRefundOperationMapper mallOrderRefundOperationMapper; private final MallMoneyFlowMapper mallMoneyFlowMapper; private final IApiMallMemberWalletService iApiMallMemberWalletService; @Override public IPage getOrderListInPage(MallOrderInfoDto mallOrderInfo, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); IPage adminMallOrderInfoVos = this.baseMapper.selectOrderListInPage(page, mallOrderInfo); return adminMallOrderInfoVos; } @Override 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 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 getRefundListInPage(MallOrderRefundDto mallOrderRefundDto, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); IPage adminMallOrderRefundVos = mallOrderRefundMapper.selectRefundListInPage(page, mallOrderRefundDto); return adminMallOrderRefundVos; } @Override public IPage seeRefund(QueryRequest request, MallOrderRefund mallOrderRefund) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); IPage 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("系统繁忙,请刷新重试"); } 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("系统繁忙,请刷新重试"); } mallOrderRefund.setStatus(3); 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 refundConfirm(Long id) { MallOrderRefund mallOrderRefund = mallOrderRefundMapper.selectById(id); if(ObjectUtil.isEmpty(mallOrderRefund)){ 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(); } }