From 74b0af6814b96378201ea27d205e054bf01d0306 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期二, 21 四月 2026 14:20:22 +0800
Subject: [PATCH] 代码生成

---
 server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java |   88 ++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 81 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 5098a38..e4f0227 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
@@ -420,8 +420,11 @@
         String to = dto.getToLat() + "," + dto.getToLgt();
         JSONObject distanceResult = MapUtil.direction("driving", from, to);
         BigDecimal distance = distanceResult.getBigDecimal("distance");
-        // distance 鍗曚綅涓虹背锛岃浆涓哄叕閲�
+        // distance 鍗曚綅涓虹背锛岃浆涓哄叕閲岋紙涓嶈冻1鍏噷鎸�1鍏噷璁$畻锛�
         BigDecimal distanceKm = distance.divide(new BigDecimal(1000), 2, RoundingMode.HALF_UP);
+        if (distanceKm.compareTo(BigDecimal.ONE) < 0) {
+            distanceKm = BigDecimal.ONE;
+        }
 
         // 鏀堕泦鎵�鏈夌墿鍝佺被鍨婭D
         List<Integer> categoryIds = new ArrayList<>();
@@ -645,8 +648,11 @@
 
         // ========== 3. 鏌ヨ瀵勪欢搴楅摵淇℃伅 ==========
         ShopInfo depositShop = shopInfoMapper.selectById(dto.getDepositShopId());
-        if (depositShop == null) {
+        if (depositShop == null || Constants.equalsInteger(depositShop.getDeleted(), Constants.ONE)) {
             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵勪欢搴楅摵涓嶅瓨鍦�");
+        }
+        if (depositShop.getStatus() == null || !Constants.equalsInteger(depositShop.getStatus(), Constants.ZERO)) {
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵勪欢搴楅摵宸插仠涓氾紝璇烽�夋嫨鍏朵粬闂ㄥ簵");
         }
 
         // ========== 4. 璁$畻璐圭敤 ==========
@@ -663,9 +669,15 @@
             }
             // 鍙栦欢鐐癸細搴楅摵 or 鑷�夌偣锛岃嚦灏戞彁渚涗竴缁�
             if (dto.getTakeShopId() != null) {
+                if (dto.getTakeShopId().equals(dto.getDepositShopId())) {
+                    throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "寮傚湴瀵勫瓨璁㈠崟瀛樹欢闂ㄥ簵鍜屽彇浠堕棬搴椾笉鑳界浉鍚�");
+                }
                 takeShop = shopInfoMapper.selectById(dto.getTakeShopId());
-                if (takeShop == null) {
+                if (takeShop == null || Constants.equalsInteger(takeShop.getDeleted(), Constants.ONE)) {
                     throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鍙栦欢搴楅摵涓嶅瓨鍦�");
+                }
+                if (takeShop.getStatus() == null || !Constants.equalsInteger(takeShop.getStatus(), Constants.ONE)) {
+                    throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鍙栦欢搴楅摵宸插仠涓氾紝璇烽�夋嫨鍏朵粬闂ㄥ簵");
                 }
                 takeLat = BigDecimal.valueOf(takeShop.getLatitude());
                 takeLgt = BigDecimal.valueOf(takeShop.getLongitude());
@@ -764,6 +776,7 @@
             orders.setTakeLat(takeLat);
             orders.setTakeLgt(takeLgt);
             orders.setIsUrgent(dto.getIsUrgent());
+            orders.setDistance(priceResult.getDistance());
         } else {
             // 灏卞湴锛氬彇浠剁偣鍚屽瘎浠跺簵閾�
             orders.setTakeShopId(dto.getDepositShopId());
@@ -775,7 +788,12 @@
 
         // 鐗╁搧淇℃伅
         orders.setGoodType(dto.getGoodType());
-        orders.setGoodLevel(goodTypeCategory.getRelationId());
+        // 鏌ヨ鐗╁搧绾у埆 type = 3
+        Category levelCategory = categoryMapper.selectById(goodTypeCategory.getRelationId());
+        if(Objects.isNull(levelCategory)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鐗╁搧绛夌骇淇℃伅锛歿}"+goodTypeCategory.getName());
+        }
+        orders.setGoodLevel(Integer.valueOf(levelCategory.getDetail()));
         // 鎷兼帴鐗╁搧淇℃伅锛氱墿鍝佺被鍨嬪悕绉般�佸昂瀵稿悕绉�*鏁伴噺锛堟暟缁勫瓧绗︿覆锛�
         List<String> goodsParts = new ArrayList<>();
         for (ItemPriceVO itemVO : priceResult.getItemList()) {
@@ -797,7 +815,6 @@
         }
         orders.setDeclaredFee(priceResult.getInsuranceFee());
         orders.setPrice(priceResult.getItemPrice());
-
         // 钖叕璁$畻涓庡崰姣斿瓨鍌�
         calculateAndSetFeeAllocation(orders, depositShop, takeShop);
 
@@ -1307,8 +1324,9 @@
                 .eq(PricingRule::getCityId, cityId)
                 .eq(PricingRule::getFieldA, String.valueOf(fieldA))
                 .last("limit 1"));
-        if (rule != null && StringUtils.isNotBlank(rule.getFieldC())) {
-            return new BigDecimal(rule.getFieldC());
+        if (rule != null && StringUtils.isNotBlank(rule.getFieldB())) {
+            // fieldB 瀛樺偍鐨勬槸鐧惧垎姣旀暣鏁帮紙濡�15琛ㄧず15%锛夛紝杞崲涓哄皬鏁版瘮渚嬶紙0.15锛�
+            return new BigDecimal(rule.getFieldB()).divide(new BigDecimal("100"), 4, BigDecimal.ROUND_HALF_UP);
         }
         return BigDecimal.ZERO;
     }
@@ -1836,6 +1854,7 @@
         order.setPayStatus(Constants.ONE); // 宸叉敮浠�
         order.setPayTime(now);
         order.setWxExternalNo(wxTradeNo);
+        order.setPayAmount(order.getTotalAmount());
         order.setUpdateTime(now);
         // 鐢熸垚浼氬憳鏍搁攢鐮�
         order.setMemberVerifyCode(generateVerifyCode());
@@ -3122,6 +3141,61 @@
     }
 
     @Override
+    public ActiveOrderTipVO getActiveOrderTip(Integer memberId) {
+        // 鏌ヨ鐘舵�佷负 0~5 鐨勬渶鏂颁竴鏉¤鍗�
+        QueryWrapper<Orders> wrapper = new QueryWrapper<>();
+        wrapper.eq("MEMBER_ID", memberId)
+                .in("STATUS", 0, 1, 2, 3, 4, 5)
+                .orderByDesc("CREATE_TIME")
+                .last("LIMIT 1");
+        Orders order = ordersMapper.selectOne(wrapper);
+        if (order == null) {
+            return null;
+        }
+
+        ActiveOrderTipVO vo = new ActiveOrderTipVO();
+        vo.setOrderId(order.getId());
+        vo.setStatus(order.getStatus());
+
+        // 鏋勫缓鎻愮ず鏂囨
+        boolean isLocal = Constants.equalsInteger(order.getType(), Constants.ZERO);
+        Integer status = order.getStatus();
+        String tip = null;
+
+        if (Constants.equalsInteger(status, Constants.OrderStatus.waitPay.getStatus())) {
+            // 寰呮敮浠橈細鎻愮ず鏀粯鍊掕鏃�
+            String minutes = "";
+            try {
+                minutes = operationConfigBiz.getConfig().getAutoCancelTime();
+            } catch (Exception ignored) {}
+            tip = "璇峰湪" + (StringUtils.isNotBlank(minutes) ? minutes : "") + "鍒嗛挓鍐呭畬鎴愭敮浠橈紝瓒呮椂璁㈠崟灏嗚嚜鍔ㄥ彇娑�";
+
+            // 璁$畻鏀粯鍊掕鏃�
+            if (StringUtils.isNotBlank(minutes) && order.getCreateTime() != null) {
+                long timeoutMs = Long.parseLong(minutes) * 60 * 1000;
+                long deadline = order.getCreateTime().getTime() + timeoutMs;
+                long remain = deadline - System.currentTimeMillis();
+                vo.setPayCountdown(remain > 0 ? remain : -1L);
+            } else {
+                vo.setPayCountdown(-1L);
+            }
+        } else if (Constants.equalsInteger(status, Constants.OrderStatus.waitDeposit.getStatus())) {
+            tip = "璁㈠崟宸叉敮浠橈紝璇峰墠寰�闂ㄥ簵瀵勫瓨";
+        } else if (Constants.equalsInteger(status, Constants.OrderStatus.deposited.getStatus())) {
+            tip = isLocal ? "琛屾潕宸插瘎瀛橈紝璇峰嚟鍙栦欢鐮佸墠寰�鎸囧畾闂ㄥ簵鍙栦欢" : "闂ㄥ簵宸叉帴鍗曪紝姝e湪涓烘偍瀹夋帓鍙栦欢鍙告満";
+        } else if (Constants.equalsInteger(status, Constants.OrderStatus.accepted.getStatus())) {
+            tip = isLocal ? "琛屾潕宸插瘎瀛橈紝璇峰嚟鍙栦欢鐮佸墠寰�鎸囧畾闂ㄥ簵鍙栦欢" : "宸叉湁鍙告満鎶㈠崟锛屾鍓嶅線鍙栦欢鍦扮偣";
+        } else if (Constants.equalsInteger(status, Constants.OrderStatus.delivering.getStatus())) {
+            tip = "鍙告満宸插彇浠讹紝姝h繍寰�鐩殑鍦�";
+        } else if (Constants.equalsInteger(status, Constants.OrderStatus.arrived.getStatus())) {
+            tip = "琛屾潕宸查�佽揪鏈嶅姟鐐癸紝璇峰強鏃跺墠寰�鍙栦欢";
+        }
+
+        vo.setTip(tip);
+        return vo;
+    }
+
+    @Override
     public EstimatedDeliveryResultVO calculateEstimatedDelivery(Integer cityId,
                                                                 Double fromLat, Double fromLng,
                                                                 Double toLat, Double toLng) {

--
Gitblit v1.9.3