From f16f74cacb9ef0ae4be89ed15353b6a449479d8c Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Wed, 28 May 2025 13:38:09 +0800
Subject: [PATCH] feat(mall): 添加轮播图背景图片功能

---
 src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java |  252 ++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 232 insertions(+), 20 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 da38eb6..030d529 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,11 +2,16 @@
 
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.common.entity.QueryRequest;
+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.*;
 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 +24,8 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 
 @Slf4j
@@ -39,6 +46,8 @@
 
     private final MallOrderRefundAddressMapper mallOrderRefundAddressMapper;
 
+    private final MallGoodsCommentMapper mallGoodsCommentMapper;
+
     private final MallMoneyFlowMapper mallMoneyFlowMapper;
 
     private final IApiMallMemberWalletService iApiMallMemberWalletService;
@@ -46,6 +55,10 @@
     private final MallMemberPaymentMapper mallMemberPaymentMapper;
 
     private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
+    private final IMallMoneyFlowService mallMoneyFlowService;
+    private final MallRefundMapper mallRefundMapper;
+    private final MallMemberMapper mallMemberMapper;
+
 
     @Override
     public IPage<MallOrderInfo> findOrderListInPage(MallOrderInfo mallOrderInfo, QueryRequest request) {
@@ -57,6 +70,29 @@
     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();
+                adminMallOrderInfoVo.setGoodsAmount(adminMallOrderInfoVo.getAmount().subtract(adminMallOrderInfoVo.getCarriage()));
+                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.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());
+//                            }
+//                        }
+                    }
+                    adminMallOrderInfoVo.setGoodsName(stringBuffer.toString());
+                }
+            }
+        }
         return adminMallOrderInfoVos;
     }
 
@@ -75,6 +111,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("请输入物流单号");
@@ -90,8 +130,10 @@
         mallExpressInfo.setExpressCom(expressCom);
         mallExpressInfoMapper.insert(mallExpressInfo);
 
-        mallOrderInfo.setStatus(3);
-        mallOrderInfoMapper.updateById(mallOrderInfo);
+        mallOrderInfoMapper.updateOrderStateAndDeliveryState(mallOrderInfo.getId(),
+                OrderStatusEnum.WAIT_FINISH.getValue(),
+                OrderDeliveryStateEnum.DELIVERY_FINISH.getValue());
+
         return new FebsResponse().success();
     }
 
@@ -108,7 +150,7 @@
             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(item.getGoodsName()+"-"+item.getSkuName()+"-"+item.getCnt()+"*"+item.getPrice()+"-合计"+item.getAmount()+"; \n ");
                 orderItems.append(orderItem);
             }
             adminOrderDetailVo.setOrderItems(orderItems.toString());
@@ -149,15 +191,19 @@
         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(
+                    mallOrderInfo.getMemberId(),
+                    amount,
+                    ScoreFlowTypeEnum.REFUND.getValue(),
+                    mallOrderInfo.getOrderNo(),
+                    FlowTypeEnum.BALANCE.getValue(),
+                    StrUtil.format(ScoreFlowTypeEnum.REFUND.getDesc(),amount),
+                    2
+            );
         }
 
         MallOrderRefundOperation mallOrderRefundOperation = new MallOrderRefundOperation();
@@ -221,17 +267,22 @@
         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(
+                mallOrderInfo.getMemberId(),
+                refundAmount,
+                ScoreFlowTypeEnum.REFUND.getValue(),
+                mallOrderInfo.getOrderNo(),
+                FlowTypeEnum.BALANCE.getValue(),
+                StrUtil.format(ScoreFlowTypeEnum.REFUND.getDesc(),refundAmount),
+                2
+        );
         return new FebsResponse().success();
     }
 
@@ -366,6 +417,164 @@
     }
 
     @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 IPage<AdminGoodsStatisticsVo> goodsStatistics(MallOrderItem mallOrderItem, QueryRequest request) {
+        Page<AdminGoodsStatisticsVo> page = new Page<>(request.getPageNum(), request.getPageSize());
+        IPage<AdminGoodsStatisticsVo> adminGoodsStatisticsVos = mallOrderInfoMapper.getGoodsStatisticsInPage(page, mallOrderItem);
+        return adminGoodsStatisticsVos;
+    }
+
+    @Override
+    public FebsResponse deliverGoodsUpdate(DeliverGoodsDto deliverGoodsDto) {
+        MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(deliverGoodsDto.getId());
+        if(ObjectUtil.isEmpty(mallOrderInfo)){
+            return new FebsResponse().fail().message("订单不存在,刷新后重试");
+        }
+        Integer status = mallOrderInfo.getStatus();
+        if(3 != 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("请输入物流单号");
+        }
+        String expressCom = deliverGoodsDto.getExpressCom();
+        if(StrUtil.isEmpty(expressCom)){
+            return new FebsResponse().fail().message("请输入物流公司");
+        }
+        MallExpressInfo mallExpressInfo = mallExpressInfoMapper.selectByOrderId(mallOrderInfo.getId());
+
+        if(ObjectUtil.isEmpty(mallExpressInfo)){
+            return new FebsResponse().fail().message("请先发货");
+        }
+        mallExpressInfo.setExpressNo(expressNo);
+        mallExpressInfo.setExpressCom(expressCom);
+        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
     public void deliverGoodsByOrderNo(DeliverGoodsDto deliverGoodsDto) {
         MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectByOrderNo(deliverGoodsDto.getOrderNo());
         if (mallOrderInfo == null) {
@@ -380,7 +589,10 @@
         mallExpressInfo.setExpressCode(deliverGoodsDto.getExpressCode());
         mallExpressInfoMapper.insert(mallExpressInfo);
 
-        mallOrderInfo.setStatus(3);
-        mallOrderInfoMapper.updateById(mallOrderInfo);
+        mallOrderInfoMapper.updateOrderStateAndDeliveryState(mallOrderInfo.getId(),
+                OrderStatusEnum.WAIT_FINISH.getValue(),
+                OrderDeliveryStateEnum.DELIVERY_FINISH.getValue());
+//        mallOrderInfo.setStatus(3);
+//        mallOrderInfoMapper.updateById(mallOrderInfo);
     }
 }

--
Gitblit v1.9.1