From e685b58fd40cf28a20844643d70cc5f5b46ca037 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期五, 10 四月 2026 11:08:17 +0800
Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/gtzxinglijicun

---
 server/services/src/main/java/com/doumee/service/business/impl/PricingRuleServiceImpl.java |  107 ++++++++++++++++++++++++++---------------------------
 1 files changed, 53 insertions(+), 54 deletions(-)

diff --git a/server/services/src/main/java/com/doumee/service/business/impl/PricingRuleServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/PricingRuleServiceImpl.java
index b82f12d..81bb4b4 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/PricingRuleServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/PricingRuleServiceImpl.java
@@ -379,66 +379,65 @@
     }
 
     @Override
-    public Integer createEstimatedDelivery(EstimatedDeliverySaveDTO request) {
-        PricingRule rule = new PricingRule();
-        rule.setType(Constants.TWO);
-        rule.setCityId(request.getCityId());
-        rule.setFieldA(request.getDistance());
-        rule.setFieldB(request.getDuration());
-        rule.setDeleted(Constants.ZERO);
-        rule.setCreateTime(new Date());
-        rule.setUpdateTime(new Date());
-        pricingRuleMapper.insert(rule);
-        return rule.getId();
-    }
-
-    @Override
-    public void updateEstimatedDelivery(EstimatedDeliverySaveDTO request) {
-        if (request.getId() == null) {
-            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "涓婚敭涓嶈兘涓虹┖");
-        }
-        PricingRule existing = pricingRuleMapper.selectById(request.getId());
-        if (Objects.isNull(existing) || !Constants.equalsInteger(existing.getType(), Constants.TWO)) {
-            throw new BusinessException(ResponseStatus.DATA_EMPTY);
-        }
-        existing.setFieldA(request.getDistance());
-        existing.setFieldB(request.getDuration());
-        existing.setCityId(request.getCityId());
-        existing.setUpdateTime(new Date());
-        pricingRuleMapper.updateById(existing);
-    }
-
-    @Override
-    public void deleteEstimatedDelivery(Integer id) {
-        PricingRule existing = pricingRuleMapper.selectById(id);
-        if (Objects.isNull(existing) || !Constants.equalsInteger(existing.getType(), Constants.TWO)) {
-            throw new BusinessException(ResponseStatus.DATA_EMPTY);
-        }
-        existing.setDeleted(Constants.ONE);
-        existing.setUpdateTime(new Date());
-        pricingRuleMapper.updateById(existing);
-    }
-
-    @Override
-    public List<EstimatedDeliveryVO> listEstimatedDelivery(Integer cityId) {
+    @Transactional(rollbackFor = Exception.class)
+    public void saveEstimatedDelivery(EstimatedDeliverySaveDTO request) {
+        // 鏌ヨ宸叉湁瑙勫垯 type=2, fieldA=1, cityId, deleted=0
         QueryWrapper<PricingRule> qw = new QueryWrapper<>();
         qw.lambda()
                 .eq(PricingRule::getType, Constants.TWO)
+                .eq(PricingRule::getFieldA, "1")
+                .eq(PricingRule::getCityId, request.getCityId())
+                .eq(PricingRule::getDeleted, Constants.ZERO)
+                .last("limit 1");
+        PricingRule existing = pricingRuleMapper.selectOne(qw);
+
+        Date now = new Date();
+        if (existing != null) {
+            // 鏇存柊
+            existing.setFieldB(request.getStartDistance());
+            existing.setFieldC(request.getStartTime());
+            existing.setFieldD(request.getContinueDistance());
+            existing.setFieldE(request.getContinueTime());
+            existing.setUpdateTime(now);
+            pricingRuleMapper.updateById(existing);
+        } else {
+            // 鏂板
+            PricingRule rule = new PricingRule();
+            rule.setType(Constants.TWO);
+            rule.setFieldA("1");
+            rule.setFieldB(request.getStartDistance());
+            rule.setFieldC(request.getStartTime());
+            rule.setFieldD(request.getContinueDistance());
+            rule.setFieldE(request.getContinueTime());
+            rule.setCityId(request.getCityId());
+            rule.setDeleted(Constants.ZERO);
+            rule.setCreateTime(now);
+            rule.setUpdateTime(now);
+            pricingRuleMapper.insert(rule);
+        }
+    }
+
+    @Override
+    public EstimatedDeliveryVO getEstimatedDelivery(Integer cityId) {
+        QueryWrapper<PricingRule> qw = new QueryWrapper<>();
+        qw.lambda()
+                .eq(PricingRule::getType, Constants.TWO)
+                .eq(PricingRule::getFieldA, "1")
                 .eq(PricingRule::getCityId, cityId)
                 .eq(PricingRule::getDeleted, Constants.ZERO)
-                .orderByAsc(PricingRule::getFieldA);
-        List<PricingRule> rules = pricingRuleMapper.selectList(qw);
-        if (CollectionUtils.isEmpty(rules)) {
-            return new ArrayList<>();
-        }
-        return rules.stream().map(rule -> {
-            EstimatedDeliveryVO vo = new EstimatedDeliveryVO();
+                .last("limit 1");
+        PricingRule rule = pricingRuleMapper.selectOne(qw);
+
+        EstimatedDeliveryVO vo = new EstimatedDeliveryVO();
+        vo.setCityId(cityId);
+        if (rule != null) {
             vo.setPricingRuleId(rule.getId());
-            vo.setCityId(rule.getCityId());
-            vo.setDistance(rule.getFieldA());
-            vo.setDuration(rule.getFieldB());
-            return vo;
-        }).collect(Collectors.toList());
+            vo.setStartDistance(rule.getFieldB());
+            vo.setStartTime(rule.getFieldC());
+            vo.setContinueDistance(rule.getFieldD());
+            vo.setContinueTime(rule.getFieldE());
+        }
+        return vo;
     }
 
     @Override

--
Gitblit v1.9.3