From eb7a808aaf7dd0a6dd2ff70f9ef3f8ce0b1e31d1 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期五, 22 五月 2026 18:27:32 +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/DriverInfoServiceImpl.java | 35 +++
server/services/src/main/java/com/doumee/core/utils/GeoUtils.java | 8
server/services/src/main/java/com/doumee/dao/vo/OrderDispatchVO.java | 2
server/services/src/main/java/com/doumee/dao/dto/CalculateLocalPriceDTO.java | 4
server/services/src/main/java/com/doumee/dao/dto/LocalStoragePricingItemDTO.java | 4
server/web/src/main/java/com/doumee/api/web/ConfigApi.java | 10
server/services/src/main/java/com/doumee/dao/dto/LocalStoragePricingSaveDTO.java | 4
server/services/src/main/java/com/doumee/service/business/impl/AreasServiceImpl.java | 63 ++++++
server/services/src/main/java/com/doumee/core/utils/geocode/MapUtil.java | 51 +++++
server/admin/src/main/java/com/doumee/api/business/PricingRuleController.java | 4
server/services/src/main/java/com/doumee/service/business/OrdersService.java | 10
server/services/src/main/java/com/doumee/service/business/impl/InvoiceRecordServiceImpl.java | 37 +++
server/services/src/main/java/com/doumee/dao/business/model/OrdersDetail.java | 12
server/admin/src/main/java/com/doumee/api/business/OrdersController.java | 7
server/admin/src/main/resources/application.yml | 2
server/services/src/main/java/com/doumee/service/business/impl/WithdrawalOrdersServiceImpl.java | 2
server/services/src/main/java/com/doumee/dao/dto/CalculateRemotePriceDTO.java | 4
server/services/src/main/java/com/doumee/dao/vo/OrdersRefundPageVO.java | 4
server/services/src/main/java/com/doumee/service/business/AreasService.java | 5
server/services/src/main/java/com/doumee/service/business/impl/ShopInfoServiceImpl.java | 6
server/services/src/main/java/com/doumee/dao/vo/OrdersExportVO.java | 41 ++-
server/services/src/main/java/com/doumee/dao/vo/ItemPriceVO.java | 4
server/services/src/main/java/com/doumee/service/business/PricingRuleService.java | 6
server/services/src/main/java/com/doumee/dao/business/model/PricingRule.java | 4
server/services/src/main/java/com/doumee/dao/vo/MyOrderVO.java | 2
server/services/src/main/java/com/doumee/dao/dto/OrdersRefundPageDTO.java | 2
server/services/db/db_change.sql | 4
server/services/src/main/java/com/doumee/dao/vo/LocalStoragePricingVO.java | 4
server/services/src/main/java/com/doumee/dao/business/model/Orders.java | 10
server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java | 223 ++++++++++++++-------
server/services/src/main/java/com/doumee/config/alipay/AlipayFundTransUniTransfer.java | 5
31 files changed, 426 insertions(+), 153 deletions(-)
diff --git a/server/admin/src/main/java/com/doumee/api/business/OrdersController.java b/server/admin/src/main/java/com/doumee/api/business/OrdersController.java
index d987e75..c355d17 100644
--- a/server/admin/src/main/java/com/doumee/api/business/OrdersController.java
+++ b/server/admin/src/main/java/com/doumee/api/business/OrdersController.java
@@ -94,9 +94,10 @@
for (Orders o : records) {
OrdersExportVO vo = new OrdersExportVO();
vo.setCode(o.getCode());
+ vo.setRelationOrderCode(o.getRelationOrderCode());
vo.setGoodsInfo(o.getGoodsInfo());
- vo.setTypeName(o.getType() != null ? (o.getType() == 0 ? "灏卞湴瀛樺彇" : "寮傚湴瀛樺彇") : "");
- vo.setOrderLevel(Constants.getDriverLevelName(Objects.nonNull(o.getOrderLevel())?Integer.valueOf(o.getOrderLevel()):Constants.ZERO));
+ vo.setTypeName(o.getType() != null ? (o.getType() == 0 ? "灏卞湴瀵勫瓨" : "鍚屽煄瀵勯��") : "");
+ vo.setOrderLevel(StringUtils.isNotBlank(o.getOrderLevel()) ? Constants.getDriverLevelName(Integer.valueOf(o.getOrderLevel())) : Constants.getDriverLevelName(Constants.ZERO));
vo.setDeclaredFee(String.valueOf(Constants.getFormatMoney(o.getDeclaredFee())));
vo.setBasicAmount(String.valueOf(Constants.getFormatMoney(o.getBasicAmount())));
vo.setTotalAmount(String.valueOf(Constants.getFormatMoney(o.getTotalAmount())));
@@ -106,8 +107,8 @@
vo.setOverdueAmount(String.valueOf(Constants.getFormatMoney(o.getOverdueAmount())));
vo.setExceptionAmount(String.valueOf(Constants.getFormatMoney(o.getExceptionAmount())));
vo.setDeductionAmount(String.valueOf(Constants.getFormatMoney(o.getDeductionAmount())));
- vo.setShopCompensationAmount(String.valueOf(Constants.getFormatMoney(o.getShopCompensationAmount())));
vo.setExceptionFee(String.valueOf(Constants.getFormatMoney(o.getExceptionFee())));
+ vo.setShopCompensationAmount(String.valueOf(Constants.getFormatMoney(o.getShopCompensationAmount())));
vo.setStatusDesc(o.getStatusDesc());
vo.setSettlementDesc(o.getSettlementStatus() != null ? (o.getSettlementStatus() == 1 ? "宸茬粨绠�" : "寰呯粨绠�") : "");
vo.setPayTime(o.getPayTime());
diff --git a/server/admin/src/main/java/com/doumee/api/business/PricingRuleController.java b/server/admin/src/main/java/com/doumee/api/business/PricingRuleController.java
index 14db44a..c721b08 100644
--- a/server/admin/src/main/java/com/doumee/api/business/PricingRuleController.java
+++ b/server/admin/src/main/java/com/doumee/api/business/PricingRuleController.java
@@ -44,7 +44,7 @@
@PreventRepeat
- @ApiOperation("鎵归噺淇濆瓨灏卞湴瀛樺彇瑙勫垯")
+ @ApiOperation("鎵归噺淇濆瓨灏卞湴瀵勫瓨瑙勫垯")
@PostMapping("/localStorage/batchSave")
@RequiresPermissions("business:pricingRule:create")
public ApiResponse batchSaveLocalStoragePricing(@RequestBody @Validated LocalStoragePricingSaveDTO request) {
@@ -52,7 +52,7 @@
return ApiResponse.success(null);
}
- @ApiOperation("鏌ヨ灏卞湴瀛樺彇瑙勫垯鍒楄〃")
+ @ApiOperation("鏌ヨ灏卞湴瀵勫瓨瑙勫垯鍒楄〃")
@GetMapping("/localStorage/list")
@RequiresPermissions("business:pricingRule:query")
public ApiResponse<List<LocalStoragePricingVO>> listLocalStoragePricing(@RequestParam Integer cityId) {
diff --git a/server/admin/src/main/resources/application.yml b/server/admin/src/main/resources/application.yml
index 2966e7d..a67904a 100644
--- a/server/admin/src/main/resources/application.yml
+++ b/server/admin/src/main/resources/application.yml
@@ -12,7 +12,7 @@
spring:
profiles:
- active: pro
+ active: dev
# JSON杩斿洖閰嶇疆
jackson:
# 榛樿鏃跺尯
diff --git a/server/services/db/db_change.sql b/server/services/db/db_change.sql
index 7b14690..a1ac752 100644
--- a/server/services/db/db_change.sql
+++ b/server/services/db/db_change.sql
@@ -418,10 +418,10 @@
-- ============================================================
--- 2026/04/15 璁㈠崟鐗╁搧鏄庣粏琛ㄦ坊鍔犲氨鍦板瓨鍙栧崟浠峰瓧娈�
+-- 2026/04/15 璁㈠崟鐗╁搧鏄庣粏琛ㄦ坊鍔犲氨鍦板瘎瀛樺崟浠峰瓧娈�
-- ============================================================
-ALTER TABLE `orders_detail` ADD COLUMN `LOCALLY_PRICE` BIGINT DEFAULT NULL COMMENT '灏卞湴瀛樺彇鍗曚环(鍒�/澶�)' AFTER `EXTRA_PRICE`;
+ALTER TABLE `orders_detail` ADD COLUMN `LOCALLY_PRICE` BIGINT DEFAULT NULL COMMENT '灏卞湴瀵勫瓨鍗曚环(鍒�/澶�)' AFTER `EXTRA_PRICE`;
-- ============================================================
diff --git a/server/services/src/main/java/com/doumee/config/alipay/AlipayFundTransUniTransfer.java b/server/services/src/main/java/com/doumee/config/alipay/AlipayFundTransUniTransfer.java
index 0aafe4e..3020df2 100644
--- a/server/services/src/main/java/com/doumee/config/alipay/AlipayFundTransUniTransfer.java
+++ b/server/services/src/main/java/com/doumee/config/alipay/AlipayFundTransUniTransfer.java
@@ -74,11 +74,10 @@
AlipayFundTransUniTransferModel data = new AlipayFundTransUniTransferModel();
// 璁剧疆鍟嗗渚у敮涓�璁㈠崟鍙�
data.setOutBizNo(dto.getOutBizNo());
- // 璁剧疆璁㈠崟鎬婚噾棰�
- data.setTransAmount("0.1");
// 璁剧疆鎻忚堪鐗瑰畾鐨勪笟鍔″満鏅�
data.setOutBizNo(dto.getOutBizNo());
-// data.setTransAmount(dto.getTransAmount().setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
+ // 璁剧疆璁㈠崟鎬婚噾棰�
+ data.setTransAmount(dto.getTransAmount().setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
data.setBizScene("DIRECT_TRANSFER");
// 璁剧疆涓氬姟浜у搧鐮�
data.setProductCode("TRANS_ACCOUNT_NO_PWD");
diff --git a/server/services/src/main/java/com/doumee/core/utils/GeoUtils.java b/server/services/src/main/java/com/doumee/core/utils/GeoUtils.java
index 71846fc..b1e151c 100644
--- a/server/services/src/main/java/com/doumee/core/utils/GeoUtils.java
+++ b/server/services/src/main/java/com/doumee/core/utils/GeoUtils.java
@@ -29,10 +29,10 @@
}
public static void main(String[] args) {
- double lat1 = 30.660622; // 绾界害绾害
- double lon1 = 114.172; // 绾界害缁忓害
- double lat2 = 30.621857; // 娲涙潐鐭剁含搴�
- double lon2 = 114.12311; // 娲涙潐鐭剁粡搴�
+ double lat1 = 31.969801; // 绾界害绾害
+ double lon1 = 118.797030; // 绾界害缁忓害
+ double lat2 = 31.969175; // 娲涙潐鐭剁含搴�
+ double lon2 = 118.797440; // 娲涙潐鐭剁粡搴�
double distance = haversineDistance(lat1, lon1, lat2, lon2);
System.out.printf("Distance: %.2f km%n", distance);
diff --git a/server/services/src/main/java/com/doumee/core/utils/geocode/MapUtil.java b/server/services/src/main/java/com/doumee/core/utils/geocode/MapUtil.java
index 1bb318f..137d704 100644
--- a/server/services/src/main/java/com/doumee/core/utils/geocode/MapUtil.java
+++ b/server/services/src/main/java/com/doumee/core/utils/geocode/MapUtil.java
@@ -1,8 +1,10 @@
package com.doumee.core.utils.geocode;
+import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.doumee.core.utils.Http;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@@ -24,6 +26,9 @@
/** 閫嗗湴鐞嗚В鏋� */
private static final String GEO_URL = "https://restapi.amap.com/v3/geocode/regeo";
+ /** 姝e悜鍦扮悊瑙f瀽 */
+ private static final String GEOCODE_URL = "https://restapi.amap.com/v3/geocode/geo";
+
/** 椹捐溅璺緞瑙勫垝 */
private static final String DRIVING_URL = "https://restapi.amap.com/v3/direction/driving";
@@ -36,6 +41,52 @@
}
/**
+ * 姝e悜鍦扮悊瑙f瀽 - 鏍规嵁鍦板潃鑾峰彇缁忕含搴�
+ *
+ * @param address 鍦板潃鏂囨湰锛堝"鍥涘窛鐪佹垚閮藉競"锛�
+ * @return "lat,lng" 鏍煎紡鐨勭粡绾害瀛楃涓诧紝瑙f瀽澶辫触杩斿洖 null
+ */
+ public static String geocode(String address) {
+ try {
+ String url = GEOCODE_URL
+ + "?key=" + amapKey
+ + "&address=" + URLEncoder.encode(address, "UTF-8");
+
+ log.info("楂樺痉鍦板浘姝e悜鍦扮悊瑙f瀽璇锋眰: address={}", address);
+
+ JSONObject json = new Http().build(url)
+ .setConnectTimeout(5000)
+ .setReadTimeout(10000)
+ .get()
+ .toJSONObject();
+
+ log.info("楂樺痉鍦板浘姝e悜鍦扮悊瑙f瀽鍝嶅簲: {}", json);
+
+ if (!"1".equals(json.getString("status"))) {
+ log.warn("楂樺痉鍦板浘姝e悜鍦扮悊瑙f瀽澶辫触: {}", json.getString("info"));
+ return null;
+ }
+
+ JSONArray geocodes = json.getJSONArray("geocodes");
+ if (geocodes == null || geocodes.isEmpty()) {
+ log.warn("楂樺痉鍦板浘姝e悜鍦扮悊瑙f瀽鏃犵粨鏋�: address={}", address);
+ return null;
+ }
+
+ String location = geocodes.getJSONObject(0).getString("location"); // lng,lat
+ if (StringUtils.isBlank(location)) {
+ return null;
+ }
+ String[] parts = location.split(",");
+ // 杞负 lat,lng 鏍煎紡
+ return parts[1] + "," + parts[0];
+ } catch (Exception e) {
+ log.error("楂樺痉鍦板浘姝e悜鍦扮悊瑙f瀽寮傚父: address={}", address, e);
+ return null;
+ }
+ }
+
+ /**
* 閫嗗湴鐞嗚В鏋� - 鏍规嵁缁忕含搴﹁幏鍙栧湴鍧�淇℃伅
* 楂樺痉鍧愭爣绯讳负 lng,lat锛堜笌鑵捐 lat,lng 鐩稿弽锛�
*
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/Orders.java b/server/services/src/main/java/com/doumee/dao/business/model/Orders.java
index 77c5e9c..11286c2 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/Orders.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/Orders.java
@@ -57,8 +57,8 @@
@ExcelColumn(name = "浼氬憳涓婚敭")
private Integer memberId;
- @ApiModelProperty(value = "瀵勫瓨鏂瑰紡:0=灏卞湴瀛樺彇锛�1=寮傚湴瀛樺彇", example = "0")
- @ExcelColumn(name = "瀵勫瓨鏂瑰紡", valueMapping = "0=灏卞湴瀛樺彇;1=寮傚湴瀛樺彇;")
+ @ApiModelProperty(value = "瀵勫瓨鏂瑰紡:0=灏卞湴瀵勫瓨锛�1=鍚屽煄瀵勯��", example = "0")
+ @ExcelColumn(name = "瀵勫瓨鏂瑰紡", valueMapping = "0=灏卞湴瀵勫瓨;1=鍚屽煄瀵勯��;")
private Integer type;
@ApiModelProperty(value = "鏄惁杞崲璁㈠崟锛�0=鍚︼紱1=鏄紙寮傚湴杞氨鍦帮級", example = "0")
@@ -80,6 +80,10 @@
@ApiModelProperty(value = "鍏宠仈涓昏鍗�")
@ExcelColumn(name = "鍏宠仈涓昏鍗�")
private Integer relationOrderId;
+
+ @TableField(exist = false)
+ @ApiModelProperty(value = "鍏宠仈璁㈠崟鍙�")
+ private String relationOrderCode;
@ApiModelProperty(value = "寮傚父鍘熷洜")
@ExcelColumn(name = "寮傚父鍘熷洜")
@@ -133,7 +137,7 @@
@ApiModelProperty(value = "鍙栦欢绾害")
private BigDecimal takeLgt;
- @ApiModelProperty(value = "璺濈锛堝紓鍦板瓨鍙栦娇鐢級")
+ @ApiModelProperty(value = "璺濈锛堝悓鍩庡瘎閫佷娇鐢級")
@ExcelColumn(name = "璺濈")
private BigDecimal distance;
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/OrdersDetail.java b/server/services/src/main/java/com/doumee/dao/business/model/OrdersDetail.java
index 91519b1..5f70cad 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/OrdersDetail.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/OrdersDetail.java
@@ -73,24 +73,24 @@
@ExcelColumn(name = "鍗曚环")
private Long unitPrice;
- @ApiModelProperty(value = "寮傚湴瀛樺彇 - 閰嶉�佽捣姝ラ噷绋�")
+ @ApiModelProperty(value = "鍚屽煄瀵勯�� - 閰嶉�佽捣姝ラ噷绋�")
@ExcelColumn(name = "閰嶉�佽捣姝ラ噷绋�")
private BigDecimal startDistance;
- @ApiModelProperty(value = "寮傚湴瀛樺彇 - 閰嶉�佽捣姝ラ噷绋嬫瘡鍏噷鍗曚环锛堝垎锛�")
+ @ApiModelProperty(value = "鍚屽煄瀵勯�� - 閰嶉�佽捣姝ラ噷绋嬫瘡鍏噷鍗曚环锛堝垎锛�")
@ExcelColumn(name = "璧锋閲岀▼鍗曚环")
private Long startPrice;
- @ApiModelProperty(value = "寮傚湴瀛樺彇 - 瓒呭嚭棣栧崟閲岀▼鍏噷鏁�")
+ @ApiModelProperty(value = "鍚屽煄瀵勯�� - 瓒呭嚭棣栧崟閲岀▼鍏噷鏁�")
@ExcelColumn(name = "瓒呭嚭棣栧崟閲岀▼")
private BigDecimal extraDistance;
- @ApiModelProperty(value = "寮傚湴瀛樺彇 - 瓒呭嚭棣栧崟閲岀▼鍗曚环锛堝垎锛�")
+ @ApiModelProperty(value = "鍚屽煄瀵勯�� - 瓒呭嚭棣栧崟閲岀▼鍗曚环锛堝垎锛�")
@ExcelColumn(name = "瓒呭嚭棣栧崟閲岀▼鍗曚环")
private Long extraPrice;
- @ApiModelProperty(value = "灏卞湴瀛樺彇 - 鍗曚环锛堝垎锛�")
- @ExcelColumn(name = "灏卞湴瀛樺彇 - 鍗曚环")
+ @ApiModelProperty(value = "灏卞湴瀵勫瓨 - 鍗曚环锛堝垎锛�")
+ @ExcelColumn(name = "灏卞湴瀵勫瓨 - 鍗曚环")
private Long locallyPrice;
}
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/PricingRule.java b/server/services/src/main/java/com/doumee/dao/business/model/PricingRule.java
index fa3ba0e..94012c0 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/PricingRule.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/PricingRule.java
@@ -48,8 +48,8 @@
@ApiModelProperty(value = "鍩庡競涓婚敭锛坅rea_id锛�", example = "1")
private Integer cityId;
- @ApiModelProperty(value = "绫诲瀷锛�0=灏卞湴瀛樺彇瑙勫垯锛�1=寮傚湴瀛樺彇瑙勫垯锛�2=棰勮鏃舵晥锛�3=闂ㄥ簵娉ㄥ唽鎶奸噾锛�4=鍒嗘垚姣斾緥", example = "0")
- @ExcelColumn(name = "绫诲瀷", index = 2, width = 10, valueMapping = "0=灏卞湴瀛樺彇瑙勫垯;1=寮傚湴瀛樺彇瑙勫垯;2=棰勮澶辨晥;3=闂ㄥ簵娉ㄥ唽鎶奸噾;4=鍒嗘垚姣斾緥;")
+ @ApiModelProperty(value = "绫诲瀷锛�0=灏卞湴瀵勫瓨瑙勫垯锛�1=鍚屽煄瀵勯�佽鍒欙紱2=棰勮鏃舵晥锛�3=闂ㄥ簵娉ㄥ唽鎶奸噾锛�4=鍒嗘垚姣斾緥", example = "0")
+ @ExcelColumn(name = "绫诲瀷", index = 2, width = 10, valueMapping = "0=灏卞湴瀵勫瓨瑙勫垯;1=鍚屽煄瀵勯�佽鍒�;2=棰勮澶辨晥;3=闂ㄥ簵娉ㄥ唽鎶奸噾;4=鍒嗘垚姣斾緥;")
private Integer type;
@ApiModelProperty(value = "鍙傛暟1锛歵ype 锛�0/1锛�= 鍏宠仈 鐗╁搧灏哄锛坈ategory type =4锛�;type 锛�2锛� 锛堥粯璁� 1鏍囬�熻揪锛�2=鏋侀�熻揪锛� 锛� type (3) = 浼佷笟绫诲瀷锛�0=浼佷笟锛�1=涓汉锛夛紱type (4) = 绫诲瀷锛堜紒涓�/涓汉/閰嶉�佸憳锛�")
diff --git a/server/services/src/main/java/com/doumee/dao/dto/CalculateLocalPriceDTO.java b/server/services/src/main/java/com/doumee/dao/dto/CalculateLocalPriceDTO.java
index f57a561..a1b7429 100644
--- a/server/services/src/main/java/com/doumee/dao/dto/CalculateLocalPriceDTO.java
+++ b/server/services/src/main/java/com/doumee/dao/dto/CalculateLocalPriceDTO.java
@@ -12,13 +12,13 @@
import java.util.List;
/**
- * 灏卞湴瀛樺彇棰勪及璐圭敤璇锋眰DTO
+ * 灏卞湴瀵勫瓨棰勪及璐圭敤璇锋眰DTO
*
* @Author : Rk
* @create 2026/4/14
*/
@Data
-@ApiModel("灏卞湴瀛樺彇棰勪及璐圭敤璇锋眰")
+@ApiModel("灏卞湴瀵勫瓨棰勪及璐圭敤璇锋眰")
public class CalculateLocalPriceDTO {
@ApiModelProperty(value = "鍩庡競涓婚敭", required = true)
diff --git a/server/services/src/main/java/com/doumee/dao/dto/CalculateRemotePriceDTO.java b/server/services/src/main/java/com/doumee/dao/dto/CalculateRemotePriceDTO.java
index f900b41..756b040 100644
--- a/server/services/src/main/java/com/doumee/dao/dto/CalculateRemotePriceDTO.java
+++ b/server/services/src/main/java/com/doumee/dao/dto/CalculateRemotePriceDTO.java
@@ -11,13 +11,13 @@
import java.util.List;
/**
- * 寮傚湴瀛樺彇棰勪及璐圭敤璇锋眰DTO
+ * 鍚屽煄瀵勯�侀浼拌垂鐢ㄨ姹侱TO
*
* @Author : Rk
* @create 2026/4/14
*/
@Data
-@ApiModel("寮傚湴瀛樺彇棰勪及璐圭敤璇锋眰")
+@ApiModel("鍚屽煄瀵勯�侀浼拌垂鐢ㄨ姹�")
public class CalculateRemotePriceDTO {
@ApiModelProperty(value = "鍩庡競涓婚敭", required = true)
diff --git a/server/services/src/main/java/com/doumee/dao/dto/LocalStoragePricingItemDTO.java b/server/services/src/main/java/com/doumee/dao/dto/LocalStoragePricingItemDTO.java
index b61ba87..f1b6adb 100644
--- a/server/services/src/main/java/com/doumee/dao/dto/LocalStoragePricingItemDTO.java
+++ b/server/services/src/main/java/com/doumee/dao/dto/LocalStoragePricingItemDTO.java
@@ -8,12 +8,12 @@
import java.io.Serializable;
/**
- * 灏卞湴瀛樺彇瑙勫垯椤�
+ * 灏卞湴瀵勫瓨瑙勫垯椤�
* @author rk
* @date 2026/04/08
*/
@Data
-@ApiModel("灏卞湴瀛樺彇瑙勫垯椤�")
+@ApiModel("灏卞湴瀵勫瓨瑙勫垯椤�")
public class LocalStoragePricingItemDTO implements Serializable {
@ApiModelProperty(value = "鐗╁搧瑙勬牸涓婚敭(category.id, type=4)", required = true, example = "1")
diff --git a/server/services/src/main/java/com/doumee/dao/dto/LocalStoragePricingSaveDTO.java b/server/services/src/main/java/com/doumee/dao/dto/LocalStoragePricingSaveDTO.java
index 3ab3a86..ded980f 100644
--- a/server/services/src/main/java/com/doumee/dao/dto/LocalStoragePricingSaveDTO.java
+++ b/server/services/src/main/java/com/doumee/dao/dto/LocalStoragePricingSaveDTO.java
@@ -11,12 +11,12 @@
import java.util.List;
/**
- * 灏卞湴瀛樺彇瑙勫垯鎵归噺淇濆瓨璇锋眰
+ * 灏卞湴瀵勫瓨瑙勫垯鎵归噺淇濆瓨璇锋眰
* @author rk
* @date 2026/04/08
*/
@Data
-@ApiModel("灏卞湴瀛樺彇瑙勫垯鎵归噺淇濆瓨璇锋眰")
+@ApiModel("灏卞湴瀵勫瓨瑙勫垯鎵归噺淇濆瓨璇锋眰")
public class LocalStoragePricingSaveDTO implements Serializable {
@ApiModelProperty(value = "鍩庡競涓婚敭", required = true, example = "1")
diff --git a/server/services/src/main/java/com/doumee/dao/dto/OrdersRefundPageDTO.java b/server/services/src/main/java/com/doumee/dao/dto/OrdersRefundPageDTO.java
index 8f2154b..18eed8c 100644
--- a/server/services/src/main/java/com/doumee/dao/dto/OrdersRefundPageDTO.java
+++ b/server/services/src/main/java/com/doumee/dao/dto/OrdersRefundPageDTO.java
@@ -23,7 +23,7 @@
@ApiModelProperty(value = "鐗╁搧淇℃伅")
private String goodsInfo;
- @ApiModelProperty(value = "璁㈠崟绫诲瀷锛�0=灏卞湴瀛樺彇锛�1=寮傚湴瀛樺彇")
+ @ApiModelProperty(value = "璁㈠崟绫诲瀷锛�0=灏卞湴瀵勫瓨锛�1=鍚屽煄瀵勯��")
private Integer orderType;
@ApiModelProperty(value = "閫�娆剧姸鎬侊細0=閫�娆句腑锛�1=閫�娆炬垚鍔燂紱2=閫�娆惧け璐�")
diff --git a/server/services/src/main/java/com/doumee/dao/vo/ItemPriceVO.java b/server/services/src/main/java/com/doumee/dao/vo/ItemPriceVO.java
index d697940..d2b1892 100644
--- a/server/services/src/main/java/com/doumee/dao/vo/ItemPriceVO.java
+++ b/server/services/src/main/java/com/doumee/dao/vo/ItemPriceVO.java
@@ -34,7 +34,7 @@
@ApiModelProperty("灏忚(鍒�)")
private Long subtotal;
- // ========== 寮傚湴瀛樺彇棰濆瀛楁 ==========
+ // ========== 鍚屽煄瀵勯�侀澶栧瓧娈� ==========
@ApiModelProperty("璧锋璺濈(km)")
private BigDecimal startDistance;
@@ -48,6 +48,6 @@
@ApiModelProperty("瓒呭嚭璺濈鍗曚环(鍒�)")
private Long extraPrice;
- @ApiModelProperty("灏卞湴瀛樺彇鍗曚环(鍒�/澶�)")
+ @ApiModelProperty("灏卞湴瀵勫瓨鍗曚环(鍒�/澶�)")
private Long locallyPrice;
}
diff --git a/server/services/src/main/java/com/doumee/dao/vo/LocalStoragePricingVO.java b/server/services/src/main/java/com/doumee/dao/vo/LocalStoragePricingVO.java
index 22b2e71..5ce44cd 100644
--- a/server/services/src/main/java/com/doumee/dao/vo/LocalStoragePricingVO.java
+++ b/server/services/src/main/java/com/doumee/dao/vo/LocalStoragePricingVO.java
@@ -7,12 +7,12 @@
import java.io.Serializable;
/**
- * 灏卞湴瀛樺彇瑙勫垯鍒楄〃杩斿洖
+ * 灏卞湴瀵勫瓨瑙勫垯鍒楄〃杩斿洖
* @author rk
* @date 2026/04/08
*/
@Data
-@ApiModel("灏卞湴瀛樺彇瑙勫垯椤�(鍒楄〃杩斿洖)")
+@ApiModel("灏卞湴瀵勫瓨瑙勫垯椤�(鍒楄〃杩斿洖)")
public class LocalStoragePricingVO implements Serializable {
@ApiModelProperty(value = "瑙勫垯涓婚敭")
diff --git a/server/services/src/main/java/com/doumee/dao/vo/MyOrderVO.java b/server/services/src/main/java/com/doumee/dao/vo/MyOrderVO.java
index 30c81f7..d4bb85c 100644
--- a/server/services/src/main/java/com/doumee/dao/vo/MyOrderVO.java
+++ b/server/services/src/main/java/com/doumee/dao/vo/MyOrderVO.java
@@ -23,7 +23,7 @@
@ApiModelProperty(value = "璁㈠崟缂栧彿")
private String code;
- @ApiModelProperty(value = "瀵勫瓨鏂瑰紡:0=灏卞湴瀛樺彇锛�1=寮傚湴瀛樺彇")
+ @ApiModelProperty(value = "瀵勫瓨鏂瑰紡:0=灏卞湴瀵勫瓨锛�1=鍚屽煄瀵勯��")
private Integer type;
@ApiModelProperty(value = "灏卞湴瀵勫瓨鐘舵�侊細0=寰呮敮浠�;1=寰呭瘎瀛�;2=宸插瘎瀛�;5=寰呭彇浠�;6=瀛樺湪閫炬湡;7=宸插畬鎴�;96:璁㈠崟鍏抽棴锛堥��娆撅級;97:鍙栨秷閫炬湡;98=鍙栨秷涓�;99=宸插彇娑�;" +
diff --git a/server/services/src/main/java/com/doumee/dao/vo/OrderDispatchVO.java b/server/services/src/main/java/com/doumee/dao/vo/OrderDispatchVO.java
index f4f32c8..b6ca013 100644
--- a/server/services/src/main/java/com/doumee/dao/vo/OrderDispatchVO.java
+++ b/server/services/src/main/java/com/doumee/dao/vo/OrderDispatchVO.java
@@ -21,7 +21,7 @@
@ApiModelProperty(value = "瀹炰粯閲戦锛堝厓锛�")
private Double payAmountYuan;
- @ApiModelProperty(value = "閰嶉�佹柟寮�:0=灏卞湴瀛樺彇锛�1=寮傚湴瀛樺彇")
+ @ApiModelProperty(value = "閰嶉�佹柟寮�:0=灏卞湴瀵勫瓨锛�1=鍚屽煄瀵勯��")
private Integer type;
@ApiModelProperty(value = "閰嶉�佹柟寮忔弿杩�")
diff --git a/server/services/src/main/java/com/doumee/dao/vo/OrdersExportVO.java b/server/services/src/main/java/com/doumee/dao/vo/OrdersExportVO.java
index ca23c55..79754fd 100644
--- a/server/services/src/main/java/com/doumee/dao/vo/OrdersExportVO.java
+++ b/server/services/src/main/java/com/doumee/dao/vo/OrdersExportVO.java
@@ -11,57 +11,60 @@
@ExcelColumn(name = "璁㈠崟缂栧彿", index = 0)
private String code;
- @ExcelColumn(name = "鐗╁搧淇℃伅", index = 1)
+ @ExcelColumn(name = "鍏宠仈璁㈠崟鍙�", index = 1)
+ private String relationOrderCode;
+
+ @ExcelColumn(name = "鐗╁搧淇℃伅", index = 2)
private String goodsInfo;
- @ExcelColumn(name = "绫诲瀷", index = 2)
+ @ExcelColumn(name = "绫诲瀷", index = 3)
private String typeName;
- @ExcelColumn(name = "璁㈠崟绾у埆", index = 3)
+ @ExcelColumn(name = "璁㈠崟绾у埆", index = 4)
private String orderLevel;
- @ExcelColumn(name = "鐗╁搧淇濊垂(鍏�)", index = 4)
+ @ExcelColumn(name = "鐗╁搧淇濊垂(鍏�)", index = 5)
private String declaredFee;
- @ExcelColumn(name = "鍩虹鏈嶅姟璐�(鍏�)", index = 5)
+ @ExcelColumn(name = "鍩虹鏈嶅姟璐�(鍏�)", index = 6)
private String basicAmount;
- @ExcelColumn(name = "璁㈠崟鎬讳环(鍏�)", index = 6)
+ @ExcelColumn(name = "璁㈠崟鎬讳环(鍏�)", index = 7)
private String totalAmount;
- @ExcelColumn(name = "瀹炰粯鐜伴噾(鍏�)", index = 7)
+ @ExcelColumn(name = "瀹炰粯鐜伴噾(鍏�)", index = 8)
private String payAmount;
- @ExcelColumn(name = "鍔犳�ヨ垂(鍏�)", index = 8)
+ @ExcelColumn(name = "鍔犳�ヨ垂(鍏�)", index = 9)
private String urgentAmount;
- @ExcelColumn(name = "閫�娆鹃噾棰�(鍏�)", index = 9)
+ @ExcelColumn(name = "閫�娆鹃噾棰�(鍏�)", index = 10)
private String refundAmount;
- @ExcelColumn(name = "瓒呮椂閲戦(鍏�)", index = 10)
+ @ExcelColumn(name = "瓒呮椂閲戦(鍏�)", index = 11)
private String overdueAmount;
- @ExcelColumn(name = "寮傚父閲戦(鍏�)", index = 11)
+ @ExcelColumn(name = "寮傚父閲戦(鍏�)", index = 12)
private String exceptionAmount;
- @ExcelColumn(name = "浼樻儬鍒告姌鎵�(鍏�)", index = 12)
+ @ExcelColumn(name = "浼樻儬鍒告姌鎵�(鍏�)", index = 13)
private String deductionAmount;
-
- @ExcelColumn(name = "闂ㄥ簵琛ュ伩璐圭敤(鍏�)", index = 13)
- private String shopCompensationAmount;
@ExcelColumn(name = "鍙告満琛ュ伩璐圭敤(鍏�)", index = 14)
private String exceptionFee;
- @ExcelColumn(name = "璁㈠崟鐘舵��", index = 15)
+ @ExcelColumn(name = "闂ㄥ簵淇濈琛ヨ创(鍏�)", index = 15)
+ private String shopCompensationAmount;
+
+ @ExcelColumn(name = "璁㈠崟鐘舵��", index = 16)
private String statusDesc;
- @ExcelColumn(name = "缁撶畻鐘舵��", index = 16)
+ @ExcelColumn(name = "缁撶畻鐘舵��", index = 17)
private String settlementDesc;
- @ExcelColumn(name = "鏀粯鏃堕棿", index = 17, dateFormat = "yyyy-MM-dd HH:mm:ss", width = 16)
+ @ExcelColumn(name = "鏀粯鏃堕棿", index = 18, dateFormat = "yyyy-MM-dd HH:mm:ss", width = 16)
private Date payTime;
- @ExcelColumn(name = "鍒涘缓鏃堕棿", index = 18, dateFormat = "yyyy-MM-dd HH:mm:ss", width = 16)
+ @ExcelColumn(name = "鍒涘缓鏃堕棿", index = 19, dateFormat = "yyyy-MM-dd HH:mm:ss", width = 16)
private Date createTime;
}
diff --git a/server/services/src/main/java/com/doumee/dao/vo/OrdersRefundPageVO.java b/server/services/src/main/java/com/doumee/dao/vo/OrdersRefundPageVO.java
index 5fd1cea..b8799f6 100644
--- a/server/services/src/main/java/com/doumee/dao/vo/OrdersRefundPageVO.java
+++ b/server/services/src/main/java/com/doumee/dao/vo/OrdersRefundPageVO.java
@@ -32,8 +32,8 @@
@ApiModelProperty(value = "鐗╁搧淇℃伅")
private String goodsInfo;
- @ExcelColumn(name = "璁㈠崟绫诲瀷", valueMapping = "0=灏卞湴瀛樺彇;1=寮傚湴瀛樺彇;")
- @ApiModelProperty(value = "璁㈠崟绫诲瀷锛�0=灏卞湴瀛樺彇锛�1=寮傚湴瀛樺彇")
+ @ExcelColumn(name = "璁㈠崟绫诲瀷", valueMapping = "0=灏卞湴瀵勫瓨;1=鍚屽煄瀵勯��;")
+ @ApiModelProperty(value = "璁㈠崟绫诲瀷锛�0=灏卞湴瀵勫瓨锛�1=鍚屽煄瀵勯��")
private Integer orderType;
@ExcelColumn(name = "璁㈠崟绾у埆")
diff --git a/server/services/src/main/java/com/doumee/service/business/AreasService.java b/server/services/src/main/java/com/doumee/service/business/AreasService.java
index 624fbd0..c3ade4a 100644
--- a/server/services/src/main/java/com/doumee/service/business/AreasService.java
+++ b/server/services/src/main/java/com/doumee/service/business/AreasService.java
@@ -159,4 +159,9 @@
*/
void updateStatus(Areas areas);
+ /**
+ * 涓�娆℃�э細涓烘墍鏈夊煄甯傜骇鍒尯鍒掑~鍏呯粡绾害鍒癷nfo瀛楁
+ */
+ String fillCityLocation();
+
}
diff --git a/server/services/src/main/java/com/doumee/service/business/OrdersService.java b/server/services/src/main/java/com/doumee/service/business/OrdersService.java
index 02be838..340440b 100644
--- a/server/services/src/main/java/com/doumee/service/business/OrdersService.java
+++ b/server/services/src/main/java/com/doumee/service/business/OrdersService.java
@@ -213,17 +213,17 @@
BigDecimal calculateInsuranceFee(BigDecimal declaredValue);
/**
- * 璁$畻灏卞湴瀛樺彇棰勪及璐圭敤
+ * 璁$畻灏卞湴瀵勫瓨棰勪及璐圭敤
*
- * @param dto 灏卞湴瀛樺彇璁′环璇锋眰鍙傛暟
+ * @param dto 灏卞湴瀵勫瓨璁′环璇锋眰鍙傛暟
* @return 浠锋牸璁$畻缁撴灉
*/
PriceCalculateVO calculateLocalPrice(CalculateLocalPriceDTO dto);
/**
- * 璁$畻寮傚湴瀛樺彇棰勪及璐圭敤
+ * 璁$畻鍚屽煄瀵勯�侀浼拌垂鐢�
*
- * @param dto 寮傚湴瀛樺彇璁′环璇锋眰鍙傛暟
+ * @param dto 鍚屽煄瀵勯�佽浠疯姹傚弬鏁�
* @return 浠锋牸璁$畻缁撴灉
*/
PriceCalculateVO calculateRemotePrice(CalculateRemotePriceDTO dto);
@@ -451,7 +451,7 @@
int notifyArrivalPickUp();
/**
- * 璁㈠崟寮傚父澶勭悊锛氬紓鍦版棤鍙栦欢闂ㄥ簵宸查�佽揪璁㈠崟锛屽垱寤哄氨鍦板瓨鍙栨柊璁㈠崟
+ * 璁㈠崟寮傚父澶勭悊锛氬紓鍦版棤鍙栦欢闂ㄥ簵宸查�佽揪璁㈠崟锛屽垱寤哄氨鍦板瘎瀛樻柊璁㈠崟
*/
void handleOrderException(HandleOrderExceptionDTO dto);
diff --git a/server/services/src/main/java/com/doumee/service/business/PricingRuleService.java b/server/services/src/main/java/com/doumee/service/business/PricingRuleService.java
index d4d6419..7001c11 100644
--- a/server/services/src/main/java/com/doumee/service/business/PricingRuleService.java
+++ b/server/services/src/main/java/com/doumee/service/business/PricingRuleService.java
@@ -108,15 +108,15 @@
long count(PricingRule pricingRule);
/**
- * 鎵归噺淇濆瓨灏卞湴瀛樺彇瑙勫垯
+ * 鎵归噺淇濆瓨灏卞湴瀵勫瓨瑙勫垯
* @param request 鎵归噺淇濆瓨璇锋眰
*/
void batchSaveLocalStoragePricing(LocalStoragePricingSaveDTO request);
/**
- * 鏌ヨ灏卞湴瀛樺彇瑙勫垯鍒楄〃
+ * 鏌ヨ灏卞湴瀵勫瓨瑙勫垯鍒楄〃
* @param cityId 鍩庡競涓婚敭
- * @return 灏卞湴瀛樺彇瑙勫垯鍒楄〃
+ * @return 灏卞湴瀵勫瓨瑙勫垯鍒楄〃
*/
List<LocalStoragePricingVO> listLocalStoragePricing(Integer cityId);
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/AreasServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/AreasServiceImpl.java
index d65830e..8fe7aff 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/AreasServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/AreasServiceImpl.java
@@ -12,6 +12,7 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.PinYinUtil;
+import com.doumee.core.utils.geocode.MapUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.AreasMapper;
import com.doumee.dao.business.PricingRuleMapper;
@@ -19,7 +20,9 @@
import com.doumee.dao.business.model.PricingRule;
import com.doumee.service.business.AreasService;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
+import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -35,6 +38,7 @@
* @author 姹熻箘韫�
* @date 2023/02/15 08:55
*/
+@Slf4j
@Service
public class AreasServiceImpl implements AreasService {
public static List<Areas> ALL_AREA_LIST;
@@ -71,6 +75,10 @@
areas.setCreateDate(new Date());
areasMapper.insert(areas);
areas.setCode(areas.getId().toString());
+ // 鍩庡競绾у尯鍒掕嚜鍔ㄥ~鍏呯粡绾害
+ if (Constants.equalsInteger(areas.getType(), Constants.ONE)) {
+ areas.setInfo(geocodeCity(areas));
+ }
areasMapper.updateById(areas);
//鍒锋柊缂撳瓨鏁版嵁
cacheData();
@@ -115,6 +123,14 @@
Areas update = new Areas();
update.setName(areas.getName());
update.setSortnum(areas.getSortnum());
+ // 鍩庡競绾у尯鍒掕嚜鍔ㄦ洿鏂扮粡绾害
+ Areas existing = areasMapper.selectById(areas.getId());
+ if (existing != null && Constants.equalsInteger(existing.getType(), Constants.ONE)) {
+ String location = MapUtil.geocode(getParentName(existing.getParentId()) + areas.getName());
+ if (location != null) {
+ update.setInfo(location);
+ }
+ }
areasMapper.update(update,wrapper);
//鍒锋柊缂撳瓨鏁版嵁
cacheData();
@@ -598,4 +614,51 @@
areasMapper.updateById(update);
}
+ @Override
+ public String fillCityLocation() {
+ Areas query = new Areas();
+ query.setType(1);
+ List<Areas> cities = areasMapper.selectList(new QueryWrapper<Areas>().lambda()
+ .eq(Areas::getType, 1));
+ int success = 0, fail = 0;
+ for (Areas city : cities) {
+ if (StringUtils.isNotBlank(city.getInfo())) {
+ continue;
+ }
+ String parentName = "";
+ if (city.getParentId() != null) {
+ Areas parent = getById(city.getParentId());
+ if (parent != null) {
+ parentName = parent.getName();
+ }
+ }
+ String address = parentName + city.getName();
+ String location = MapUtil.geocode(address);
+ if (location != null) {
+ city.setInfo(location);
+ areasMapper.updateById(city);
+ success++;
+ log.info("鍩庡競缁忕含搴﹀~鍏呮垚鍔�: {} => {}", address, location);
+ } else {
+ fail++;
+ log.warn("鍩庡競缁忕含搴﹀~鍏呭け璐�: {}", address);
+ }
+ try { Thread.sleep(200); } catch (InterruptedException ignored) {}
+ }
+ return "澶勭悊瀹屾垚锛屾垚鍔�: " + success + "锛屽け璐�: " + fail + "锛屾�昏: " + cities.size();
+ }
+
+ private String getParentName(Integer parentId) {
+ if (parentId == null) {
+ return "";
+ }
+ Areas parent = getById(parentId);
+ return parent != null ? parent.getName() : "";
+ }
+
+ private String geocodeCity(Areas city) {
+ String address = getParentName(city.getParentId()) + city.getName();
+ return MapUtil.geocode(address);
+ }
+
}
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/DriverInfoServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/DriverInfoServiceImpl.java
index 509cf69..b90ecac 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/DriverInfoServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/DriverInfoServiceImpl.java
@@ -226,6 +226,29 @@
if (Objects.isNull(driverInfo)) {
throw new BusinessException(ResponseStatus.DATA_EMPTY);
}
+ // 鏌ヨ瀹℃壒浜哄悕绉�
+ if (driverInfo.getAuditUser() != null) {
+ try {
+ SystemUser auditUser = systemUserService.findById(driverInfo.getAuditUser());
+ if (auditUser != null) {
+ driverInfo.setAuditUserName(auditUser.getRealname());
+ }
+ } catch (Exception e) {
+ // 瀹℃壒浜哄凡鍒犻櫎绛夊紓甯稿拷鐣�
+ }
+ }
+ // 鏌ヨ鐪佸競鍖轰俊鎭�
+ if (driverInfo.getAreaId() != null) {
+ Areas district = areasBiz.resolveArea(driverInfo.getAreaId());
+ if (district != null) {
+ driverInfo.setDistrictId(district.getId());
+ driverInfo.setDistrictName(district.getName());
+ driverInfo.setCityId(district.getCityId());
+ driverInfo.setCityName(district.getCityName());
+ driverInfo.setProvinceId(district.getProvinceId());
+ driverInfo.setProvinceName(district.getProvinceName());
+ }
+ }
return driverInfo;
}
@@ -977,6 +1000,18 @@
// 瀹℃壒浜哄凡鍒犻櫎绛夊紓甯稿拷鐣�
}
}
+ // 鏌ヨ鐪佸競鍖轰俊鎭�
+ if (driverInfo.getAreaId() != null) {
+ Areas district = areasBiz.resolveArea(driverInfo.getAreaId());
+ if (district != null) {
+ driverInfo.setDistrictId(district.getId());
+ driverInfo.setDistrictName(district.getName());
+ driverInfo.setCityId(district.getCityId());
+ driverInfo.setCityName(district.getCityName());
+ driverInfo.setProvinceId(district.getProvinceId());
+ driverInfo.setProvinceName(district.getProvinceName());
+ }
+ }
return driverInfo;
}
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/InvoiceRecordServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/InvoiceRecordServiceImpl.java
index 0431460..c465aac 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/InvoiceRecordServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/InvoiceRecordServiceImpl.java
@@ -18,6 +18,9 @@
import com.doumee.dao.business.model.InvoiceRecord;
import com.doumee.dao.business.model.Orders;
import com.doumee.dao.dto.ApplyInvoiceDTO;
+import com.doumee.dao.dto.invoice.InvoiceA0001DTO;
+import com.doumee.dao.dto.invoice.InvoiceA0001ItemDTO;
+import com.doumee.dao.dto.invoice.InvoiceA0001Request;
import com.doumee.dao.vo.InvoiceRecordSummaryVO;
import com.doumee.service.business.InvoiceRecordService;
import com.doumee.service.common.EmailService;
@@ -206,6 +209,40 @@
record.setCreateTime(new Date());
invoiceRecordMapper.insert(record);
+ InvoiceA0001Request invoiceA0001Request = new InvoiceA0001Request();
+ invoiceA0001Request.setAccess_token("");//璇锋眰token
+ invoiceA0001Request.setServiceKey("ebi_InvoiceHandle_newBlueInvoice");
+
+
+ InvoiceA0001DTO invoiceA0001DTO = new InvoiceA0001DTO();
+ invoiceA0001DTO.setData_resources("API");
+ invoiceA0001DTO.setItype("026");
+ invoiceA0001DTO.setNsrsbh("");//閿�鍞柟绾崇◣浜鸿瘑鍒彿
+ invoiceA0001DTO.setOrder_num("");//涓氬姟鍗曟嵁鍙凤紱蹇呴』鏄敮涓�鐨�
+ invoiceA0001DTO.setZsfs("0");
+ invoiceA0001DTO.setTspz("00");
+ invoiceA0001DTO.setXsf_yhzh("");//閿�鍞柟寮�鎴疯鍚嶇О涓庨摱琛岃处鍙� 鑷础甯俋X閾惰XX琛楁敮琛� 8888888888
+ invoiceA0001DTO.setXsf_mc("");//閿�鍞柟鍚嶇О
+ invoiceA0001DTO.setXsf_nsrsbh("");//閿�鍞柟绾崇◣浜鸿瘑鍒彿
+ invoiceA0001DTO.setXsf_dzdh("");//閿�鍞柟鍦板潃銆佺數璇� 鑷础甯俋X琛�6鍙锋偁鎮犲ぇ鍘8骞�8鍗曞厓8灞� 0830-66008888
+ invoiceA0001DTO.setGmf_mc(""); //璐拱鏂瑰悕绉�
+ invoiceA0001DTO.setKpr(""); //寮�绁ㄤ汉
+ invoiceA0001DTO.setJshj("");//浠风◣鍚堣;鍗曚綅锛氬厓锛�2浣嶅皬鏁帮級 浠风◣鍚堣=鍚堣閲戦(涓嶅惈绋�)+鍚堣绋庨 娉ㄦ剰锛氫笉鑳戒娇鐢ㄥ晢鍝佺殑鍗曚环銆佹暟閲忋�佺◣鐜囥�佺◣棰濇潵杩涜绱姞锛屾渶鍚庡洓鑸嶄簲鍏ワ紝鍙兘鏄�诲悎璁¢噾棰�+鍚堣绋庨
+ invoiceA0001DTO.setHjje("");//鍚堣閲戦 娉ㄦ剰锛氫笉鍚◣锛屽崟浣嶏細鍏冿紙2浣嶅皬鏁帮級
+ invoiceA0001DTO.setHjse("");//鍚堣绋庨鍗曚綅锛氬厓锛�2浣嶅皬鏁帮級
+
+ List<InvoiceA0001ItemDTO> common_fpkj_xmxx = new ArrayList<>();
+ InvoiceA0001ItemDTO invoiceA0001ItemDTO = new InvoiceA0001ItemDTO();
+ invoiceA0001ItemDTO.setFphxz("0");
+ invoiceA0001ItemDTO.setXmmc("");//椤圭洰鍚嶇О
+ invoiceA0001ItemDTO.setXmdj("");//椤圭洰鍗曚环 灏忔暟鐐瑰悗6浣� 娉ㄦ剰锛氬崟浠锋槸鍚◣鍗曚环,澶т簬0鐨勬暟瀛�
+ invoiceA0001ItemDTO.setXmsl("1");
+ invoiceA0001ItemDTO.setXmje("");
+ invoiceA0001ItemDTO.setSe("");
+ invoiceA0001ItemDTO.setSl("");
+ common_fpkj_xmxx.add(invoiceA0001ItemDTO);
+ invoiceA0001DTO.setCommon_fpkj_xmxx(common_fpkj_xmxx);
+ invoiceA0001Request.setData(invoiceA0001DTO);
// 鏇存柊璁㈠崟鍙戠エ鐘舵�佷负鐢宠涓�
order.setInvoiceStatus(Constants.TWO);
order.setUpdateTime(new Date());
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 6269a48..06fe53c 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
@@ -236,10 +236,12 @@
.selectAll(Orders.class)
.selectAs(Category::getDetail, Orders::getOrderLevel)
.select("s1.name", Orders::getDepositShopName)
- .leftJoin(Category.class, Category::getId, Orders::getGoodType)
+ .select("o2.code", Orders::getRelationOrderCode)
+ .leftJoin(Category.class, Category::getId, Orders::getGoodLevel)
.leftJoin(DriverInfo.class, DriverInfo::getId, Orders::getAcceptDriver)
.leftJoin("shop_info s1 on s1.id = t.DEPOSIT_SHOP_ID")
- .leftJoin("shop_info s2 on s2.id = t.TAKE_SHOP_ID") ;
+ .leftJoin("shop_info s2 on s2.id = t.TAKE_SHOP_ID")
+ .leftJoin("orders o2 on o2.id = t.RELATION_ORDER_ID")
;
Utils.MP.blankToNull(pageWrap.getModel());
queryWrapper.eq(pageWrap.getModel().getDeleted() != null, Orders::getDeleted, pageWrap.getModel().getDeleted());
@@ -348,7 +350,7 @@
}
/**
- * 璁$畻灏卞湴瀛樺彇棰勪及璐圭敤
+ * 璁$畻灏卞湴瀵勫瓨棰勪及璐圭敤
*
* 璁$畻瑙勫垯锛�
* 1. 鏍规嵁鍩庡競+鐗╁搧绫诲瀷 鏌ヨ pricing_rule(type=0)锛宖ieldA=categoryId, fieldB=鍗曚环(鍒�/澶�)
@@ -357,7 +359,7 @@
* 4. 淇濅环璐圭敤 = 鎶ヤ环閲戦 脳 淇濅环璐圭巼锛堝瓧鍏� INSURANCE_RATE锛夛紝鍏冭浆鍒�
* 5. 鎬讳环鏍� = 鐗╁搧浠锋牸 + 淇濅环璐圭敤
*
- * @param dto 灏卞湴瀛樺彇璁′环璇锋眰鍙傛暟
+ * @param dto 灏卞湴瀵勫瓨璁′环璇锋眰鍙傛暟
* @return 浠锋牸璁$畻缁撴灉
*/
@Override
@@ -447,7 +449,7 @@
}
/**
- * 璁$畻寮傚湴瀛樺彇棰勪及璐圭敤
+ * 璁$畻鍚屽煄瀵勯�侀浼拌垂鐢�
*
* 璁$畻瑙勫垯锛�
* 1. 璋冪敤鑵捐鍦板浘API璁$畻瀵勪欢鐐逛笌鍙栦欢鐐圭殑椹捐溅璺濈(绫斥啋鍏噷)
@@ -462,7 +464,7 @@
* 7. 鍔犳�ヨ垂鐢� = 鐗╁搧浠锋牸 脳 鍔犳�ョ郴鏁帮紙瀛楀吀 URGENT_COEFFICIENT锛�
* 8. 鎬讳环鏍� = 鐗╁搧浠锋牸 + 淇濅环璐圭敤 + 鍔犳�ヨ垂鐢�
*
- * @param dto 寮傚湴瀛樺彇璁′环璇锋眰鍙傛暟
+ * @param dto 鍚屽煄瀵勯�佽浠疯姹傚弬鏁�
* @return 浠锋牸璁$畻缁撴灉
*/
@Override
@@ -499,7 +501,7 @@
ruleMap.put(r.getFieldA(), r);
}
- // 鏌ヨ灏卞湴瀛樺彇璁′环瑙勫垯 pricing_rule type=0锛岀敤浜庤幏鍙� locallyPrice
+ // 鏌ヨ灏卞湴瀵勫瓨璁′环瑙勫垯 pricing_rule type=0锛岀敤浜庤幏鍙� locallyPrice
List<PricingRule> localRules = pricingRuleMapper.selectList(new QueryWrapper<PricingRule>().lambda()
.eq(PricingRule::getDeleted, Constants.ZERO)
.eq(PricingRule::getType, Constants.ZERO)
@@ -553,7 +555,7 @@
long subtotal = unitPrice * item.getQuantity();
- // 灏卞湴瀛樺彇鍗曚环
+ // 灏卞湴瀵勫瓨鍗曚环
PricingRule localRule = localRuleMap.get(String.valueOf(item.getCategoryId()));
Long locallyPrice = localRule != null ? Long.parseLong(localRule.getFieldB()) : null;
@@ -812,7 +814,7 @@
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "璇烽�夋嫨鍙栦欢搴楅摵鎴栬緭鍏ヨ嚜閫夊彇浠跺湴鍧�");
}
} else {
- // 灏卞湴瀛樺彇锛氬彇浠堕棬搴楀悓瀵勪欢闂ㄥ簵
+ // 灏卞湴瀵勫瓨锛氬彇浠堕棬搴楀悓瀵勪欢闂ㄥ簵
takeShop = depositShop;
}
@@ -862,6 +864,7 @@
orders.setPayStatus(Constants.ZERO); // 鏈敮浠�
orders.setCommentStatus(Constants.ZERO); // 鏈瘎浠�
orders.setSettlementStatus(Constants.ZERO); // 鏈粨绠�
+ orders.setExceptionStatus(Constants.ZERO); // 闈炲紓甯�
orders.setDeleted(Constants.ZERO);
orders.setCreateTime(now);
orders.setUpdateTime(now);
@@ -1283,7 +1286,7 @@
vo.setCode(order.getCode());
vo.setPayAmountYuan(order.getPayAmount() != null ? Constants.getFormatMoney(order.getPayAmount()) : 0);
vo.setType(order.getType());
- vo.setTypeDesc(order.getType() != null && order.getType() == Constants.ONE ? "寮傚湴瀛樺彇" : "灏卞湴瀛樺彇");
+ vo.setTypeDesc(order.getType() != null && order.getType() == Constants.ONE ? "鍚屽煄瀵勯��" : "灏卞湴瀵勫瓨");
vo.setDetailList(buildDetailList(id));
return vo;
@@ -1302,9 +1305,9 @@
throw new BusinessException(ResponseStatus.DATA_EMPTY);
}
- // 鍓嶇疆鏉′欢鏍¢獙锛氬紓鍦板瓨鍙� + 宸插瘎瀛�
+ // 鍓嶇疆鏉′欢鏍¢獙锛氬悓鍩庡瘎閫� + 宸插瘎瀛�
if (!Constants.ONE.equals(order.getType())) {
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "浠呮敮鎸佸紓鍦板瓨鍙栬鍗曟淳鍗�");
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "浠呮敮鎸佸悓鍩庡瘎閫佽鍗曟淳鍗�");
}
if (!Integer.valueOf(Constants.OrderStatus.deposited.getStatus()).equals(order.getStatus())) {
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "浠呭凡瀵勫瓨鐘舵�佽鍗曞彲娲惧崟");
@@ -1534,7 +1537,7 @@
*
* @param orders 璁㈠崟瀹炰綋锛堥渶瑕� totalAmount銆乧ityId 宸茶缃級
* @param depositShop 瀵勪欢闂ㄥ簵锛堥渶瑕� companyType锛�
- * @param takeShop 鍙栦欢闂ㄥ簵锛堥渶瑕� companyType锛屽氨鍦板瓨鍙栨椂涓� depositShop 鐩稿悓锛�
+ * @param takeShop 鍙栦欢闂ㄥ簵锛堥渶瑕� companyType锛屽氨鍦板瘎瀛樻椂涓� depositShop 鐩稿悓锛�
*/
private void calculateAndSetFeeAllocation(Orders orders, ShopInfo depositShop, ShopInfo takeShop) {
Long totalAmount = orders.getTotalAmount() != null ? orders.getTotalAmount() : 0L;
@@ -1746,8 +1749,13 @@
// 璇勪环鐘舵��
vo.setCommentStatus(o.getCommentStatus());
+
+ String dateStr = new SimpleDateFormat("dd").format(o.getPayTime() != null ? o.getPayTime() : new Date());
+ String autoNumStr = String.format("%03d", o.getAutoNum() != null ? o.getAutoNum() : 0);
+ String sort = o.getDepositShopId() + "-" + dateStr + "-" + autoNumStr;
//搴忓彿
- vo.setSortnum(Constants.formatIntegerNum(o.getDepositShopId())+"-"+o.getId());
+ vo.setSortnum(sort);
+
if(o.getTakeShopId()!=null){
vo.setSortnumTake(Constants.formatIntegerNum(o.getTakeShopId())+"-"+o.getId());
}
@@ -2164,6 +2172,10 @@
throw new BusinessException(ResponseStatus.DATA_EMPTY);
}
+ if (Constants.equalsInteger(order.getExceptionStatus(), Constants.ONE)) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "寮傚父璁㈠崟鏃犳硶鍙栨秷");
+ }
+
Integer status = order.getStatus();
if (status == null) {
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "璁㈠崟鐘舵�佸紓甯�");
@@ -2199,8 +2211,6 @@
"orderNo", order.getCode());
// 鐭俊閫氱煡浼氬憳锛氳鍗曞凡鍙栨秷
Member cancelMember2 = memberMapper.selectById(memberId);
- sendSmsNotify(cancelMember2 != null ? cancelMember2.getTelephone() : null,
- Constants.SmsNotify.MEMBER_CANCELLED, "orderNo", order.getCode());
// 璋冪敤寰俊閫�娆綱3锛屽叏棰濋��娆�
String outRefundNo = ID.nextGUID();
@@ -2238,6 +2248,8 @@
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "閫�娆惧け璐ワ紝璇疯仈绯诲鏈嶅鐞�");
}
ordersRefundMapper.insert(refund);
+ sendSmsNotify(cancelMember2 != null ? cancelMember2.getTelephone() : null,
+ Constants.SmsNotify.MEMBER_CANCELLED, "orderNo", order.getCode());
restoreCoupon(order);
return;
}
@@ -2406,9 +2418,10 @@
if (Constants.equalsInteger(order.getManualRefund(), Constants.ONE)) {
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "璇ヨ鍗曞凡鎵嬪姩閫�娆�");
}
- // 寮傚父璁㈠崟涓嶅厑璁告墜鍔ㄩ��娆�
- if (Constants.equalsInteger(order.getExceptionStatus(), Constants.ONE)) {
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "寮傚父璁㈠崟涓嶆敮鎸佹墜鍔ㄩ��娆�");
+ // 灏卞湴瀵勫瓨寮傚父璁㈠崟涓嶅厑璁告墜鍔ㄩ��娆�
+ if (Constants.equalsInteger(order.getExceptionStatus(), Constants.ONE)
+ && Constants.equalsInteger(order.getType(), Constants.ZERO)) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "灏卞湴瀵勫瓨寮傚父璁㈠崟涓嶆敮鎸佹墜鍔ㄩ��娆�");
}
// 2. 鏍¢獙閫�娆鹃噾棰�
@@ -2851,13 +2864,27 @@
if (otherOrders.getOrderId() != null) {
Orders order = ordersMapper.selectById(otherOrders.getOrderId());
if (order != null) {
- order.setOverdueStatus(Constants.TWO); // 2=宸叉敮浠�
- // 鎬婚噾棰� = 鍘熼噾棰� + 閫炬湡璐圭敤
Long overdueFee = otherOrders.getPayAccount() != null ? otherOrders.getPayAccount() : 0L;
long newTotal = (order.getTotalAmount() != null ? order.getTotalAmount() : 0L) + overdueFee;
+
+ // 寮傚父灏卞湴瀵勫瓨璁㈠崟锛氬悓鏃舵洿鏂颁富璁㈠崟瀹為檯閫炬湡璐圭敤
+ boolean isAbnormal = Constants.equalsInteger(order.getExceptionStatus(), Constants.ONE)
+ && Constants.equalsInteger(order.getType(), Constants.ZERO);
+ if(isAbnormal){
+ long shopException = isAbnormal ? (order.getShopCompensationAmount() != null ? order.getShopCompensationAmount() : 0L) : 0L;
+ long driverException = isAbnormal ? (order.getExceptionFee() != null ? order.getExceptionFee() : 0L) : 0L;
+ long actualOverdueFee = isAbnormal ? (overdueFee - shopException - driverException) : 0L;
+ if(actualOverdueFee!=order.getOverdueAmount()){
+ order.setOverdueAmount(actualOverdueFee);
+ }
+ }
+
+ order.setOverdueStatus(Constants.TWO); // 2=宸叉敮浠�
order.setTotalAmount(newTotal);
order.setUpdateTime(now);
ordersMapper.updateById(order);
+
+
// 閲嶇畻涓夋柟鏀剁泭
calculateAndSaveOrderFees(order.getId());
}
@@ -3348,6 +3375,37 @@
}
// 瀵勫瓨鎴愬姛璧犻�佷紭鎯犲埜
giftOrderCoupon(order.getMemberId());
+ // 寮傚父璁㈠崟瀵勫瓨鏍搁攢锛氭爣璁板師璁㈠崟瀹屾垚
+ if (Constants.equalsInteger(order.getExceptionStatus(), Constants.ONE) && order.getRelationOrderId() != null) {
+ Orders originalOrder = ordersMapper.selectById(order.getRelationOrderId());
+ if (originalOrder != null) {
+ originalOrder.setStatus(Constants.OrderStatus.finished.getStatus());
+ originalOrder.setInvoiceStatus(Constants.ONE);
+ originalOrder.setSettlementStatus(Constants.ZERO);
+ originalOrder.setFinishTime(now);
+ originalOrder.setUpdateTime(now);
+ ordersMapper.updateById(originalOrder);
+ // 瑙﹀彂鍘熻鍗曟敹鐩婅绠�
+ calculateAndSaveOrderFees(originalOrder.getId());
+ generateRevenueRecords(originalOrder.getId());
+ // 璁板綍鍘熻鍗曟棩蹇�
+ saveShopVerifyLog(originalOrder, Constants.OrderLogType.shopTake, "寮傚父璁㈠崟鏍搁攢锛屽師璁㈠崟瀹屾垚", remark, shopId);
+ // 閫氱煡浼氬憳锛氳鍗曞凡瀹屾垚
+ sendOrderNotice(originalOrder.getMemberId(), Constants.MemberOrderNotify.FINISHED, originalOrder.getId(),
+ "orderNo", originalOrder.getCode());
+ // 閫氱煡瀛樹欢闂ㄥ簵鍜屽彇浠堕棬搴�
+ String settleDays = operationConfigBiz.getConfig().getSettlementDate();
+ notifyBothShops(originalOrder, Constants.ShopOrderNotify.FINISHED,
+ "orderNo", originalOrder.getCode(),
+ "settleDays", settleDays != null ? settleDays : "7");
+ // 閫氱煡鍙告満锛氳鍗曞凡瀹屾垚
+ if (originalOrder.getAcceptDriver() != null) {
+ sendDriverNotice(originalOrder.getAcceptDriver(), Constants.DriverOrderNotify.FINISHED, originalOrder.getId(),
+ "orderNo", originalOrder.getCode(),
+ "settleDays", settleDays != null ? settleDays : "7");
+ }
+ }
+ }
} else if (Constants.equalsInteger(status, Constants.OrderStatus.arrived.getStatus())) {
// 寮傚湴瀵勫瓨 + 鏃犲彇浠堕棬搴� 鈫� 鏃犳硶鏍搁攢锛堝鎴疯嚜鍙栵紝鏃犻棬搴楁搷浣滐級
if (Constants.equalsInteger(order.getType(), Constants.ONE) && order.getTakeShopId() == null) {
@@ -3516,30 +3574,7 @@
sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.WAIT_PICKUP_REMIND, order.getId(),
"orderNo", order.getCode(), "shopName", shopName);
}
- // 寮傚父璁㈠崟瀵勫瓨鏍搁攢锛氭爣璁板師璁㈠崟瀹屾垚
- if (Constants.equalsInteger(order.getExceptionStatus(), Constants.ONE) && order.getRelationOrderId() != null) {
- Orders originalOrder = ordersMapper.selectById(order.getRelationOrderId());
- if (originalOrder != null) {
- originalOrder.setStatus(Constants.OrderStatus.finished.getStatus());
- originalOrder.setInvoiceStatus(Constants.ONE);
- originalOrder.setFinishTime(now);
- originalOrder.setUpdateTime(now);
- ordersMapper.updateById(originalOrder);
- // 瑙﹀彂鍘熻鍗曟敹鐩婅绠�
- calculateAndSaveOrderFees(originalOrder.getId());
- generateRevenueRecords(originalOrder.getId());
- // 閫氱煡浼氬憳锛氳鍗曞凡瀹屾垚
- sendOrderNotice(originalOrder.getMemberId(), Constants.MemberOrderNotify.FINISHED, originalOrder.getId(),
- "orderNo", originalOrder.getCode());
- // 閫氱煡鍙告満锛氳鍗曞凡瀹屾垚
- if (originalOrder.getAcceptDriver() != null) {
- String settleDays = operationConfigBiz.getConfig().getSettlementDate();
- sendDriverNotice(originalOrder.getAcceptDriver(), Constants.DriverOrderNotify.FINISHED, originalOrder.getId(),
- "orderNo", originalOrder.getCode(),
- "settleDays", settleDays != null ? settleDays : "7");
- }
- }
- }
+
} else if (Constants.equalsInteger(status, Constants.OrderStatus.arrived.getStatus())) {
// 寮傚湴瀵勫瓨 + 鏃犲彇浠堕棬搴� 鈫� 鏃犳硶鏍搁攢锛堝鎴疯嚜鍙栵紝鏃犻棬搴楁搷浣滐級
if (Constants.equalsInteger(order.getType(), Constants.ONE) && order.getTakeShopId() == null) {
@@ -3767,13 +3802,17 @@
}
Long totalAmount = order.getTotalAmount() != null ? order.getTotalAmount() : 0L;
+ Long shopCompensationAmount = order.getShopCompensationAmount() != null ? order.getShopCompensationAmount() : 0L;
+ Long exceptionFee = order.getExceptionFee() != null ? order.getExceptionFee() : 0L;
+ // 鍒嗘垚鍩烘暟 = 鎬婚噾棰� - 闂ㄥ簵寮傚父閲戦 - 鍙告満寮傚父閲戦
+ Long feeBase = totalAmount - shopCompensationAmount - exceptionFee;
// 璐圭巼锛堜负绌烘椂榛樿0锛�
BigDecimal depositRate = order.getDepositShopFeeRata() != null ? order.getDepositShopFeeRata() : BigDecimal.ZERO;
BigDecimal takeRate = order.getTakeShopFeeRata() != null ? order.getTakeShopFeeRata() : BigDecimal.ZERO;
BigDecimal driverRate = order.getDriverFeeRata() != null ? order.getDriverFeeRata() : BigDecimal.ZERO;
//瀛樹欢闂ㄥ簵鏀剁泭
- Long depositShopFee = new BigDecimal(totalAmount)
+ Long depositShopFee = new BigDecimal(feeBase)
.multiply(depositRate)
.setScale(0, RoundingMode.HALF_UP)
.longValue();
@@ -3783,14 +3822,14 @@
if (Constants.equalsInteger(order.getType(), Constants.ONE)) {
// 寮傚湴瀵勫瓨锛氬瓨浠堕棬搴� + 鍙告満
- driverFee = new BigDecimal(totalAmount)
+ driverFee = new BigDecimal(feeBase)
.multiply(driverRate)
.setScale(0, RoundingMode.HALF_UP)
.longValue();
// 寮傚湴瀵勫瓨涓旀湁鍙栦欢闂ㄥ簵锛氬姞涓婂彇浠堕棬搴楁敹鐩�
if (order.getTakeShopId() != null) {
- takeShopFee = new BigDecimal(totalAmount)
+ takeShopFee = new BigDecimal(feeBase)
.multiply(takeRate)
.setScale(0, RoundingMode.HALF_UP)
.longValue();
@@ -3828,6 +3867,29 @@
}
}
+ // 寮傚父璁㈠崟锛氬瓨浠堕棬搴楀紓甯歌ˉ鍋挎敹鐩婏紙鍗曠嫭涓�鏉¤褰曪紝type=5锛�
+ if (Constants.equalsInteger(order.getExceptionStatus(), Constants.ONE)
+ && order.getShopCompensationAmount() != null && order.getShopCompensationAmount() > 0
+ && order.getDepositShopId() != null) {
+ ShopInfo depositShop = shopInfoMapper.selectById(order.getDepositShopId());
+ if (depositShop != null && depositShop.getId() != null) {
+ Revenue shopExRevenue = new Revenue();
+ shopExRevenue.setMemberId(depositShop.getId());
+ shopExRevenue.setMemberType(Constants.TWO); // 2=闂ㄥ簵
+ shopExRevenue.setType(5); // 5=寮傚父閲戦
+ shopExRevenue.setOptType(Constants.ONE); // 1=鏀跺叆
+ shopExRevenue.setAmount(order.getShopCompensationAmount());
+ shopExRevenue.setVaildStatus(Constants.ZERO);
+ shopExRevenue.setObjId(orderId);
+ shopExRevenue.setObjType(Constants.ZERO);
+ shopExRevenue.setStatus(Constants.ZERO);
+ shopExRevenue.setOrderNo(order.getCode());
+ shopExRevenue.setDeleted(Constants.ZERO);
+ shopExRevenue.setCreateTime(now);
+ revenueMapper.insert(shopExRevenue);
+ }
+ }
+
// 鍙栦欢闂ㄥ簵鏀剁泭锛堝紓鍦板瘎瀛樹笖鏈夊彇浠堕棬搴楋級
if (takeShopFee > 0 && order.getTakeShopId() != null) {
ShopInfo takeShop = shopInfoMapper.selectById(order.getTakeShopId());
@@ -3846,27 +3908,33 @@
}
}
- // 寮傚父璁㈠崟锛氬徃鏈哄紓甯歌ˉ鍋匡紙寮傚湴 + 寮傚父鏍囪 + 鏈夊紓甯歌ˉ鍋块噾棰濓級
+ // 寮傚父璁㈠崟锛氬徃鏈哄紓甯歌ˉ鍋匡紙寮傚湴 + 寮傚父鏍囪锛屼粠鍏宠仈寮傚父瀛愯鍗曡幏鍙杄xceptionFee锛�
if (Constants.equalsInteger(order.getType(), Constants.ONE)
&& Constants.equalsInteger(order.getExceptionStatus(), Constants.ONE)
- && order.getExceptionFee() != null && order.getExceptionFee() > 0
&& order.getAcceptDriver() != null) {
- DriverInfo driver = driverInfoMapper.selectById(order.getAcceptDriver());
- if (driver != null && driver.getMemberId() != null) {
- Revenue exRevenue = new Revenue();
- exRevenue.setMemberId(driver.getMemberId());
- exRevenue.setMemberType(Constants.ONE); // 1=鍙告満
- exRevenue.setType(5); // 5=寮傚父閲戦
- exRevenue.setOptType(Constants.ONE); // 1=鏀跺叆
- exRevenue.setAmount(order.getExceptionFee());
- exRevenue.setVaildStatus(Constants.ZERO);
- exRevenue.setObjId(orderId);
- exRevenue.setObjType(Constants.ZERO);
- exRevenue.setStatus(Constants.ZERO);
- exRevenue.setOrderNo(order.getCode());
- exRevenue.setDeleted(Constants.ZERO);
- exRevenue.setCreateTime(now);
- revenueMapper.insert(exRevenue);
+ Orders childOrder = ordersMapper.selectOne(new QueryWrapper<Orders>().lambda()
+ .eq(Orders::getRelationOrderId, orderId)
+ .eq(Orders::getExceptionStatus, Constants.ONE)
+ .eq(Orders::getDeleted, Constants.ZERO)
+ .last("limit 1"));
+ if (childOrder != null && childOrder.getExceptionFee() != null && childOrder.getExceptionFee() > 0) {
+ DriverInfo driver = driverInfoMapper.selectById(order.getAcceptDriver());
+ if (driver != null && driver.getMemberId() != null) {
+ Revenue exRevenue = new Revenue();
+ exRevenue.setMemberId(driver.getMemberId());
+ exRevenue.setMemberType(Constants.ONE); // 1=鍙告満
+ exRevenue.setType(5); // 5=寮傚父閲戦
+ exRevenue.setOptType(Constants.ONE); // 1=鏀跺叆
+ exRevenue.setAmount(childOrder.getExceptionFee());
+ exRevenue.setVaildStatus(Constants.ZERO);
+ exRevenue.setObjId(orderId);
+ exRevenue.setObjType(Constants.ZERO);
+ exRevenue.setStatus(Constants.ZERO);
+ exRevenue.setOrderNo(order.getCode());
+ exRevenue.setDeleted(Constants.ZERO);
+ exRevenue.setCreateTime(now);
+ revenueMapper.insert(exRevenue);
+ }
}
}
@@ -4100,8 +4168,7 @@
if (Constants.equalsInteger(order.getExceptionStatus(), Constants.ONE)
&& order.getRelationOrderId() != null) {
Orders originalOrder = ordersMapper.selectById(order.getRelationOrderId());
- long driverExceptionFee = (originalOrder != null && originalOrder.getExceptionFee() != null)
- ? originalOrder.getExceptionFee() : 0L;
+ long driverExceptionFee = order.getExceptionFee() != null ? order.getExceptionFee() : 0L;
long shopExceptionFee = order.getShopCompensationAmount() != null ? order.getShopCompensationAmount() : 0L;
long totalExceptionFee = driverExceptionFee + shopExceptionFee;
@@ -4115,13 +4182,14 @@
overdueFee = totalExceptionFee;
overdueDays = totalExceptionFee > 0 ? 1 : 0;
} else {
- // 闈炲綋澶╁彇浠讹細姝e父閫炬湡璁$畻 + 鍙告満寮傚父璐圭敤锛堜笉鍚棬搴楀紓甯歌垂鐢級
+ // 闈炲綋澶╁彇浠讹細姝e父閫炬湡璁$畻 + 鍙告満寮傚父璐圭敤锛堜笉鍚棬搴楀紓甯歌垂鐢級锛岄棬搴楀紓甯搁噾棰濇竻闆�
OverdueFeeVO normalOverdue = calculateOverdueFeeInternal(order, details);
long normalFee = (normalOverdue != null && normalOverdue.getOverdueFee() != null)
? normalOverdue.getOverdueFee() : 0L;
overdueFee = normalFee + driverExceptionFee;
overdueDays = (normalOverdue != null && normalOverdue.getOverdueDays() != null)
? normalOverdue.getOverdueDays() : 0;
+ order.setShopCompensationAmount(0L);
}
order.setConfirmArriveTime(now);
@@ -5108,14 +5176,14 @@
targetLat = order.getDepositLat();
targetLgt = order.getDepositLgt();
} else if (Constants.equalsInteger(order.getStatus(), Constants.OrderStatus.arrived.getStatus())&&Constants.equalsInteger(order.getType(), Constants.ZERO)) {
- // 灏卞湴瀛樺彇 鈫� 瀵规瘮瀛樹欢闂ㄥ簵
+ // 灏卞湴瀵勫瓨 鈫� 瀵规瘮瀛樹欢闂ㄥ簵
if (!Constants.equalsInteger(order.getDepositShopId(), userId)) {
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鏃犳潈鎿嶄綔璇ヨ鍗�");
}
targetLat = order.getDepositLat();
targetLgt = order.getDepositLgt();
} else if ((Constants.equalsInteger(order.getStatus(), Constants.OrderStatus.delivering.getStatus())||Constants.equalsInteger(order.getStatus(), Constants.OrderStatus.arrived.getStatus()))&&Constants.equalsInteger(order.getType(), Constants.ONE)) {
- // 寮傚湴瀛樺彇 鈫� 瀵规瘮鍙栦欢闂ㄥ簵
+ // 鍚屽煄瀵勯�� 鈫� 瀵规瘮鍙栦欢闂ㄥ簵
if (!Constants.equalsInteger(order.getTakeShopId(), userId)) {
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鏃犳潈鎿嶄綔璇ヨ鍗�");
}
@@ -5181,7 +5249,7 @@
Date now = new Date();
- // ========== B. 鍒涘缓鏂拌鍗曪紙灏卞湴瀛樺彇锛� ==========
+ // ========== B. 鍒涘缓鏂拌鍗曪紙灏卞湴瀵勫瓨锛� ==========
String orderCode = "JC" + new java.text.SimpleDateFormat("yyyyMMddHHmmss").format(now)
+ String.format("%04d", new java.util.Random().nextInt(10000));
String orderTradeNo = generateOrderTradeNo();
@@ -5222,7 +5290,7 @@
}
}
- // 瀛樹欢闂ㄥ簵鍒嗘垚鍗犳瘮锛堝氨鍦板瓨鍙栵級
+ // 瀛樹欢闂ㄥ簵鍒嗘垚鍗犳瘮锛堝氨鍦板瘎瀛橈級
Integer cityId = Integer.valueOf(original.getCityId());
boolean isCompany = Constants.equalsInteger(newShop.getCompanyType(), Constants.ONE);
int fallbackFieldA = isCompany ? Constants.FIVE : Constants.SIX;
@@ -5232,7 +5300,7 @@
newOrder.setCode(orderCode);
newOrder.setOutTradeNo(orderTradeNo);
newOrder.setMemberId(original.getMemberId());
- newOrder.setType(Constants.ZERO); // 灏卞湴瀛樺彇
+ newOrder.setType(Constants.ZERO); // 灏卞湴瀵勫瓨
newOrder.setCityId(original.getCityId());
newOrder.setStatus(Constants.ONE); // 寰呭瘎瀛�
newOrder.setPayStatus(Constants.ONE); // 宸叉敮浠�
@@ -5283,8 +5351,8 @@
newOrder.setDeclaredAmount(0L);
newOrder.setDeclaredFee(0L);
newOrder.setPrice(price);
- newOrder.setBasicAmount(basicAmount);
- newOrder.setEstimatedAmount(basicAmount);
+ newOrder.setBasicAmount(0L);//);
+ newOrder.setEstimatedAmount(0L);//basicAmount);
newOrder.setTotalAmount(0L);
newOrder.setPayAmount(0L);
newOrder.setManualRefund(Constants.ZERO);
@@ -5299,6 +5367,8 @@
// 闂ㄥ簵琛ュ伩閲戦
newOrder.setShopCompensationAmount(dto.getShopCompensation());
+ // 鍙告満寮傚父琛ュ伩閲戦
+ newOrder.setExceptionFee(dto.getDriverCompensation());
newOrder.setRemark(dto.getRemark());
newOrder.setPlatformSmsNotified(Constants.ZERO);
@@ -5355,7 +5425,6 @@
// ========== E. 鏇存柊鍘熻鍗� ==========
ordersMapper.update(new UpdateWrapper<Orders>().lambda()
.set(Orders::getExceptionStatus, Constants.ONE)
- .set(Orders::getExceptionFee, dto.getDriverCompensation())
.set(Orders::getUpdateTime, now)
.eq(Orders::getId, original.getId()));
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/ShopInfoServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/ShopInfoServiceImpl.java
index 1c7807f..089b6fd 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/ShopInfoServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/ShopInfoServiceImpl.java
@@ -1801,15 +1801,15 @@
private List<String> validateCityPricingRules(Integer cityId) {
List<String> errors = new ArrayList<>();
- // type=0 灏卞湴瀛樺彇瑙勫垯锛氳嚦灏�1鏉★紝fieldB涓嶄负绌�
+ // type=0 灏卞湴瀵勫瓨瑙勫垯锛氳嚦灏�1鏉★紝fieldB涓嶄负绌�
List<PricingRule> type0 = pricingRuleMapper.selectList(new QueryWrapper<PricingRule>().lambda()
.eq(PricingRule::getDeleted, Constants.ZERO)
.eq(PricingRule::getType, Constants.ZERO)
.eq(PricingRule::getCityId, cityId));
if (type0.isEmpty()) {
- errors.add("缂哄皯灏卞湴瀛樺彇瑙勫垯");
+ errors.add("缂哄皯灏卞湴瀵勫瓨瑙勫垯");
} else if (type0.stream().allMatch(r -> StringUtils.isBlank(r.getFieldB()))) {
- errors.add("灏卞湴瀛樺彇瑙勫垯鏈厤缃敹璐瑰崟浠�");
+ errors.add("灏卞湴瀵勫瓨瑙勫垯鏈厤缃敹璐瑰崟浠�");
}
// type=1 寮傚湴瀵勯�佽鍒欙細鑷冲皯1鏉★紝fieldB/C/D/E涓嶄负绌�
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/WithdrawalOrdersServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/WithdrawalOrdersServiceImpl.java
index c6e4822..7ab04d2 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/WithdrawalOrdersServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/WithdrawalOrdersServiceImpl.java
@@ -151,7 +151,7 @@
// 鍙告満绔細鍏宠仈 DriverInfo 琛�
queryWrapper.selectAs(DriverInfo::getName, WithdrawalOrders::getMemberName)
.selectAs(DriverInfo::getTelephone, WithdrawalOrders::getMemberTelephone)
- .leftJoin(DriverInfo.class, DriverInfo::getMemberId, WithdrawalOrders::getMemberId);
+ .leftJoin(DriverInfo.class, DriverInfo::getId, WithdrawalOrders::getMemberId);
} else {
// 搴楅摵绔� / 涓嶇瓫閫夛細鍏宠仈 ShopInfo 琛�
queryWrapper.selectAs(ShopInfo::getName, WithdrawalOrders::getShopName)
diff --git a/server/web/src/main/java/com/doumee/api/web/ConfigApi.java b/server/web/src/main/java/com/doumee/api/web/ConfigApi.java
index d43369b..37d464c 100644
--- a/server/web/src/main/java/com/doumee/api/web/ConfigApi.java
+++ b/server/web/src/main/java/com/doumee/api/web/ConfigApi.java
@@ -91,6 +91,12 @@
return ApiResponse.success("闂ㄥ簵鍒濆鍖� " + shopCount + " 鏉★紝鍙告満鍒濆鍖� " + driverCount + " 鏉�");
}
+ @ApiOperation("涓�娆℃�э細涓烘墍鏈夊煄甯傜骇鍒尯鍒掑~鍏呯粡绾害鍒癷nfo瀛楁")
+ @PostMapping("/fillCityLocation")
+ public ApiResponse<String> fillCityLocation() {
+ return ApiResponse.success(areasService.fillCityLocation());
+ }
+
@ApiOperation("鍏ㄩ儴鍖哄垝鏍戝舰鏌ヨ")
@PostMapping("/treeList")
public ApiResponse<List<Areas>> treeList (@RequestBody AreasDto pageWrap) {
@@ -161,7 +167,7 @@
}
@LoginRequired
- @ApiOperation(value = "璁$畻灏卞湴瀛樺彇棰勪及璐圭敤", notes = "鏍规嵁鍩庡競銆佸ぉ鏁般�佺墿鍝佺被鍨嬪拰鏁伴噺璁$畻灏卞湴瀛樺彇棰勪及璐圭敤")
+ @ApiOperation(value = "璁$畻灏卞湴瀵勫瓨棰勪及璐圭敤", notes = "鏍规嵁鍩庡競銆佸ぉ鏁般�佺墿鍝佺被鍨嬪拰鏁伴噺璁$畻灏卞湴瀵勫瓨棰勪及璐圭敤")
@PostMapping("/calculateLocalPrice")
public ApiResponse<PriceCalculateVO> calculateLocalPrice(@RequestBody @Valid CalculateLocalPriceDTO dto) {
dto.setMemberId(getMemberId());
@@ -169,7 +175,7 @@
}
@LoginRequired
- @ApiOperation(value = "璁$畻寮傚湴瀛樺彇棰勪及璐圭敤", notes = "鏍规嵁璺濈銆佺墿鍝佺被鍨嬪拰鏁伴噺璁$畻寮傚湴瀛樺彇棰勪及璐圭敤")
+ @ApiOperation(value = "璁$畻鍚屽煄瀵勯�侀浼拌垂鐢�", notes = "鏍规嵁璺濈銆佺墿鍝佺被鍨嬪拰鏁伴噺璁$畻鍚屽煄瀵勯�侀浼拌垂鐢�")
@PostMapping("/calculateRemotePrice")
public ApiResponse<PriceCalculateVO> calculateRemotePrice(@RequestBody @Valid CalculateRemotePriceDTO dto) {
dto.setMemberId(getMemberId());
--
Gitblit v1.9.3