From a34b9a6418a8874dc0851cb4e19d189339dd5133 Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Mon, 04 Aug 2025 15:23:35 +0800 Subject: [PATCH] feat(ai): 添加 AI 用户答题功能 --- src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java | 133 +++++++++++++++++++++++++++++++++++++++----- 1 files changed, 117 insertions(+), 16 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java index 0f87fc5..6189f60 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java @@ -2,10 +2,10 @@ 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.common.enumerates.OrderStatusEnum; +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.*; @@ -17,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; @@ -25,6 +26,7 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.util.Date; import java.util.List; @Slf4j @@ -81,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()); } @@ -124,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); @@ -139,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()); } @@ -194,7 +204,15 @@ //用户钱包增加对应的余额 iApiMallMemberWalletService.addBalance(amount, mallOrderInfo.getMemberId()); - mallMoneyFlowService.addMoneyFlow(mallOrderRefund.getMemberId(), amount, MoneyFlowTypeEnum.REFUND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue()); + mallMoneyFlowService.addMoneyFlow( + mallOrderInfo.getMemberId(), + amount, + ScoreFlowTypeEnum.REFUND.getValue(), + mallOrderInfo.getOrderNo(), + FlowTypeEnum.BALANCE.getValue(), + StrUtil.format(ScoreFlowTypeEnum.REFUND.getDesc(),amount), + 2 + ); } MallOrderRefundOperation mallOrderRefundOperation = new MallOrderRefundOperation(); @@ -263,7 +281,17 @@ iApiMallMemberWalletService.addBalance(refundAmount, mallOrderInfo.getMemberId()); //新增一条资金流水 - mallMoneyFlowService.addMoneyFlow(mallOrderRefund.getMemberId(), refundAmount, MoneyFlowTypeEnum.REFUND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue()); + + + mallMoneyFlowService.addMoneyFlow( + mallOrderInfo.getMemberId(), + refundAmount, + ScoreFlowTypeEnum.REFUND.getValue(), + mallOrderInfo.getOrderNo(), + FlowTypeEnum.BALANCE.getValue(), + StrUtil.format(ScoreFlowTypeEnum.REFUND.getDesc(),refundAmount), + 2 + ); return new FebsResponse().success(); } @@ -477,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); @@ -487,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 @@ -499,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()); -- Gitblit v1.9.1