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