From cd6b21f04e08a61d79e4aea2593c41fdc5cd0766 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期四, 14 五月 2026 09:01:22 +0800
Subject: [PATCH] 代码生成

---
 server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java |   92 +++++++++++++++++++++++++++++++++++----------
 1 files changed, 71 insertions(+), 21 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 13217de..a327585 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
@@ -802,6 +802,7 @@
         orders.setDeleted(Constants.ZERO);
         orders.setCreateTime(now);
         orders.setUpdateTime(now);
+        orders.setIsConverted(Constants.ZERO);
 
         // 瀵勪欢淇℃伅
         orders.setDepositShopId(dto.getDepositShopId());
@@ -1216,7 +1217,6 @@
         com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper<Orders> updateWrapper =
                 new UpdateWrapper<Orders>().lambda()
                 .eq(Orders::getId, order.getId())
-                .set(Orders::getIsUrgent, Constants.ONE)
                 .set(Orders::getPlatformRewardAmount, urgentFeeFen)
                 .set(Orders::getPlatformSmsNotified, Constants.ZERO) // 閲嶇疆閫氱煡鐘舵�佷负鏈�氱煡
                 .set(Orders::getPlatformSmsNotifiedTime, new Date()) // 閲嶇疆閫氱煡鍩哄噯鏃堕棿涓哄綋鍓�
@@ -1237,7 +1237,8 @@
         if (dto.getDriverId() != null) {
             // 鏍¢獙鍙告満淇℃伅
             DriverInfo driverInfo = driverInfoMapper.selectOne(new QueryWrapper<DriverInfo>().lambda()
-                    .eq(DriverInfo::getMemberId, dto.getDriverId())
+                    .eq(DriverInfo::getId, dto.getDriverId())
+                    .eq(DriverInfo::getVersionType, Constants.ZERO)
                     .eq(DriverInfo::getDeleted, Constants.ZERO)
                     .last("limit 1"));
             if (driverInfo == null) {
@@ -1258,13 +1259,10 @@
             updateWrapper.set(Orders::getAcceptType, 1); // 1=绯荤粺娲惧崟
             updateWrapper.set(Orders::getStatus, Constants.OrderStatus.accepted.getStatus());
 
-            Member driver = memberMapper.selectById(dto.getDriverId());
-            String driverName = driver != null ? driver.getName() : String.valueOf(dto.getDriverId());
-
             OrderLog driverLog = new OrderLog();
             driverLog.setOrderId(order.getId());
             driverLog.setTitle(Constants.OrderLogType.assignDriver.getTitle());
-            driverLog.setLogInfo(Constants.OrderLogType.assignDriver.format(driverName, dto.getUrgentFee().toPlainString()));
+            driverLog.setLogInfo(Constants.OrderLogType.assignDriver.format(driverInfo.getName(), dto.getUrgentFee().toPlainString()));
             driverLog.setObjType(Constants.OrderLogType.assignDriver.getStatus());
             driverLog.setOrderStatus(Constants.OrderStatus.accepted.getStatus());
             driverLog.setOptUserType(3);
@@ -2123,20 +2121,37 @@
             DriverInfo originalDriver = originalDriverId != null ? driverInfoMapper.selectById(originalDriverId) : null;
 
             ShopInfo depositShop = shopInfoMapper.selectById(order.getDepositShopId());
-            // 鍙栦欢鐐逛俊鎭洿鏂颁负瀛樹欢闂ㄥ簵锛屼娇鐢� UpdateWrapper 纭繚 null 瀛楁涔熻兘鐢熸晥
+
+            // 璁$畻灏卞湴瀵勫瓨瀛樹欢闂ㄥ簵鍒嗘垚姣斾緥
+            Integer cityId = Integer.valueOf(order.getCityId());
+            boolean isCompany = depositShop != null && Constants.equalsInteger(depositShop.getCompanyType(), Constants.ONE);
+            int fallbackFieldA = isCompany ? Constants.FIVE : Constants.SIX;
+            BigDecimal localDepositRata = getShopRevenueShare(depositShop, "localDeposit", cityId, fallbackFieldA);
+            Long totalAmount = order.getTotalAmount() != null ? order.getTotalAmount() : 0L;
+            Long localDepositFee = new BigDecimal(totalAmount).multiply(localDepositRata)
+                    .setScale(0, RoundingMode.HALF_UP).longValue();
+
+            // 鍙栦欢鐐逛俊鎭洿鏂颁负瀛樹欢闂ㄥ簵锛岄噸绠楀垎鎴�
             UpdateWrapper<Orders> updateWrapper = new UpdateWrapper<>();
             updateWrapper.lambda()
                     .eq(Orders::getId, order.getId())
                     .set(Orders::getType, Constants.ZERO)
+                    .set(Orders::getStatus, Constants.OrderStatus.arrived.getKey())
+                    .set(Orders::getIsConverted, Constants.ONE)
                     .set(Orders::getTakeShopId, order.getDepositShopId())
-                    .set(Orders::getTakeShopName, order.getDepositShopName())
-                    .set(Orders::getTakeShopAddress, order.getDepositShopAddress())
-                    .set(Orders::getTakeShopLinkPhone, order.getDepositShopLinkPhone())
                     .set(Orders::getTakeLocation, order.getDepositLocation())
                     .set(Orders::getTakeLocationRemark, order.getDepositLocationRemark())
                     .set(Orders::getTakeLat, order.getDepositLat())
                     .set(Orders::getTakeLgt, order.getDepositLgt())
-                    .set(Orders::getExpectedTakeTime, new Date());
+                    .set(Orders::getExpectedTakeTime, new Date())
+                    // 瀛樹欢闂ㄥ簵鍒嗘垚鎸夊氨鍦板瘎瀛橀噸绠�
+                    .set(Orders::getDepositShopFeeRata, localDepositRata)
+                    .set(Orders::getDepositShopFee, localDepositFee)
+                    // 鍙告満銆佸彇浠堕棬搴楀垎鎴愬綊闆�
+                    .set(Orders::getDriverFeeRata, BigDecimal.ZERO)
+                    .set(Orders::getDriverFee, 0L)
+                    .set(Orders::getTakeShopFeeRata, BigDecimal.ZERO)
+                    .set(Orders::getTakeShopFee, 0L);
             if (Constants.equalsInteger(status, Constants.OrderStatus.accepted.getStatus())) {
                 updateWrapper.lambda()
                         .set(Orders::getAcceptDriver, null)
@@ -3542,6 +3557,7 @@
                 new QueryWrapper<OrdersDetail>().lambda()
                         .eq(OrdersDetail::getOrderId, orderId)
                         .eq(OrdersDetail::getDeleted, Constants.ZERO));
+
         OverdueFeeVO overdueInfo = calculateOverdueFeeInternal(order, details);
 
         Date now = new Date();
@@ -3570,17 +3586,26 @@
                 int actualDays = calcActualDepositDays(now, order.getDepositTime());
                 order.setDepositDays(actualDays);
 
-                int estimatedDays = order.getEstimatedDepositDays() != null ? order.getEstimatedDepositDays() : 1;
-                int refundDays = estimatedDays - actualDays;
-                if (refundDays > 0) {
-                    // 閫�娆鹃噾棰� = 閫�娆惧ぉ鏁� 脳 危(鐗╁搧鍗曚环 脳 鏁伴噺)
-                    long dailyBaseFee = 0L;
-                    for (OrdersDetail d : details) {
-                        dailyBaseFee += (d.getUnitPrice() != null ? d.getUnitPrice() : 0L)
-                                * (d.getNum() != null ? d.getNum() : 0);
+                long dailyBaseFee = 0L;
+                for (OrdersDetail d : details) {
+                    dailyBaseFee += (d.getLocallyPrice() != null ? d.getLocallyPrice() : 0L)
+                            * (d.getNum() != null ? d.getNum() : 0);
+                }
+
+                if (Constants.equalsInteger(order.getIsConverted(), Constants.ONE)) {
+                    // 杞崲璁㈠崟锛氬疄闄呰垂鐢ㄤ笌宸蹭粯閲戦瀵规瘮
+                    long actualFee = (long) actualDays * dailyBaseFee;
+                    long payAmount = order.getPayAmount() != null ? order.getPayAmount() : 0L;
+                    if (actualFee < payAmount) {
+                        order.setRefundAmount(payAmount - actualFee);
                     }
-                    long refundAmount = (long) refundDays * dailyBaseFee;
-                    order.setRefundAmount(refundAmount);
+                } else {
+                    // 鏅�氳鍗曪細鎸夐璁″ぉ鏁颁笌瀹為檯澶╂暟宸绠楅��娆�
+                    int estimatedDays = order.getEstimatedDepositDays() != null ? order.getEstimatedDepositDays() : 1;
+                    int refundDays = estimatedDays - actualDays;
+                    if (refundDays > 0) {
+                        order.setRefundAmount((long) refundDays * dailyBaseFee);
+                    }
                 }
             }
 
@@ -3769,6 +3794,31 @@
 
         if (Constants.equalsInteger(order.getType(), Constants.ZERO)) {
             // ========== 灏卞湴瀵勫瓨 ==========
+
+            // 杞崲璁㈠崟锛堝紓鍦拌浆灏卞湴锛夛細鎸夊瘎瀛樻椂闂村埌褰撳墠鏃堕棿璁$畻瀹為檯璐圭敤
+            if (Constants.equalsInteger(order.getIsConverted(), Constants.ONE)) {
+                int actualDays = calcActualDepositDays(now, order.getDepositTime());
+                long actualFee = (long) actualDays * dailyBaseFee;
+                long payAmount = order.getPayAmount() != null ? order.getPayAmount() : 0L;
+
+                OverdueFeeVO vo = new OverdueFeeVO();
+                vo.setDailyBaseFee(dailyBaseFee);
+                if (actualFee <= payAmount) {
+                    // 瀹為檯璐圭敤 <= 宸蹭粯閲戦锛氭湭閫炬湡
+                    vo.setOverdue(false);
+                    vo.setOverdueDays(0);
+                    vo.setOverdueFee(0L);
+                } else {
+                    // 瀹為檯璐圭敤 > 宸蹭粯閲戦锛氶�炬湡锛屽樊浠蜂负閫炬湡璐圭敤
+                    int overDays = actualDays - (order.getEstimatedDepositDays() != null ? order.getEstimatedDepositDays() : 1);
+                    vo.setOverdue(true);
+                    vo.setOverdueDays(Math.max(overDays, 1));
+                    vo.setOverdueFee(actualFee - payAmount);
+                }
+                return vo;
+            }
+
+            // 鏅�氬氨鍦板瘎瀛�
             overdueDays = calcLocalOverdueDays(now, order.getExpectedTakeTime());
             overdueFee = (long) overdueDays * dailyBaseFee;
 

--
Gitblit v1.9.3