From 59b1f0e9967902aa10f5e017d5a0bdfd1b60c9ea Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期三, 29 四月 2026 09:42:45 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java | 152 +++++++++++++++++++++++++++-----------------------
1 files changed, 83 insertions(+), 69 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 aec4757..f087f1c 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
@@ -222,8 +222,8 @@
queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getDepositShopName()), "s1.name", pageWrap.getModel().getDepositShopName());
queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getTakeShopName()), "s2.name", pageWrap.getModel().getTakeShopName());
queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getGoodsInfo()), Orders::getGoodsInfo, pageWrap.getModel().getGoodsInfo());
- queryWrapper.ge(pageWrap.getModel().getCreateStartTime() != null, Orders::getCreateTime, Utils.Date.getStart(pageWrap.getModel().getCreateStartTime()));
- queryWrapper.le(pageWrap.getModel().getCreateEndTime() != null, Orders::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateEndTime()));
+ queryWrapper.ge(pageWrap.getModel().getCreateStartTime() != null, Orders::getCreateTime, pageWrap.getModel().getCreateStartTime());
+ queryWrapper.le(pageWrap.getModel().getCreateEndTime() != null, Orders::getCreateTime, pageWrap.getModel().getCreateEndTime());
queryWrapper.eq(pageWrap.getModel().getDepositShopId() != null, Orders::getDepositShopId, pageWrap.getModel().getDepositShopId());
queryWrapper.eq(pageWrap.getModel().getType() != null, Orders::getType, pageWrap.getModel().getType());
queryWrapper.eq(pageWrap.getModel().getStatus() != null, Orders::getStatus, pageWrap.getModel().getStatus());
@@ -231,6 +231,9 @@
queryWrapper.and(pageWrap.getModel().getDriverKeyword() != null, i->i.like(DriverInfo::getName, pageWrap.getModel().getDriverKeyword())
.or().like(DriverInfo::getTelephone, pageWrap.getModel().getDriverKeyword()));
queryWrapper.eq(pageWrap.getModel().getSettlementStatus() != null, Orders::getSettlementStatus, pageWrap.getModel().getSettlementStatus());
+ queryWrapper.eq(pageWrap.getModel().getAcceptDriver() != null, Orders::getAcceptDriver, pageWrap.getModel().getAcceptDriver());
+ queryWrapper.and(pageWrap.getModel().getShopId() != null, i -> i.eq(Orders::getDepositShopId, pageWrap.getModel().getShopId())
+ .or().eq(Orders::getTakeShopId, pageWrap.getModel().getShopId()));
for (PageWrap.SortData sortData : pageWrap.getSorts()) {
if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
queryWrapper.orderByDesc(sortData.getProperty());
@@ -263,8 +266,8 @@
queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getDepositShopName()), "s1.name", pageWrap.getModel().getDepositShopName());
queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getTakeShopName()), "s2.name", pageWrap.getModel().getTakeShopName());
queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getGoodsInfo()), Orders::getGoodsInfo, pageWrap.getModel().getGoodsInfo());
- queryWrapper.ge(pageWrap.getModel().getCreateStartTime() != null, Orders::getCreateTime, Utils.Date.getStart(pageWrap.getModel().getCreateStartTime()));
- queryWrapper.le(pageWrap.getModel().getCreateEndTime() != null, Orders::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateEndTime()));
+ queryWrapper.ge(pageWrap.getModel().getCreateStartTime() != null, Orders::getCreateTime, pageWrap.getModel().getCreateStartTime());
+ queryWrapper.le(pageWrap.getModel().getCreateEndTime() != null, Orders::getCreateTime, pageWrap.getModel().getCreateEndTime());
queryWrapper.eq(pageWrap.getModel().getDepositShopId() != null, Orders::getDepositShopId, pageWrap.getModel().getDepositShopId());
queryWrapper.eq(pageWrap.getModel().getType() != null, Orders::getType, pageWrap.getModel().getType());
queryWrapper.eq(pageWrap.getModel().getStatus() != null, Orders::getStatus, pageWrap.getModel().getStatus());
@@ -272,6 +275,9 @@
queryWrapper.and(pageWrap.getModel().getDriverKeyword() != null, i->i.like(DriverInfo::getName, pageWrap.getModel().getDriverKeyword())
.or().like(DriverInfo::getTelephone, pageWrap.getModel().getDriverKeyword()));
queryWrapper.eq(pageWrap.getModel().getSettlementStatus() != null, Orders::getSettlementStatus, pageWrap.getModel().getSettlementStatus());
+ queryWrapper.eq(pageWrap.getModel().getAcceptDriver() != null, Orders::getAcceptDriver, pageWrap.getModel().getAcceptDriver());
+ queryWrapper.and(pageWrap.getModel().getShopId() != null, i -> i.eq(Orders::getDepositShopId, pageWrap.getModel().getShopId())
+ .or().eq(Orders::getTakeShopId, pageWrap.getModel().getShopId()));
queryWrapper.select(
"IFNULL(SUM(t.total_amount), 0) as total_amount_sum",
@@ -544,18 +550,26 @@
insuranceFeeFen = insuranceFeeYuan.multiply(new BigDecimal(100)).longValue();
}
- // 5. 鍔犳�ヨ垂鐢細鐗╁搧浠锋牸 脳 鍔犳�ョ郴鏁�(瀛楀吀 URGENT_COEFFICIENT)
+ // 5. 鍔犳�ヨ垂鐢細鐗╁搧浠锋牸 脳 (鍔犳�ョ郴鏁�-1)锛屽150%琛ㄧず澧炲姞50%
long urgentFeeFen = 0L;
String urgentRateStr = systemDictDataBiz.queryByCode(
Constants.OPERATION_CONFIG, Constants.OP_URGENT_COEFFICIENT).getCode();
BigDecimal urgentRate = new BigDecimal(urgentRateStr);
- urgentFeeFen = new BigDecimal(itemPriceTotal).multiply(urgentRate)
+ BigDecimal urgentIncreaseRate = urgentRate.subtract(BigDecimal.ONE);
+ urgentFeeFen = new BigDecimal(itemPriceTotal).multiply(urgentIncreaseRate)
.setScale(0, RoundingMode.HALF_UP).longValue();
// 6. 鎬讳环鏍� = 鐗╁搧浠锋牸 + 淇濅环璐圭敤 + 鍔犳�ヨ垂鐢紙鍔犳�ユ椂鎵嶅寘鍚姞鎬ヨ垂锛�
long totalPrice = itemPriceTotal + insuranceFeeFen;
if (Boolean.TRUE.equals(dto.getUrgent())) {
totalPrice += urgentFeeFen;
+ // 鍔犳�ユ椂鏇存柊鐗╁搧鏄庣粏鍗曚环鍜屽皬璁�
+ for (ItemPriceVO vo : itemList) {
+ long adjustedUnitPrice = new BigDecimal(vo.getUnitPrice()).multiply(urgentRate)
+ .setScale(0, RoundingMode.HALF_UP).longValue();
+ vo.setUnitPrice(adjustedUnitPrice);
+ vo.setSubtotal(adjustedUnitPrice * vo.getQuantity());
+ }
}
PriceCalculateVO result = new PriceCalculateVO();
@@ -830,6 +844,12 @@
orders.setEstimatedAmount(priceResult.getTotalPrice());
orders.setTotalAmount(priceResult.getTotalPrice());
orders.setUrgentAmount(priceResult.getUrgentFee());
+ // 瀛樺偍鍔犳�ョ郴鏁�
+ if (Constants.ONE.equals(dto.getType()) && Constants.ONE.equals(dto.getIsUrgent())) {
+ String urgentRateStr = systemDictDataBiz.queryByCode(
+ Constants.OPERATION_CONFIG, Constants.OP_URGENT_COEFFICIENT).getCode();
+ orders.setUrgentRata(new BigDecimal(urgentRateStr));
+ }
if (dto.getDeclaredAmount() != null && dto.getDeclaredAmount().compareTo(BigDecimal.ZERO) > 0) {
orders.setDeclaredAmount(dto.getDeclaredAmount().multiply(new BigDecimal(100)).longValue());
} else {
@@ -861,6 +881,13 @@
orderLogService.create(createLog);
// ========== 7. 鍒涘缓璁㈠崟鏄庣粏 ==========
+ // 寮傚湴瀵勫瓨鏋侀�熻揪鏃讹紝鎸夊姞鎬ユ瘮渚嬭绠楁槑缁嗚鍗曚环
+ BigDecimal urgentIncreaseRate = null;
+ if (Constants.ONE.equals(dto.getType()) && Constants.ONE.equals(dto.getIsUrgent())) {
+ String urgentRateStr = systemDictDataBiz.queryByCode(
+ Constants.OPERATION_CONFIG, Constants.OP_URGENT_COEFFICIENT).getCode();
+ urgentIncreaseRate = new BigDecimal(urgentRateStr).subtract(BigDecimal.ONE);
+ }
for (ItemPriceVO itemVO : priceResult.getItemList()) {
OrdersDetail detail = new OrdersDetail();
detail.setOrderId(orderId);
@@ -868,11 +895,29 @@
detail.setLuggageName(itemVO.getCategoryName());
detail.setLuggageDetail(itemVO.getDetail());
detail.setNum(itemVO.getQuantity());
- detail.setUnitPrice(itemVO.getUnitPrice());
+ long detailUnitPrice = itemVO.getUnitPrice();
+ if (urgentIncreaseRate != null) {
+ detailUnitPrice = new BigDecimal(detailUnitPrice)
+ .multiply(BigDecimal.ONE.add(urgentIncreaseRate))
+ .setScale(0, RoundingMode.HALF_UP).longValue();
+ }
+ detail.setUnitPrice(detailUnitPrice);
detail.setStartDistance(itemVO.getStartDistance());
- detail.setStartPrice(itemVO.getStartPrice());
+ if (urgentIncreaseRate != null && itemVO.getStartPrice() != null) {
+ detail.setStartPrice(new BigDecimal(itemVO.getStartPrice())
+ .multiply(BigDecimal.ONE.add(urgentIncreaseRate))
+ .setScale(0, RoundingMode.HALF_UP).longValue());
+ } else {
+ detail.setStartPrice(itemVO.getStartPrice());
+ }
detail.setExtraDistance(itemVO.getExtraDistance());
- detail.setExtraPrice(itemVO.getExtraPrice());
+ if (urgentIncreaseRate != null && itemVO.getExtraPrice() != null) {
+ detail.setExtraPrice(new BigDecimal(itemVO.getExtraPrice())
+ .multiply(BigDecimal.ONE.add(urgentIncreaseRate))
+ .setScale(0, RoundingMode.HALF_UP).longValue());
+ } else {
+ detail.setExtraPrice(itemVO.getExtraPrice());
+ }
detail.setLocallyPrice(itemVO.getLocallyPrice());
detail.setDeleted(Constants.ZERO);
detail.setCreateTime(now);
@@ -1816,46 +1861,17 @@
vo.setMemberVerifyCode(order.getMemberVerifyCode());
}
- // 寮傚湴瀵勫瓨缁忕含搴︼紙灏卞湴瀵勫瓨涓嶈繑鍥烇級
- if (Constants.ONE.equals(order.getType())) {
- // status=3(宸叉帴鍗�)锛氳繑鍥炲瓨浠堕棬搴楃粡绾害 + 鍙告満缁忕含搴�
- if (Constants.equalsInteger(status, Constants.OrderStatus.accepted.getStatus())) {
- ShopInfo depositShop = shopInfoMapper.selectById(order.getDepositShopId());
- if (depositShop != null) {
- vo.setDepositShopLng(depositShop.getLongitude());
- vo.setDepositShopLat(depositShop.getLatitude());
- }
- if (order.getAcceptDriver() != null) {
- DriverInfo driver = driverInfoMapper.selectById(order.getAcceptDriver());
- if (driver != null) {
- vo.setDriverLng(driver.getLongitude());
- vo.setDriverLat(driver.getLatitude());
- }
- }
- }
- // status=4(閰嶉�佷腑)锛氳繑鍥炲彇浠剁偣缁忕含搴� + 鍙告満缁忕含搴�
- if (Constants.equalsInteger(status, Constants.OrderStatus.delivering.getStatus())) {
- // 鍙栦欢鐐圭粡绾害锛堜紭鍏堝彇浠堕棬搴楋紝鍚﹀垯璁㈠崟涓婄殑鍙栦欢鍧愭爣锛�
- if (order.getTakeShopId() != null) {
- ShopInfo takeShop = shopInfoMapper.selectById(order.getTakeShopId());
- if (takeShop != null) {
- vo.setTakeLng(takeShop.getLongitude());
- vo.setTakeLat(takeShop.getLatitude());
- }
- } else if (order.getTakeLgt() != null && order.getTakeLat() != null) {
- vo.setTakeLng(order.getTakeLgt().doubleValue());
- vo.setTakeLat(order.getTakeLat().doubleValue());
- }
- if (order.getAcceptDriver() != null) {
- DriverInfo driver = driverInfoMapper.selectById(order.getAcceptDriver());
- if (driver != null) {
- vo.setDriverLng(driver.getLongitude());
- vo.setDriverLat(driver.getLatitude());
- }
- }
- }
+ vo.setDepositShopLng(order.getDepositLgt().doubleValue());
+ vo.setDepositShopLat(order.getDepositLat().doubleValue());
+ // 鍙栦欢鐐圭粡绾害
+ vo.setTakeLng(order.getTakeLgt().doubleValue());
+ vo.setTakeLat(order.getTakeLat().doubleValue());
+ //鍙告満缁忕含搴�
+ DriverInfo driver = driverInfoMapper.selectById(order.getAcceptDriver());
+ if (driver != null) {
+ vo.setDriverLng(driver.getLongitude());
+ vo.setDriverLat(driver.getLatitude());
}
-
// 璇勪环淇℃伅
vo.setCommentStatus(order.getCommentStatus());
if (Constants.equalsInteger(order.getCommentStatus(), Constants.ONE)) {
@@ -2308,6 +2324,7 @@
public PayResponse payShopDeposit(Integer memberId) {
// 1. 鏌ヨ闂ㄥ簵淇℃伅
ShopInfo shopInfo = shopInfoMapper.selectOne(new QueryWrapper<ShopInfo>().lambda()
+ .eq(ShopInfo::getDeleted,Constants.ZERO)
.eq(ShopInfo::getRegionMemberId,memberId));
if (shopInfo == null) {
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "闂ㄥ簵涓嶅瓨鍦�");
@@ -2393,14 +2410,13 @@
sendSmsNotify(shopInfo.getTelephone(),
Constants.SmsNotify.SHOP_AUTH_SUCCESS,
"storeName", shopInfo.getName(),
- "phone", shopInfo.getTelephone() != null ? shopInfo.getTelephone() : "",
"password", rawPassword);
// 6. 鎶奸噾鏀粯瀹屾垚鍚庯紝鑻ュ煄甯傛湭寮�閫氬垯鑷姩寮�閫�
if (shopInfo.getAreaId() != null) {
- Areas shopArea = areasBiz.resolveArea(shopInfo.getAreaId());
+ Areas shopArea = areasService.getById(shopInfo.getAreaId());
if (shopArea != null && shopArea.getParentId() != null) {
- Areas cityArea = areasBiz.resolveArea(shopArea.getParentId());
+ Areas cityArea = areasService.getById(shopArea.getParentId());
if (cityArea != null && !Constants.equalsInteger(cityArea.getStatus(), Constants.ONE)) {
cityArea.setStatus(Constants.ONE);
cityArea.setEditDate(now);
@@ -2430,7 +2446,8 @@
.eq(Orders::getDeleted, Constants.ZERO)
.eq(Orders::getStatus, Constants.OrderStatus.finished.getStatus())
.eq(Orders::getSettlementStatus, Constants.ZERO)
- .le(Orders::getFinishTime, deadline));
+ .le(Orders::getFinishTime, deadline)
+ );
if (ordersList == null || ordersList.isEmpty()) {
return;
}
@@ -2475,7 +2492,7 @@
} else if (Constants.equalsInteger(revenue.getMemberType(), Constants.TWO)) {
// 闂ㄥ簵锛氶�氳繃 memberId 鏌� ShopInfo(regionMemberId)锛屾洿鏂� balance / totalBalance
ShopInfo shop = shopInfoMapper.selectOne(new QueryWrapper<ShopInfo>().lambda()
- .eq(ShopInfo::getRegionMemberId, revenue.getMemberId())
+ .eq(ShopInfo::getId, revenue.getMemberId())
.eq(ShopInfo::getDeleted, Constants.ZERO)
.last("limit 1"));
if (shop != null) {
@@ -3182,8 +3199,8 @@
// 瀛樹欢闂ㄥ簵鏀剁泭
if (depositShopFee > 0 && order.getDepositShopId() != null) {
ShopInfo depositShop = shopInfoMapper.selectById(order.getDepositShopId());
- if (depositShop != null && depositShop.getRegionMemberId() != null) {
- revenueMapper.insert(buildRevenue(depositShop.getRegionMemberId(), Constants.TWO,
+ if (depositShop != null && depositShop.getId() != null) {
+ revenueMapper.insert(buildRevenue(depositShop.getId(), Constants.TWO,
depositShopFee, orderId, order.getCode()));
}
}
@@ -3191,8 +3208,8 @@
// 鍙栦欢闂ㄥ簵鏀剁泭锛堝紓鍦板瘎瀛樹笖鏈夊彇浠堕棬搴楋級
if (takeShopFee > 0 && order.getTakeShopId() != null) {
ShopInfo takeShop = shopInfoMapper.selectById(order.getTakeShopId());
- if (takeShop != null && takeShop.getRegionMemberId() != null) {
- revenueMapper.insert(buildRevenue(takeShop.getRegionMemberId(), Constants.TWO,
+ if (takeShop != null && takeShop.getId() != null) {
+ revenueMapper.insert(buildRevenue(takeShop.getId(), Constants.TWO,
takeShopFee, orderId, order.getCode()));
}
}
@@ -3729,7 +3746,7 @@
QueryWrapper<Orders> wrapper = new QueryWrapper<>();
wrapper.eq("MEMBER_ID", memberId)
.in("STATUS", 0, 1, 2, 3, 4, 5)
- .orderByDesc("CREATE_TIME")
+ .orderByAsc("CREATE_TIME")
.last("LIMIT 1");
Orders order = ordersMapper.selectOne(wrapper);
if (order == null) {
@@ -4061,31 +4078,28 @@
for (int i = 0; i < paramPairs.length - 1; i += 2) {
templateParam.put(paramPairs[i], paramPairs[i + 1]);
}
- boolean result = AliSmsService.sendSms(phone, smsNotify.getTemplateCode(),
+ String error = AliSmsService.sendSms(phone, smsNotify.getTemplateCode(),
templateParam.toJSONString());
- if (result) {
- log.info("鐭俊鍙戦�佹垚鍔�: phone={}, template={}", phone, smsNotify.name());
- } else {
- log.warn("鐭俊鍙戦�佸け璐�: phone={}, template={}", phone, smsNotify.name());
- }
- // 瀛樺偍鐭俊璁板綍
Smsrecord record = new Smsrecord();
record.setPhone(phone);
record.setContent(content);
- record.setType(Constants.ONE); // 1=璁㈠崟閫氱煡
- record.setStatus(result ? Constants.ONE : Constants.ZERO); // 1=宸插彂閫�, 0=鍙戦�佸け璐�
+ record.setType(Constants.ONE);
+ record.setStatus(error == null ? Constants.ONE : Constants.ZERO);
+ if (error != null) {
+ record.setRemark(error);
+ }
record.setCreateTime(new Date());
record.setDeleted(Constants.ZERO);
smsrecordMapper.insert(record);
} catch (Exception e) {
log.error("鐭俊鍙戦�佸紓甯�: phone={}, template={}, error={}", phone, smsNotify.name(), e.getMessage());
- // 寮傚父涔熻褰�
try {
Smsrecord record = new Smsrecord();
record.setPhone(phone);
record.setContent(content);
record.setType(Constants.ONE);
- record.setStatus(Constants.ZERO); // 鍙戦�佸け璐�
+ record.setStatus(Constants.ZERO);
+ record.setRemark(e.getMessage());
record.setCreateTime(new Date());
record.setDeleted(Constants.ZERO);
smsrecordMapper.insert(record);
--
Gitblit v1.9.3