From c9f0611f690b3fb0cb120f5b6799f94977d3f129 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期一, 20 四月 2026 11:34:23 +0800
Subject: [PATCH] 代码生成
---
server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java | 65 ++++++++++++++++++++++++++++++++
1 files changed, 65 insertions(+), 0 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 3e2c1ce..8fa0b27 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
@@ -536,6 +536,33 @@
result.setUrgentFee(urgentFeeFen);
result.setTotalPrice(totalPrice);
result.setDistance(distanceKm);
+
+ // 7. 棰勮閫佽揪鏃堕暱锛歱ricing_rule type=2锛坒ieldA=1鏍囬�熻揪锛宖ieldA=2鏋侀�熻揪锛�
+ List<PricingRule> timeRules = pricingRuleMapper.selectList(new QueryWrapper<PricingRule>().lambda()
+ .eq(PricingRule::getDeleted, Constants.ZERO)
+ .eq(PricingRule::getType, Constants.TWO)
+ .eq(PricingRule::getCityId, dto.getCityId())
+ .in(PricingRule::getFieldA, Arrays.asList("1", "2")));
+ for (PricingRule tr : timeRules) {
+ BigDecimal baseKm = new BigDecimal(tr.getFieldB());
+ int baseHours = Integer.parseInt(tr.getFieldC());
+ BigDecimal extraKm = new BigDecimal(tr.getFieldD());
+ int extraHours = Integer.parseInt(tr.getFieldE());
+ int hours;
+ if (distanceKm.compareTo(baseKm) <= 0) {
+ hours = baseHours;
+ } else {
+ BigDecimal overDistance = distanceKm.subtract(baseKm);
+ int extraCount = overDistance.divide(extraKm, 0, RoundingMode.CEILING).intValue();
+ hours = baseHours + extraCount * extraHours;
+ }
+ if ("1".equals(tr.getFieldA())) {
+ result.setStandardHours(hours);
+ } else if ("2".equals(tr.getFieldA())) {
+ result.setUrgentHours(hours);
+ }
+ }
+
return result;
}
@@ -742,6 +769,7 @@
// 鐗╁搧淇℃伅
orders.setGoodType(dto.getGoodType());
+ orders.setGoodLevel(goodTypeCategory.getRelationId());
// 鎷兼帴鐗╁搧淇℃伅锛氱墿鍝佺被鍨嬪悕绉般�佸昂瀵稿悕绉�*鏁伴噺锛堟暟缁勫瓧绗︿覆锛�
List<String> goodsParts = new ArrayList<>();
for (ItemPriceVO itemVO : priceResult.getItemList()) {
@@ -2339,6 +2367,43 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class)
+ public void memberConfirmReceipt(Integer orderId, Integer memberId) {
+ // 1. 鏌ヨ璁㈠崟
+ Orders order = ordersMapper.selectById(orderId);
+ if (order == null || Constants.equalsInteger(order.getDeleted(), Constants.ONE)) {
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "璁㈠崟涓嶅瓨鍦�");
+ }
+ // 2. 鏍¢獙褰掑睘
+ if (!memberId.equals(order.getMemberId())) {
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鏃犳潈鎿嶄綔璇ヨ鍗�");
+ }
+ // 3. 鏍¢獙璁㈠崟绫诲瀷锛氬紓鍦板瘎瀛�
+ if (!Constants.ONE.equals(order.getType())) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "浠呭紓鍦板瘎瀛樿鍗曞彲鎿嶄綔");
+ }
+ // 4. 鏍¢獙鏃犲彇浠堕棬搴�
+ if (order.getTakeShopId() != null) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "璇ヨ鍗曟湁鍙栦欢闂ㄥ簵锛岄渶闂ㄥ簵纭鍑哄簱");
+ }
+ // 5. 鏍¢獙鐘舵�侊細宸查�佽揪(5)
+ if (!Constants.equalsInteger(order.getStatus(), Constants.OrderStatus.arrived.getStatus())) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "褰撳墠璁㈠崟鐘舵�佷笉鍏佽纭鏀惰揣");
+ }
+
+ // 6. 鏇存柊璁㈠崟鐘舵�佷负宸插畬鎴�
+ Date now = new Date();
+ order.setStatus(Constants.OrderStatus.finished.getStatus());
+ order.setFinishTime(now);
+ order.setUpdateTime(now);
+ ordersMapper.updateById(order);
+
+ // 7. 鐢熸垚鏀剁泭璁板綍
+ calculateAndSaveOrderFees(orderId);
+ generateRevenueRecords(orderId);
+ }
+
+ @Override
public void calculateAndSaveOrderFees(Integer orderId) {
Orders order = ordersMapper.selectById(orderId);
if (order == null || Constants.equalsInteger(order.getDeleted(), Constants.ONE)) {
--
Gitblit v1.9.3