From d7f01edd56f2f8a822ceffa9240fa22e4763d7e4 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Wed, 22 Jan 2025 15:42:40 +0800
Subject: [PATCH] refactor(mall): 重构订单发货相关代码

---
 src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java |  102 ++++++++++++++++++++++++++++++++++----------------
 1 files changed, 69 insertions(+), 33 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 6713e9a..4d909ae 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
@@ -5,6 +5,8 @@
 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.utils.ValidateEntityUtils;
 import cc.mrbird.febs.mall.dto.*;
 import cc.mrbird.febs.mall.entity.*;
 import cc.mrbird.febs.mall.mapper.*;
@@ -24,6 +26,7 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 
 @Slf4j
@@ -55,6 +58,7 @@
     private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
     private final IMallMoneyFlowService mallMoneyFlowService;
     private final MallRefundMapper mallRefundMapper;
+    private final MallMemberMapper mallMemberMapper;
 
 
     @Override
@@ -70,11 +74,21 @@
         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.getCnt()).append(";");
+                        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());
                 }
@@ -90,36 +104,32 @@
 
     @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("订单不是待发货状态");
-        }
-        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 = new MallExpressInfo();
-        mallExpressInfo.setMemberId(mallOrderInfo.getMemberId());
-        mallExpressInfo.setOrderId(mallOrderInfo.getId());
-        mallExpressInfo.setExpressNo(expressNo);
-        mallExpressInfo.setExpressCom(expressCom);
-        mallExpressInfoMapper.insert(mallExpressInfo);
+        MallOrderInfo mallOrderInfo = ValidateEntityUtils.ensureColumnReturnEntity(
+                deliverGoodsDto.getId(),
+                MallOrderInfo::getId,
+                mallOrderInfoMapper::selectOne,
+                "订单{}不存在");
+        ValidateEntityUtils.ensureEqual(mallOrderInfo.getStatus(), OrderStatusEnum.WAIT_SHIPPING.getValue(), "订单状态不是待发货状态");
+        ValidateEntityUtils.ensureEqual(mallOrderInfo.getDeliveryType(), 2, "订单的配送方式不是快递");
+//        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);
-        mallOrderInfo.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_ING.getValue());
-        mallOrderInfoMapper.updateById(mallOrderInfo);
+        mallOrderInfoMapper.updateOrderStateAndDeliveryState(mallOrderInfo.getId(),
+                OrderStatusEnum.WAIT_FINISH.getValue(),
+                OrderDeliveryStateEnum.DELIVERY_FINISH.getValue());
+
         return new FebsResponse().success();
     }
 
@@ -136,7 +146,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());
@@ -436,6 +446,29 @@
     }
 
     @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 = ValidateEntityUtils.ensureColumnReturnEntity(
+                deliverGoodsDto.getId(),
+                MallOrderInfo::getId,
+                mallOrderInfoMapper::selectOne,
+                "订单{}不存在");
+        ValidateEntityUtils.ensureEqual(mallOrderInfo.getStatus(), OrderStatusEnum.WAIT_FINISH.getValue(), "订单不是待收货状态");
+        ValidateEntityUtils.ensureEqual(mallOrderInfo.getDeliveryType(), 2, "订单的配送方式不是快递");
+        mallOrderInfo.setStatus(OrderStatusEnum.FINISH.getValue());
+        mallOrderInfo.setReceivingTime(new Date());
+        mallOrderInfoMapper.updateById(mallOrderInfo);
+
+        return new FebsResponse().success();
+    }
+
+    @Override
     public void deliverGoodsByOrderNo(DeliverGoodsDto deliverGoodsDto) {
         MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectByOrderNo(deliverGoodsDto.getOrderNo());
         if (mallOrderInfo == null) {
@@ -450,7 +483,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