xiaoyong931011
2023-10-23 df998a061e22b13297e02eee97e2418e4bbeaa1a
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.utils.RedisUtils;
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;
@@ -19,6 +23,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.List;
@Slf4j
@@ -39,6 +44,8 @@
    private final MallOrderRefundAddressMapper mallOrderRefundAddressMapper;
    private final MallGoodsCommentMapper mallGoodsCommentMapper;
    private final MallMoneyFlowMapper mallMoneyFlowMapper;
    private final IApiMallMemberWalletService iApiMallMemberWalletService;
@@ -46,11 +53,31 @@
    private final MallMemberPaymentMapper mallMemberPaymentMapper;
    private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
    private final IMallMoneyFlowService mallMoneyFlowService;
    @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);
//        List<AdminMallOrderInfoVo> records = adminMallOrderInfoVos.getRecords();
//        if(CollUtil.isNotEmpty(records)){
//            for(AdminMallOrderInfoVo adminMallOrderInfoVo : records){
//                Long id = adminMallOrderInfoVo.getId();
//                List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectbyOrderId(id);
//                StringBuffer stringBuffer = new StringBuffer();
//                for(MallOrderItem mallOrderItem : mallOrderItemList){
//                    stringBuffer.append(mallOrderItem.getGoodsName()+"*"+mallOrderItem.getCnt()+";");
//                }
//                adminMallOrderInfoVo.setGoodsName(stringBuffer.toString());
//            }
//        }
        return adminMallOrderInfoVos;
    }
@@ -143,15 +170,24 @@
        mallOrderInfoMapper.updateById(mallOrderInfo);
        if(!"微信支付".equals(mallOrderInfo.getPayMethod()) && !"支付宝支付".equals(mallOrderInfo.getPayMethod())){
            BigDecimal amount = mallOrderRefund.getAmount();
            //用户钱包增加对应的余额
            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);
            iApiMallMemberWalletService.addBalance(amount, mallOrderInfo.getMemberId());
            mallMoneyFlowService.addMoneyFlow(mallOrderRefund.getMemberId(), amount, MoneyFlowTypeEnum.REFUND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue());
            //积分池减少对应的数值
            String redisKey = "scorePool";
            String scorePoolRedis = redisUtils.getString(redisKey);
            if(StrUtil.isBlank(scorePoolRedis)){
                redisUtils.set(redisKey,0,0L);
            }
            BigDecimal scorePoolOld = new BigDecimal(redisUtils.getString(redisKey));
            if(scorePoolOld.compareTo(amount) < 0){
                redisUtils.set(redisKey,0,0L);
            }else{
                redisUtils.set(redisKey,scorePoolOld.subtract(amount).intValue(),0L);
            }
        }
        MallOrderRefundOperation mallOrderRefundOperation = new MallOrderRefundOperation();
@@ -189,6 +225,7 @@
        return new FebsResponse().success();
    }
    private final RedisUtils redisUtils;
    @Override
    public FebsResponse refundConfirm(Long id) {
        MallOrderRefund mallOrderRefund = mallOrderRefundMapper.selectById(id);
@@ -215,17 +252,24 @@
        mallOrderInfo.setStatus(6);
        mallOrderInfoMapper.updateById(mallOrderInfo);
        BigDecimal refundAmount = mallOrderRefund.getAmount();
        //用户钱包增加对应的余额
        iApiMallMemberWalletService.addBalance(mallOrderInfo.getAmount(),mallOrderInfo.getMemberId());
        iApiMallMemberWalletService.addBalance(refundAmount, mallOrderInfo.getMemberId());
        //积分池减少对应的数值
        String redisKey = "scorePool";
        String scorePoolRedis = redisUtils.getString(redisKey);
        if(StrUtil.isBlank(scorePoolRedis)){
            redisUtils.set(redisKey,0,0L);
        }
        BigDecimal scorePoolOld = new BigDecimal(redisUtils.getString(redisKey));
        if(scorePoolOld.compareTo(refundAmount) < 0){
            redisUtils.set(redisKey,0,0L);
        }else{
            redisUtils.set(redisKey,scorePoolOld.subtract(refundAmount).intValue(),0L);
        }
        //新增一条资金流水
        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();
    }
@@ -359,5 +403,89 @@
        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 FebsResponse delOrder(Long id) {
        MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(id);
        if(ObjectUtil.isEmpty(mallOrderInfo)){
            return new FebsResponse().fail().message("订单不存在,请刷新重试");
        }
        Integer status = mallOrderInfo.getStatus();
        if(status != 7){
            return new FebsResponse().fail().message("订单不是已取消状态");
        }
        mallOrderInfoMapper.deleteById(id);
        return new FebsResponse().success();
    }
    @Override
    public FebsResponse takeGoods(Long id) {
        MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(id);
        if(ObjectUtil.isEmpty(mallOrderInfo)){
            return new FebsResponse().fail().message("订单不存在,刷新后重试");
        }
        Integer status = mallOrderInfo.getStatus();
        if(2 != status){
            return new FebsResponse().fail().message("订单不是待发货状态");
        }
        mallOrderInfo.setStatus(3);
        mallOrderInfoMapper.updateById(mallOrderInfo);
        return new FebsResponse().success();
    }
    @Override
    public IPage<AdminMallMoneyFlowVo> orderMoneyFlow(QueryRequest request, MallOrderInfo mallOrderInfo) {
        MallOrderInfo mallOrder = this.baseMapper.selectById(mallOrderInfo.getId());
        Page<AdminMallMoneyFlowVo> page = new Page<>(request.getPageNum(), request.getPageSize());
        IPage<AdminMallMoneyFlowVo> adminMallMoneyFlowVos = mallMoneyFlowMapper.selectOrderMoneyFlowInPage(page, mallOrder);
        return adminMallMoneyFlowVos;
    }
    @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);
    }
}