From 9f8b3700ffbcc616a97e7ee2ea283ef4df3d666a Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期四, 04 六月 2026 08:43:55 +0800
Subject: [PATCH] 代码生成

---
 server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java |  135 ++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 128 insertions(+), 7 deletions(-)

diff --git a/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java
index 06fe53c..5883343 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java
@@ -237,6 +237,7 @@
                 .selectAs(Category::getDetail, Orders::getOrderLevel)
                 .select("s1.name", Orders::getDepositShopName)
                 .select("o2.code", Orders::getRelationOrderCode)
+                .select("s2.name", Orders::getTakeShopName)
                 .leftJoin(Category.class, Category::getId, Orders::getGoodLevel)
                 .leftJoin(DriverInfo.class, DriverInfo::getId, Orders::getAcceptDriver)
                 .leftJoin("shop_info s1 on s1.id = t.DEPOSIT_SHOP_ID")
@@ -248,6 +249,7 @@
         queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getCode()), Orders::getCode, pageWrap.getModel().getCode());
         queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getDepositShopName()), "s1.name", pageWrap.getModel().getDepositShopName());
         queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getTakeShopName()),  "s2.name",  pageWrap.getModel().getTakeShopName());
+        queryWrapper.eq(StringUtils.isNotBlank(pageWrap.getModel().getTakeShopName()),  Orders::getType,Constants.ONE);
         queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getGoodsInfo()), Orders::getGoodsInfo, pageWrap.getModel().getGoodsInfo());
         queryWrapper.ge(pageWrap.getModel().getCreateStartTime() != null, Orders::getCreateTime, pageWrap.getModel().getCreateStartTime());
         queryWrapper.le(pageWrap.getModel().getCreateEndTime() != null, Orders::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateEndTime()));
@@ -259,6 +261,8 @@
                 .or().like(DriverInfo::getTelephone, pageWrap.getModel().getDriverKeyword()));
         queryWrapper.eq(pageWrap.getModel().getSettlementStatus() != null, Orders::getSettlementStatus, pageWrap.getModel().getSettlementStatus());
         queryWrapper.eq(pageWrap.getModel().getAcceptDriver() != null, Orders::getAcceptDriver, pageWrap.getModel().getAcceptDriver());
+        queryWrapper.and(pageWrap.getModel().getTakeKeyword() != null, i -> i.like(Orders::getTakeUser, pageWrap.getModel().getTakeKeyword())
+                .or().like(Orders::getTakePhone, pageWrap.getModel().getTakeKeyword()));
         queryWrapper.and(pageWrap.getModel().getShopId() != null, i -> i.eq(Orders::getDepositShopId, pageWrap.getModel().getShopId())
                 .or().eq(Orders::getTakeShopId, pageWrap.getModel().getShopId()));
         queryWrapper.orderByDesc(Orders::getId);
@@ -1049,7 +1053,8 @@
             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鐢ㄦ埛淇℃伅寮傚父锛屾棤娉曞彂璧锋敮浠�");
         }
         PayResponse payResponse = wxPayV3(orders.getOutTradeNo(), orders.getTotalAmount(), orders.getId(),
-                member.getOpenid(), Constants.OrdersAttach.STORAGE_ORDER);
+                member.getOpenid(), Constants.equalsInteger(orders.getType(), Constants.ONE)
+                        ? Constants.OrdersAttach.DELIVERY_ORDER : Constants.OrdersAttach.STORAGE_ORDER);
         payResponse.setLockKey(lockKey);
         return payResponse;
     }
@@ -1086,7 +1091,8 @@
             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鐢ㄦ埛淇℃伅寮傚父锛屾棤娉曞彂璧锋敮浠�");
         }
         return wxPayV3(orders.getOutTradeNo(), orders.getTotalAmount(), orders.getId(),
-                member.getOpenid(), Constants.OrdersAttach.STORAGE_ORDER);
+                member.getOpenid(), Constants.equalsInteger(orders.getType(), Constants.ONE)
+                        ? Constants.OrdersAttach.DELIVERY_ORDER : Constants.OrdersAttach.STORAGE_ORDER);
     }
 
     /**
@@ -1480,6 +1486,13 @@
         }
     }
 
+    private void clearVerifyCodes(Integer orderId) {
+        ordersMapper.update(null, new UpdateWrapper<Orders>().lambda()
+                .eq(Orders::getId, orderId)
+                .set(Orders::getMemberVerifyCode, null)
+                .set(Orders::getDriverVerifyCode, null));
+    }
+
     private String getOrdersPrefix() {
         try {
             return systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
@@ -1576,9 +1589,9 @@
         }
 
         // 璁$畻钖叕锛堝垎锛�
-        long driverFee = new BigDecimal(totalAmount).multiply(driverRata).longValue();
-        long depositShopFee = new BigDecimal(totalAmount).multiply(depositShopRata).longValue();
-        long takeShopFee = new BigDecimal(totalAmount).multiply(takeShopRata).longValue();
+        long driverFee = new BigDecimal(totalAmount).multiply(driverRata).setScale(0, RoundingMode.HALF_UP).longValue();
+        long depositShopFee = new BigDecimal(totalAmount).multiply(depositShopRata).setScale(0, RoundingMode.HALF_UP).longValue();
+        long takeShopFee = new BigDecimal(totalAmount).multiply(takeShopRata).setScale(0, RoundingMode.HALF_UP).longValue();
 
         orders.setDriverFee(driverFee);
         orders.setDepositShopFee(depositShopFee);
@@ -2834,7 +2847,8 @@
 
         // 5. 鍞よ捣寰俊鏀粯V3
         return wxPayV3(otherOrders.getOutTradeNo(), otherOrders.getPayAccount(), otherOrders.getId(),
-                member.getOpenid(), Constants.OrdersAttach.OVERDUE_FEE);
+                member.getOpenid(), Constants.equalsInteger(order.getType(), Constants.ONE)
+                        ? Constants.OrdersAttach.DELIVERY_OVERDUE_FEE : Constants.OrdersAttach.OVERDUE_FEE);
     }
 
     @Override
@@ -3385,6 +3399,7 @@
                     originalOrder.setFinishTime(now);
                     originalOrder.setUpdateTime(now);
                     ordersMapper.updateById(originalOrder);
+                    clearVerifyCodes(originalOrder.getId());
                     // 瑙﹀彂鍘熻鍗曟敹鐩婅绠�
                     calculateAndSaveOrderFees(originalOrder.getId());
                     generateRevenueRecords(originalOrder.getId());
@@ -3428,7 +3443,7 @@
             order.setFinishTime(now);
             order.setInvoiceStatus(Constants.ONE);
             ordersMapper.updateById(order);
-            // 灏卞湴瀵勫瓨(type=0)鍙栦欢鏃跺浘鐗囦笉蹇呭~锛屽叾浠栫被鍨嬪彇浠跺繀濉�
+            clearVerifyCodes(order.getId());
             if (!Constants.equalsInteger(order.getType(), Constants.ZERO)) {
                 if (images == null || images.isEmpty()) {
                     throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "璇蜂笂浼犲彇浠跺浘鐗�");
@@ -3597,6 +3612,7 @@
             order.setInvoiceStatus(Constants.ONE);
             order.setConfirmArriveTime(now);
             ordersMapper.updateById(order);
+            clearVerifyCodes(order.getId());
             // 璁㈠崟瀹屾垚锛岄噴鏀炬牳閿�鐮�
             releaseVerifyCode(verifyCode);
             // 淇濆瓨鍑哄簱鍥剧墖锛坥bj_type=13 闂ㄥ簵鍑哄簱鍥剧墖锛屾渶澶�3寮狅級
@@ -3675,6 +3691,7 @@
         order.setFinishTime(now);
         order.setUpdateTime(now);
         ordersMapper.updateById(order);
+        clearVerifyCodes(order.getId());
 
         // 8. 閲婃斁鏍搁攢鐮�
         if (StringUtils.isNotBlank(order.getMemberVerifyCode())) {
@@ -3773,6 +3790,7 @@
         order.setFinishTime(now);
         order.setUpdateTime(now);
         ordersMapper.updateById(order);
+        clearVerifyCodes(order.getId());
 
         // 7. 鐢熸垚鏀剁泭璁板綍
         calculateAndSaveOrderFees(orderId);
@@ -4895,6 +4913,7 @@
                 order.setFinishTime(now);
                 order.setUpdateTime(now);
                 ordersMapper.updateById(order);
+                clearVerifyCodes(order.getId());
 
                 // 閲婃斁鏍搁攢鐮�
                 if (StringUtils.isNotBlank(order.getMemberVerifyCode())) {
@@ -5476,4 +5495,106 @@
         return vo;
     }
 
+    @Override
+    public List<OrderTimelineVO> getOrderTimeline(Integer orderId) {
+        Orders order = ordersMapper.selectById(orderId);
+        if (order == null || Constants.equalsInteger(order.getDeleted(), Constants.ONE)) {
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        List<OrderTimelineVO> timeline = new ArrayList<>();
+        String imgPrefix = getOrdersPrefix();
+
+        // 闂ㄥ簵/鍙告満鍚嶇О
+        String depositShopName = "";
+        if (order.getDepositShopId() != null) {
+            ShopInfo depositShop = shopInfoMapper.selectById(order.getDepositShopId());
+            if (depositShop != null) {
+                depositShopName = depositShop.getName();
+            }
+        }
+        String takeShopName = "";
+        if (order.getTakeShopId() != null) {
+            ShopInfo takeShop = shopInfoMapper.selectById(order.getTakeShopId());
+            if (takeShop != null) {
+                takeShopName = takeShop.getName();
+            }
+        }
+        String driverName = "";
+        if (order.getAcceptDriver() != null) {
+            DriverInfo driver = driverInfoMapper.selectById(order.getAcceptDriver());
+            if (driver != null) {
+                driverName = driver.getName();
+            }
+        }
+
+        boolean isLocal = Constants.equalsInteger(order.getType(), Constants.ZERO);
+        boolean hasTakeShop = order.getTakeShopId() != null;
+        boolean isException = Constants.equalsInteger(order.getExceptionStatus(), Constants.ONE);
+        int status = order.getStatus() != null ? order.getStatus() : 0;
+
+        // 1. 闂ㄥ簵瀵勫瓨 (status >= 2)
+        if (status >= Constants.OrderStatus.deposited.getKey() && order.getDepositTime() != null) {
+            OrderTimelineVO node = new OrderTimelineVO();
+            node.setTitle("闂ㄥ簵銆�" + depositShopName + "銆戠‘璁ゆ敹浠�");
+            node.setTime(order.getDepositTime());
+            node.setImages(getFileUrls(orderId, Constants.FileType.ORDER_DEPOSIT.getKey(), imgPrefix));
+            timeline.add(node);
+        }
+
+        if (!isLocal) {
+            // 2. 鍙告満鍙栦欢 (status >= 4)
+            if (status >= Constants.OrderStatus.delivering.getKey() && order.getDriverTakeTime() != null) {
+                OrderTimelineVO node = new OrderTimelineVO();
+                node.setTitle("鍙告満銆�" + driverName + "銆戠‘璁ゅ彇浠�");
+                node.setTime(order.getDriverTakeTime());
+                node.setImages(getFileUrls(orderId, Constants.FileType.DRIVER_TAKE.getKey(), imgPrefix));
+                timeline.add(node);
+            }
+
+            if (isException) {
+                // 寮傚父锛氬叧鑱旀煡璇㈠紓甯歌鍗�
+                Orders exceptionOrder = ordersMapper.selectOne(new QueryWrapper<Orders>().lambda()
+                        .eq(Orders::getRelationOrderId, orderId)
+                        .eq(Orders::getExceptionStatus, Constants.ONE)
+                        .last("limit 1"));
+                if (exceptionOrder != null) {
+                    OrderTimelineVO node = new OrderTimelineVO();
+                    node.setTitle("琛屾潕宸插紓甯歌浆瀛橈紝鏂拌鍗曞彿銆�" + exceptionOrder.getCode() + "銆�");
+                    node.setTime(exceptionOrder.getCreateTime());
+                    timeline.add(node);
+                }
+            } else {
+                // 3. 姝e父锛氬徃鏈洪�佽揪 (status >= 5)
+                if(StringUtils.isBlank(takeShopName)){
+                    if (status >= Constants.OrderStatus.arrived.getKey() && order.getArriveTime() != null) {
+                        OrderTimelineVO node = new OrderTimelineVO();
+                        node.setTitle("鍙告満銆�" + driverName + "銆戠‘璁ら�佽揪");
+                        node.setTime(order.getArriveTime());
+                        node.setImages(getFileUrls(orderId, Constants.FileType.DRIVER_DONE.getKey(), imgPrefix));
+                        timeline.add(node);
+                    }
+                }
+                // 4. 鏈夐棬搴楋細闂ㄥ簵鏀朵欢 (status >= 5)
+                if (hasTakeShop && status >= Constants.OrderStatus.arrived.getKey() && order.getArriveTime() != null) {
+                    OrderTimelineVO node = new OrderTimelineVO();
+                    node.setTitle("闂ㄥ簵銆�" + takeShopName + "銆戠‘璁ゆ敹浠�");
+                    node.setTime(order.getArriveTime());
+                    node.setImages(getFileUrls(orderId, Constants.FileType.ORDER_TAKE.getKey(), imgPrefix));
+                    timeline.add(node);
+                }
+            }
+        }
+
+        // 鏈�鍚庯細璁㈠崟瀹屾垚 (status = 7)
+        if (status == Constants.OrderStatus.finished.getKey() && order.getFinishTime() != null) {
+            OrderTimelineVO node = new OrderTimelineVO();
+            node.setTitle("璁㈠崟宸插畬鎴�");
+            node.setTime(order.getFinishTime());
+            timeline.add(node);
+        }
+
+        timeline.sort((a, b) -> b.getTime() != null && a.getTime() != null ? b.getTime().compareTo(a.getTime()) : 0);
+        return timeline;
+    }
+
 }

--
Gitblit v1.9.3