From 7a0b33a5f2e0ba589bf35a1b8d896700a21f94a4 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期四, 30 四月 2026 16:00:55 +0800
Subject: [PATCH] 支付宝支付dddadd
---
server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java | 492 ++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 367 insertions(+), 125 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 98de8c6..04cd73b 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
@@ -1,15 +1,19 @@
package com.doumee.service.business.impl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doumee.biz.system.AreasBiz;
+import com.doumee.config.xyy.XyyConfig;
+import com.doumee.config.xyy.dto.PrintRequest;
import com.doumee.biz.system.OperationConfigBiz;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.config.wx.WxMiniConfig;
import com.doumee.config.wx.WxPayProperties;
import com.doumee.config.wx.WxPayV3Service;
+import com.doumee.core.utils.jpush.JPushUtil;
import com.wechat.pay.java.service.refund.model.Refund;
import com.doumee.core.constants.Constants;
import com.doumee.core.constants.ResponseStatus;
@@ -17,6 +21,7 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.DateUtil;
+import com.doumee.core.utils.ID;
import com.doumee.core.utils.geocode.MapUtil;
import com.doumee.core.utils.Utils;
import com.doumee.core.utils.aliyun.AliSmsService;
@@ -54,6 +59,7 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
+import java.text.SimpleDateFormat;
import java.util.concurrent.TimeUnit;
/**
@@ -128,6 +134,9 @@
private AreasService areasService;
@Autowired
+ private AreasMapper aareasMapper;
+
+ @Autowired
private NoticeService noticeService;
@Autowired
@@ -138,6 +147,12 @@
@Autowired
private WxPayProperties wxPayProperties;
+
+ @Autowired
+ private XyyConfig xyyConfig;
+
+ @Autowired
+ private PrintService printService;
@Override
public Integer create(Orders orders) {
@@ -215,14 +230,13 @@
.leftJoin("shop_info s2 on s2.id = t.TAKE_SHOP_ID");
;
Utils.MP.blankToNull(pageWrap.getModel());
- pageWrap.getModel().setDeleted(Constants.ZERO);
queryWrapper.eq(pageWrap.getModel().getDeleted() != null, Orders::getDeleted, pageWrap.getModel().getDeleted());
queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getCode()), Orders::getCode, pageWrap.getModel().getCode());
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());
@@ -230,14 +244,18 @@
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());
- for (PageWrap.SortData sortData : pageWrap.getSorts()) {
- if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
- queryWrapper.orderByDesc(sortData.getProperty());
- } else {
- queryWrapper.orderByAsc(sortData.getProperty());
+ 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.orderByDesc(Orders::getId);
+ PageData<Orders> pageData = PageData.from(ordersMapper.selectJoinPage(page, Orders.class, queryWrapper));
+ for (Orders o : pageData.getRecords()) {
+ if (o.getStatus() != null) {
+ Constants.OrderStatus os = Constants.OrderStatus.getByKey(o.getStatus());
+ o.setStatusDesc(os != null ? os.getValue() : "");
}
}
- return PageData.from(ordersMapper.selectJoinPage(page, Orders.class, queryWrapper));
+ return pageData;
}
@Override
@@ -255,8 +273,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());
@@ -264,6 +282,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",
@@ -354,7 +375,7 @@
for (Category c : categories) {
categoryNameMap.put(c.getId(), c.getName());
categoryDetailMap.put(c.getId(), c.getDetail());
- categoryOtherFieldMap.put(c.getId(),c.getOtherField());
+ categoryOtherFieldMap.put(c.getId(),c.getRemark());
}
// 璁$畻姣忛」鐗╁搧璐圭敤锛氬皬璁� = 鍗曚环 脳 鏁伴噺 脳 澶╂暟
@@ -476,7 +497,7 @@
for (Category c : categories) {
categoryNameMap.put(c.getId(), c.getName());
categoryDetailMap.put(c.getId(), c.getDetail());
- categoryOtherFieldMap.put(c.getId(),c.getOtherField());
+ categoryOtherFieldMap.put(c.getId(),c.getRemark());
}
// 3. 閫愰」璁$畻杩愯垂锛氳捣姝ヤ环 + 瓒呭嚭閮ㄥ垎闃舵浠�
@@ -536,18 +557,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();
@@ -698,7 +727,7 @@
// 鏃犲彇浠堕棬搴楋紝鏍¢獙瀛樹欢鐐逛笌鑷�夊彇浠剁偣鏄惁鍦ㄥ悓涓�鍩庡競
if (!MapUtil.isSameCity(depositShop.getLatitude(), depositShop.getLongitude(),
dto.getTakeLat().doubleValue(), dto.getTakeLgt().doubleValue())) {
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "寮傚湴瀵勫瓨璁㈠崟瀛樺彇鐐逛笉鍦ㄥ悓涓�鍩庡競锛屽闇�璇烽�夋嫨鍚屽煄闂ㄥ簵");
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀛樺彇鐐逛笉鍦ㄥ悓涓�鍩庡競锛�");
}
takeLat = dto.getTakeLat();
takeLgt = dto.getTakeLgt();
@@ -785,6 +814,7 @@
// 寮傚湴锛氬彇浠剁偣淇℃伅
orders.setTakeShopId(dto.getTakeShopId());
orders.setTakeLocation(takeLocationValue);
+ orders.setTakeLocationRemark(takeLocationValue);
orders.setTakeLat(takeLat);
orders.setTakeLgt(takeLgt);
orders.setIsUrgent(dto.getIsUrgent());
@@ -793,6 +823,7 @@
// 灏卞湴锛氬彇浠剁偣鍚屽瘎浠跺簵閾�
orders.setTakeShopId(dto.getDepositShopId());
orders.setTakeLocation(depositShop.getAddress());
+ orders.setTakeLocationRemark(depositShop.getAddress());
orders.setTakeLat(BigDecimal.valueOf(depositShop.getLatitude()));
orders.setTakeLgt(BigDecimal.valueOf(depositShop.getLongitude()));
orders.setIsUrgent(Constants.ZERO);
@@ -820,6 +851,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 {
@@ -837,7 +874,27 @@
ordersMapper.insert(orders);
Integer orderId = orders.getId();
+ // 鍒涘缓璁㈠崟鏃ュ織
+ OrderLog createLog = new OrderLog();
+ createLog.setOrderId(orderId);
+ createLog.setTitle(Constants.OrderLogType.createOrder.getTitle());
+ createLog.setLogInfo(Constants.OrderLogType.createOrder.format(orderCode));
+ createLog.setObjType(Constants.OrderLogType.createOrder.getStatus());
+ createLog.setOrderStatus(orders.getStatus());
+ createLog.setOptUserId(memberId);
+ createLog.setOptUserType(0);
+ createLog.setCreateTime(now);
+ createLog.setDeleted(Constants.ZERO);
+ 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);
@@ -845,11 +902,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);
@@ -987,6 +1062,12 @@
OrderDetailVO vo = new OrderDetailVO();
vo.setOrder(order);
+ // 璁㈠崟鐘舵�佹弿杩�
+ if (order.getStatus() != null) {
+ Constants.OrderStatus os = Constants.OrderStatus.getByKey(order.getStatus());
+ vo.setStatusDesc(os != null ? os.getValue() : "");
+ }
+
// 鍥剧墖璺緞鍓嶇紑
String imgPrefix = getOrdersPrefix();
@@ -1111,19 +1192,6 @@
String optUserName = getCurrentUserName();
- // 鍔犳�ヨ垂鏃ュ織
- OrderLog feeLog = new OrderLog();
- feeLog.setOrderId(order.getId());
- feeLog.setTitle(Constants.OrderLogType.urgent.getTitle());
- feeLog.setLogInfo(Constants.OrderLogType.urgent.format(dto.getUrgentFee().toPlainString()));
- feeLog.setObjType(Constants.OrderLogType.urgent.getStatus());
- feeLog.setOrderStatus(order.getStatus());
- feeLog.setOptUserType(3);
- feeLog.setOptUserName(optUserName);
- feeLog.setCreateTime(new Date());
- feeLog.setDeleted(Constants.ZERO);
- orderLogService.create(feeLog);
-
// 鍔犳�ヨ垂鐢� 鍏冣啋鍒�
long urgentFeeFen = dto.getUrgentFee().multiply(new BigDecimal(100)).longValue();
@@ -1148,9 +1216,30 @@
updateWrapper.set(Orders::getRemark, dto.getRemark());
}
- // 鎸囨淳鍙告満锛堥潪蹇呭~锛�
+ // 鏃ュ織锛氬彧瀛樹竴鏉★紝鏈夊徃鏈虹敤 assignDriver锛屾棤鍙告満鐢� urgent
if (dto.getDriverId() != null) {
+ // 鏍¢獙鍙告満淇℃伅
+ DriverInfo driverInfo = driverInfoMapper.selectOne(new QueryWrapper<DriverInfo>().lambda()
+ .eq(DriverInfo::getMemberId, dto.getDriverId())
+ .eq(DriverInfo::getDeleted, Constants.ZERO)
+ .last("limit 1"));
+ if (driverInfo == null) {
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "鍙告満淇℃伅涓嶅瓨鍦�");
+ }
+ if (!Integer.valueOf(3).equals(driverInfo.getAuditStatus())) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鍙告満鏈敮浠樻娂閲戯紝鏃犳硶娲惧崟");
+ }
+ if (!Constants.ZERO.equals(driverInfo.getStatus())) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鍙告満宸茶绂佺敤锛屾棤娉曟淳鍗�");
+ }
+
+ // 鏇存柊鎺ュ崟鍙告満淇℃伅鍙婅鍗曠姸鎬�
+ Date now = new Date();
updateWrapper.set(Orders::getAssignDriverId, dto.getDriverId());
+ updateWrapper.set(Orders::getAcceptDriver, dto.getDriverId());
+ updateWrapper.set(Orders::getAcceptTime, now);
+ updateWrapper.set(Orders::getAcceptType, 1); // 1=绯荤粺娲惧崟
+ updateWrapper.set(Orders::getStatus, Constants.OrderStatus.accepted.getStatus());
Member driver = memberMapper.selectById(dto.getDriverId());
String driverName = driver != null ? driver.getName() : String.valueOf(dto.getDriverId());
@@ -1160,32 +1249,37 @@
driverLog.setTitle(Constants.OrderLogType.assignDriver.getTitle());
driverLog.setLogInfo(Constants.OrderLogType.assignDriver.format(driverName, dto.getUrgentFee().toPlainString()));
driverLog.setObjType(Constants.OrderLogType.assignDriver.getStatus());
- driverLog.setOrderStatus(order.getStatus());
+ driverLog.setOrderStatus(Constants.OrderStatus.accepted.getStatus());
driverLog.setOptUserType(3);
driverLog.setOptUserName(optUserName);
- driverLog.setCreateTime(new Date());
+ driverLog.setCreateTime(now);
driverLog.setDeleted(Constants.ZERO);
orderLogService.create(driverLog);
// 鐭俊閫氱煡鎸囨淳鍙告満锛堝姞鎬ユ淳鍗曪級
- DriverInfo driverInfo = driverInfoMapper.selectOne(new QueryWrapper<DriverInfo>().lambda()
- .eq(DriverInfo::getMemberId, dto.getDriverId())
- .eq(DriverInfo::getDeleted, Constants.ZERO)
- .last("limit 1"));
- if (driverInfo != null) {
- String address1 = order.getDepositShopAddress() != null ? order.getDepositShopAddress() : order.getDepositShopName();
- String address2 = order.getTakeShopAddress() != null ? order.getTakeShopAddress() :
- (order.getTakeLocation() != null ? order.getTakeLocation() : "");
- // 閰嶉�佽垂 = 鍙告満閰嶉�佽垂 + 鍔犳�ヨ垂
- long totalDriverFee = (order.getDriverFee() != null ? order.getDriverFee() : 0L) + urgentFeeFen;
- sendSmsNotify(driverInfo.getTelephone(),
- Constants.SmsNotify.DRIVER_URGENT_DISPATCH,
- "orderNo", order.getCode(),
- "address1", address1,
- "address2", address2,
- "money1", String.valueOf(totalDriverFee / 100.0),
- "money2", String.valueOf(urgentFeeFen / 100.0));
- }
+ String address1 = order.getDepositLocationRemark();
+ String address2 = order.getTakeLocationRemark();
+ long totalDriverFee = (order.getDriverFee() != null ? order.getDriverFee() : 0L) + urgentFeeFen;
+ sendSmsNotify(driverInfo.getTelephone(),
+ Constants.SmsNotify.DRIVER_URGENT_DISPATCH,
+ "orderNo", order.getCode(),
+ "address1", address1,
+ "address2", address2,
+ "money1", String.valueOf(totalDriverFee / 100.0),
+ "money2", String.valueOf(urgentFeeFen / 100.0));
+ } else {
+ // 鏈寚娲惧徃鏈猴紝鍙褰曞姞鎬ユ棩蹇�
+ OrderLog feeLog = new OrderLog();
+ feeLog.setOrderId(order.getId());
+ feeLog.setTitle(Constants.OrderLogType.urgent.getTitle());
+ feeLog.setLogInfo(Constants.OrderLogType.urgent.format(dto.getUrgentFee().toPlainString()));
+ feeLog.setObjType(Constants.OrderLogType.urgent.getStatus());
+ feeLog.setOrderStatus(order.getStatus());
+ feeLog.setOptUserType(3);
+ feeLog.setOptUserName(optUserName);
+ feeLog.setCreateTime(new Date());
+ feeLog.setDeleted(Constants.ZERO);
+ orderLogService.create(feeLog);
}
ordersMapper.update(updateWrapper);
@@ -1513,12 +1607,13 @@
// 闂ㄥ簵寰呭鐞嗚鍗曪細鎸変笟鍔$幆鑺傚尯鍒嗛棬搴楄鑹�
if (combinedStatus != null && Constants.equalsInteger(combinedStatus, Constants.SEVEN)) {
wrapper.and(w -> w
- .and(w1 -> w1.eq(Orders::getDepositShopId, shopId)
+ .and(w1 -> w1.eq(Orders::getType, Constants.ZERO).eq(Orders::getDepositShopId, shopId)
.in(Orders::getStatus, Constants.OrderStatus.waitDeposit.getStatus(),
- Constants.OrderStatus.deposited.getStatus()))
- .or(w2 -> w2.eq(Orders::getTakeShopId, shopId)
- .in(Orders::getStatus, Constants.OrderStatus.delivering.getStatus(),
- Constants.OrderStatus.arrived.getStatus()))
+ Constants.OrderStatus.arrived.getStatus())
+ .or(w3-> w3.eq(Orders::getType, Constants.ONE).eq(Orders::getDepositShopId, shopId)
+ .eq(Orders::getStatus, Constants.OrderStatus.waitDeposit.getStatus()))
+ .or(w2 -> w2.eq(Orders::getType, Constants.ONE).eq(Orders::getTakeShopId, shopId)
+ .eq(Orders::getStatus, Constants.OrderStatus.arrived.getStatus())))
);
} else {
wrapper.and(w -> w.eq(Orders::getDepositShopId, shopId).or().eq(Orders::getTakeShopId, shopId));
@@ -1774,46 +1869,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)) {
@@ -1888,9 +1954,10 @@
Constants.SmsNotify.MEMBER_CANCELLED, "orderNo", order.getCode());
// 璋冪敤寰俊閫�娆綱3锛屽叏棰濋��娆�
+ String outRefundNo = ID.nextGUID();
com.wechat.pay.java.service.refund.model.Refund refundResult;
try {
- refundResult = wxPayV3Service.refund(order.getOutTradeNo(), order.getPayAmount(), order.getPayAmount(),
+ refundResult = wxPayV3Service.refund(outRefundNo, order.getOutTradeNo(), order.getPayAmount(), order.getPayAmount(),
"璁㈠崟閫�娆�", wxPayProperties.getV3RefundNotifyUrl());
} catch (Exception e) {
log.error("寰呭瘎瀛樿鍗曢��娆捐皟鐢ㄥ紓甯�, orderId={}", orderId, e);
@@ -1908,7 +1975,7 @@
refund.setDeleted(Constants.ZERO);
refund.setBeforeStatus(Constants.OrderStatus.waitDeposit.getStatus());
refund.setRefundAmount(order.getPayAmount());
- refund.setRefundCode(refundResult.getOutRefundNo());
+ refund.setRefundCode(outRefundNo);
if (com.wechat.pay.java.service.refund.model.Status.SUCCESS.equals(refundStatus)) {
// 閫�娆炬垚鍔�
@@ -2118,6 +2185,20 @@
}
ordersMapper.updateById(order);
+ // 鏀粯鎴愬姛鏃ュ織
+ OrderLog payLog = new OrderLog();
+ payLog.setOrderId(order.getId());
+ payLog.setTitle(Constants.OrderLogType.payOrder.getTitle());
+ payLog.setLogInfo(Constants.OrderLogType.payOrder.format(
+ String.valueOf(order.getTotalAmount() != null ? order.getTotalAmount() / 100.0 : 0)));
+ payLog.setObjType(Constants.OrderLogType.payOrder.getStatus());
+ payLog.setOrderStatus(order.getStatus());
+ payLog.setOptUserId(order.getMemberId());
+ payLog.setOptUserType(0);
+ payLog.setCreateTime(now);
+ payLog.setDeleted(Constants.ZERO);
+ orderLogService.create(payLog);
+
// 閫氱煡浼氬憳锛氳鍗曞緟鏍搁獙
sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.WAIT_VERIFY, order.getId(),
"orderNo", order.getCode(),
@@ -2251,6 +2332,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(), "闂ㄥ簵涓嶅瓨鍦�");
@@ -2336,18 +2418,17 @@
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 = aareasMapper.selectById(shopInfo.getAreaId());
if (shopArea != null && shopArea.getParentId() != null) {
- Areas cityArea = areasBiz.resolveArea(shopArea.getParentId());
+ Areas cityArea = aareasMapper.selectById(shopArea.getParentId());
if (cityArea != null && !Constants.equalsInteger(cityArea.getStatus(), Constants.ONE)) {
cityArea.setStatus(Constants.ONE);
cityArea.setEditDate(now);
- areasService.updateById(cityArea);
+ aareasMapper.updateById(cityArea);
areasService.cacheData();
}
}
@@ -2373,7 +2454,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;
}
@@ -2418,7 +2500,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) {
@@ -2684,6 +2766,8 @@
// 寮傚湴瀵勫瓨 鈫� 寰呮姠鍗�
sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.WAIT_GRAB, order.getId(),
"orderNo", order.getCode());
+ // 鎺ㄩ�侀�氱煡鍙告満
+ pushDriverNewOrder(order);
} else {
// 灏卞湴瀵勫瓨 鈫� 寰呭彇浠舵彁閱�
sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.WAIT_PICKUP_REMIND, order.getId(),
@@ -2736,7 +2820,64 @@
"orderNo", order.getCode(),
"settleDays", settleDays != null ? settleDays : "7");
}
- } else {
+ }else if(Constants.equalsInteger(order.getStatus(), Constants.OrderStatus.delivering.getKey())){
+ // 浠呭紓鍦板瘎瀛� + 鏈夊彇浠堕棬搴� + 娲鹃�佷腑(4) 鍙牳閿�
+ if (!Constants.equalsInteger(order.getType(), Constants.ONE)) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "浠呭紓鍦板瘎瀛樿鍗曟敮鎸佸徃鏈烘牳閿�");
+ }
+ if (order.getTakeShopId() == null) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "璇ヨ鍗曟棤鍙栦欢闂ㄥ簵锛屾棤闇�鍙告満鏍搁攢");
+ }
+ if (!Constants.equalsInteger(order.getStatus(), Constants.OrderStatus.delivering.getStatus())) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "褰撳墠璁㈠崟鐘舵�佷笉鍏佽鏍搁攢");
+ }
+ // 鏍¢獙鍙栦欢闂ㄥ簵涓庡綋鍓嶇櫥褰曢棬搴椾竴鑷�
+ if (!shopId.equals(order.getTakeShopId())) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "璇ヨ鍗曚笉灞炰簬褰撳墠闂ㄥ簵锛屾棤娉曟牳閿�");
+ }
+ // 娲鹃�佷腑(4) 鈫� 宸插埌搴�(5)
+ order.setStatus(Constants.OrderStatus.arrived.getStatus());
+ order.setArriveTime(new Date());
+ if (StringUtils.isNotBlank(remark)) {
+ order.setRemark(remark);
+ }
+ ordersMapper.updateById(order);
+
+ // 閲婃斁鍙告満鏍搁攢鐮�
+ releaseVerifyCode(order.getDriverVerifyCode());
+
+ // 淇濆瓨闄勪欢锛坥bj_type=3 闂ㄥ簵鍏ュ簱鍥剧墖锛屾渶澶�3寮狅級
+ saveVerifyImages(order.getId(), images, Constants.FileType.ORDER_TAKE.getKey(), order.getAcceptDriver());
+
+ // 閫氱煡浼氬憳锛氳鍗曞凡閫佽揪
+ String destination = order.getTakeShopAddress() != null ? order.getTakeShopAddress() : "";
+ if (order.getMemberVerifyCode() != null) {
+ sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.ARRIVED_HAS_SHOP, order.getId(),
+ "orderNo", order.getCode(),
+ "destination", destination,
+ "pickupCode", order.getMemberVerifyCode());
+ } else {
+ sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.ARRIVED_NO_SHOP, order.getId(),
+ "orderNo", order.getCode(),
+ "destination", destination);
+ }
+
+ // 閫氱煡鍙栦欢闂ㄥ簵锛氳鍗曞凡閫佽揪
+ if (order.getTakeShopId() != null) {
+ sendShopNotice(order.getTakeShopId(), Constants.ShopOrderNotify.ARRIVED, order.getId(),
+ "orderNo", order.getCode(),
+ "destination", destination);
+ }
+
+ // 鐭俊閫氱煡浼氬憳锛氳鏉庡凡閫佽揪
+ Member arrivedMember = memberMapper.selectById(order.getMemberId());
+ if (arrivedMember != null) {
+ sendSmsNotify(arrivedMember.getTelephone(), Constants.SmsNotify.MEMBER_ARRIVED,
+ "orderNo", order.getCode(),
+ "address", destination,
+ "code", order.getMemberVerifyCode() != null ? order.getMemberVerifyCode() : "");
+ }
+ }else {
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "褰撳墠璁㈠崟鐘舵�佷笉鍏佽鏍搁攢");
}
}
@@ -2786,6 +2927,8 @@
// 寮傚湴瀵勫瓨 鈫� 寰呮姠鍗�
sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.WAIT_GRAB, order.getId(),
"orderNo", order.getCode());
+ // 鎺ㄩ�侀�氱煡鍙告満
+ pushDriverNewOrder(order);
} else {
// 灏卞湴瀵勫瓨 鈫� 寰呭彇浠舵彁閱�
sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.WAIT_PICKUP_REMIND, order.getId(),
@@ -2914,12 +3057,13 @@
ordersRefundMapper.insert(refundRecord);
// 璋冪敤寰俊閫�娆綱3锛堟斁鍦ㄦ渶鍚庯紝纭繚鍓嶇疆鎿嶄綔鍏ㄩ儴鎴愬姛锛�
+ String outRefundNo2 = ID.nextGUID();
Refund refundResult = wxPayV3Service.refund(
- order.getOutTradeNo(), order.getPayAmount(), order.getRefundAmount(),
+ outRefundNo2, order.getOutTradeNo(), order.getPayAmount(), order.getRefundAmount(),
"璁㈠崟閫�娆�", wxPayProperties.getV3RefundNotifyUrl());
// 閫�娆炬垚鍔熷悗鍥炲~閫�娆惧崟鍙凤紝鏍囪閫�娆句腑
- refundRecord.setRefundCode(refundResult.getOutRefundNo());
+ refundRecord.setRefundCode(outRefundNo2);
refundRecord.setStatus(Constants.ZERO); // 閫�娆句腑
ordersRefundMapper.updateById(refundRecord);
}
@@ -3067,8 +3211,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()));
}
}
@@ -3076,8 +3220,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()));
}
}
@@ -3448,7 +3592,10 @@
* 渚涘垎椤电瓑宸叉煡璇㈡槑缁嗙殑涓氬姟鍦烘櫙澶嶇敤锛岄伩鍏嶉噸澶嶆煡璇�
*/
private OverdueFeeVO calculateOverdueFeeInternal(Orders order, List<OrdersDetail> details) {
- if (CollectionUtils.isEmpty(details)) {
+ if (CollectionUtils.isEmpty(details)||
+ Constants.equalsInteger(order.getStatus(),Constants.ZERO)
+ || Constants.equalsInteger(order.getStatus(),Constants.ONE)
+ ) {
OverdueFeeVO vo = new OverdueFeeVO();
vo.setOverdue(false);
vo.setOverdueDays(0);
@@ -3614,7 +3761,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) {
@@ -3946,31 +4093,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);
@@ -3978,4 +4122,102 @@
}
}
+ @Override
+ public void printOrderLabel(Integer orderId, Integer shopId) {
+ Orders orders = ordersMapper.selectById(orderId);
+ if (orders == null) {
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "璁㈠崟涓嶅瓨鍦�");
+ }
+ if (!Constants.equalsInteger(orders.getDepositShopId(), shopId)) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "褰撳墠闂ㄥ簵涓嶆槸璇ヨ鍗曠殑瀛樹欢闂ㄥ簵");
+ }
+ if (orders.getStatus() < 2 || orders.getStatus() > 5) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "褰撳墠璁㈠崟鐘舵�佷笉鍏佽鎵撳嵃");
+ }
+ ShopInfo shop = shopInfoMapper.selectById(shopId);
+ if (shop == null) {
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "瀛樹欢闂ㄥ簵涓嶅瓨鍦�");
+ }
+ if (StringUtils.isBlank(shop.getPrinterSn())) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀛樹欢闂ㄥ簵鏈粦瀹氭墦鍗版満");
+ }
+ List<OrdersDetail> detailList = ordersDetailMapper.selectList(
+ new QueryWrapper<OrdersDetail>().lambda().eq(OrdersDetail::getOrderId, orderId));
+ // 鎷兼帴瀹㈡埛淇℃伅
+ String userInfo = "";
+ if (StringUtils.isNotBlank(orders.getTakeUser())) {
+ String phone = orders.getTakePhone();
+ userInfo = orders.getTakeUser();
+ if (StringUtils.isNotBlank(phone) && phone.length() >= 4) {
+ userInfo += "锛�" + phone.substring(phone.length() - 4) + "锛�";
+ }
+ }
+ String content = printService.getPrintContent(shop.getName(), detailList, userInfo, orders.getCode(), orders.getRemark(),
+ orders.getTakeLocationRemark(),
+ orders.getPayTime() != null ? new SimpleDateFormat("yyyy-MM-dd HH:mm").format(orders.getPayTime()) : "",
+ orders.getExpectedTakeTime() != null ? new SimpleDateFormat("yyyy-MM-dd HH:mm").format(orders.getExpectedTakeTime()) : "");
+ if (StringUtils.isBlank(content)) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鎵撳嵃鍐呭涓虹┖");
+ }
+ PrintRequest request = new PrintRequest();
+ xyyConfig.createRequestHeader(request);
+ request.setSn(shop.getPrinterSn());
+ request.setContent(content);
+ request.setCopies(1);
+ request.setVoice(2);
+ request.setMode(0);
+ com.doumee.config.xyy.vo.ObjectRestResponse<String> resp = printService.printLabel(request);
+ if (resp.getCode() != 0) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鎵撳嵃澶辫触锛�" + resp.getMsg());
+ }
+ log.info("璁㈠崟鏍囩鎵撳嵃鎴愬姛: orderId={}, orderIndex={}", orderId, resp.getData());
+ }
+
+ /**
+ * 寮傚湴璁㈠崟瀵勫瓨鎴愬姛鍚庢帹閫侀�氱煡缁欏徃鏈�
+ * 1銆佹湭鍔犳�ワ細鎺ㄩ�佸悓鍩庝笖闂ㄥ簵閰嶉�佽寖鍥村唴鎺ュ崟涓殑鍙告満
+ * 2銆佸姞鎬ワ細鎺ㄩ�佸悓鍩庢墍鏈夋帴鍗曚腑鐨勫徃鏈�
+ * 鍩庡競鍖归厤锛氬徃鏈篈REA_ID鍏宠仈areas琛紝閫愮骇parent_id鎵惧埌鍩庡競绾э紝涓庤鍗昪ityId鍖归厤
+ */
+ private void pushDriverNewOrder(Orders order) {
+ ShopInfo shop = shopInfoMapper.selectById(order.getDepositShopId());
+ if (shop == null || shop.getLongitude() == null || shop.getLatitude() == null) {
+ return;
+ }
+ String orderCityId = order.getCityId();
+ if (StringUtils.isBlank(orderCityId)) {
+ return;
+ }
+ String distSql = "(ST_Distance_Sphere(POINT(t.LONGITUDE, t.LATITUDE), POINT(" + shop.getLongitude() + ", " + shop.getLatitude() + ")) / 1000)";
+ // MPJ鍏宠仈鏌ヨ锛氬徃鏈� 鈫� areas(鍖哄幙) 鈫� areas_city(鍩庡競)锛屽尮閰嶈鍗昪ityId
+ MPJLambdaWrapper<DriverInfo> wrapper = new MPJLambdaWrapper<>();
+ wrapper.selectAll(DriverInfo.class)
+ .leftJoin(Areas.class,Areas::getId,DriverInfo::getAreaId)
+ .eq(DriverInfo::getAcceptingStatus, Constants.ONE)
+ .eq(DriverInfo::getStatus, Constants.ZERO)
+ .eq(DriverInfo::getDeleted, Constants.ZERO)
+ .eq(DriverInfo::getAuditStatus, Constants.THREE)
+ .eq(Areas::getParentId, orderCityId);
+ if (!Constants.equalsInteger(order.getIsUrgent(), Constants.ONE)) {
+ // 鏈姞鎬ワ細闂ㄥ簵閰嶉�佽寖鍥村唴
+ double rangeKm = shop.getDeliveryArea() != null ? shop.getDeliveryArea().doubleValue() : 5.0;
+ wrapper.apply(distSql + " <= {0}", rangeKm);
+ }
+ List<DriverInfo> drivers = driverInfoMapper.selectJoinList(DriverInfo.class, wrapper);
+ if (drivers.isEmpty()) {
+ return;
+ }
+ List<String> aliases = new ArrayList<>();
+ for (DriverInfo d : drivers) {
+ aliases.add(org.springframework.util.DigestUtils.md5DigestAsHex(d.getTelephone().getBytes()));
+ }
+ String title = Constants.equalsInteger(order.getIsUrgent(), Constants.ONE) ? "鏂板姞鎬ヨ鍗�" : "鏂拌鍗�";
+ String content = "璁㈠崟鍙凤細" + order.getCode();
+ java.util.Map<String, String> extras = new java.util.HashMap<>();
+ extras.put("orderId", String.valueOf(order.getId()));
+ extras.put("orderCode", order.getCode());
+ extras.put("type", "new_order");
+ JPushUtil.sendByAliases(aliases, title, content, extras);
+ }
+
}
--
Gitblit v1.9.3