From 2ab42edae9d271f5f464b7be475e217752dacb38 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期三, 22 四月 2026 09:24:47 +0800
Subject: [PATCH] 代码生成
---
server/services/src/main/java/com/doumee/service/business/impl/DriverInfoServiceImpl.java | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 115 insertions(+), 0 deletions(-)
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 920b9e6..b0b876c 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
@@ -141,6 +141,27 @@
noticeService.create(notice);
}
+ /**
+ * 鍙戦�佸徃鏈虹珯鍐呬俊閫氱煡
+ */
+ private void sendDriverNotice(Integer driverId, Constants.DriverOrderNotify notify, Integer orderId, String... params) {
+ DriverInfo driver = driverInfoMapper.selectById(driverId);
+ if (driver == null || driver.getMemberId() == null) {
+ return;
+ }
+ Notice notice = new Notice();
+ notice.setUserType(1); // 1=鍙告満
+ notice.setUserId(driver.getMemberId());
+ notice.setTitle(notify.getTitle());
+ notice.setContent(notify.format(params));
+ notice.setObjId(orderId);
+ notice.setObjType(0); // 0=璁㈠崟
+ notice.setStatus(0); // 0=鏈
+ notice.setIsdeleted(Constants.ZERO);
+ notice.setCreateDate(new Date());
+ noticeService.create(notice);
+ }
+
@Override
public Integer create(DriverInfo driverInfo) {
driverInfoMapper.insert(driverInfo);
@@ -1169,6 +1190,12 @@
// 閫氱煡浼氬憳锛氬徃鏈哄彉鏇�
sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.DRIVER_CHANGED, orderId,
"orderNo", order.getCode());
+
+ // 閫氱煡鍙告満锛氬彇娑堟垚鍔�
+ int remainLimit = limit - (todayCancelCount != null ? todayCancelCount.intValue() + 1 : 1);
+ sendDriverNotice(driverId, Constants.DriverOrderNotify.CANCELLED, orderId,
+ "orderNo", order.getCode(),
+ "cancelLimit", String.valueOf(Math.max(remainLimit, 0)));
}
@Override
@@ -1243,6 +1270,12 @@
sendShopNotice(order.getDepositShopId(), Constants.ShopOrderNotify.WAIT_PICKUP, orderId,
"orderNo", order.getCode());
}
+
+ // 閫氱煡鍙告満锛氭姠鍗曟垚鍔�
+ String shopName = order.getDepositShopName() != null ? order.getDepositShopName() : order.getDepositLocation();
+ sendDriverNotice(driverId, Constants.DriverOrderNotify.WAIT_DELIVER, orderId,
+ "orderNo", order.getCode(),
+ "shopName", shopName != null ? shopName : "");
}
@Override
@@ -1318,6 +1351,88 @@
"orderNo", order.getCode(),
"driverName", driver.getName());
}
+
+ // 閫氱煡鍙告満锛氬凡鍙栦欢閰嶉�佷腑
+ sendDriverNotice(driverId, Constants.DriverOrderNotify.DELIVERING, orderId,
+ "orderNo", order.getCode());
+ }
+
+ @Override
+ @Transactional
+ public void confirmDeliver(Integer driverId, DriverDeliverDTO dto) {
+ Integer orderId = dto.getOrderId();
+
+ // 1. 鏍¢獙鍙告満
+ DriverInfo driver = driverInfoMapper.selectById(driverId);
+ if (driver == null) {
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "鍙告満淇℃伅涓嶅瓨鍦�");
+ }
+
+ // 2. 鏍¢獙璁㈠崟
+ Orders order = ordersMapper.selectById(orderId);
+ if (order == null || Constants.ONE.equals(order.getDeleted())) {
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "璁㈠崟涓嶅瓨鍦�");
+ }
+ if (!Constants.ONE.equals(order.getType())) {
+ 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 (!driverId.equals(order.getAcceptDriver())) {
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鏃犳潈鎿嶄綔璇ヨ鍗�");
+ }
+
+ // 3. 淇濆瓨閫佽揪鍥剧墖
+ Date now = new Date();
+ if (dto.getImages() != null && !dto.getImages().isEmpty()) {
+ int sortNum = 0;
+ for (String url : dto.getImages()) {
+ Multifile multifile = new Multifile();
+ multifile.setObjId(orderId);
+ multifile.setObjType(Constants.FileType.DRIVER_DONE.getKey());
+ multifile.setType(Constants.ZERO);
+ multifile.setFileurl(url);
+ multifile.setIsdeleted(Constants.ZERO);
+ multifile.setCreateDate(now);
+ multifile.setSortnum(sortNum++);
+ multifileMapper.insert(multifile);
+ }
+ }
+
+ // 4. 鏇存柊璁㈠崟鐘舵�佷负宸查�佽揪(5)
+ ordersMapper.update(new UpdateWrapper<Orders>().lambda()
+ .set(Orders::getStatus, Constants.OrderStatus.arrived.getStatus())
+ .set(Orders::getArriveTime, now)
+ .set(Orders::getUpdateTime, now)
+ .eq(Orders::getId, orderId));
+
+ // 5. 鍐欏叆鎿嶄綔鏃ュ織
+ OrderLog log = new OrderLog();
+ log.setOrderId(orderId);
+ log.setTitle("鍙告満纭閫佽揪");
+ log.setLogInfo(StringUtils.isNotBlank(dto.getRemark()) ? dto.getRemark() : "鍙告満銆�" + driver.getName() + "銆戝凡閫佽揪");
+ log.setObjType(Constants.ORDER_LOG_DRIVER_DELIVER);
+ log.setOptUserId(driver.getMemberId());
+ log.setOptUserType(Constants.ONE);
+ log.setOrderStatus(Constants.OrderStatus.arrived.getStatus());
+ log.setCreateTime(now);
+ log.setDeleted(Constants.ZERO);
+ orderLogMapper.insert(log);
+
+ // 6. 閫氱煡浼氬憳锛氳鍗曞凡閫佽揪锛堟棤鍙栦欢闂ㄥ簵锛�
+ String destination = StringUtils.isNotBlank(order.getTakeShopAddress()) ? order.getTakeShopAddress() : "鐩殑鍦�";
+ sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.ARRIVED_NO_SHOP, orderId,
+ "orderNo", order.getCode(),
+ "destination", destination);
+
+ // 閫氱煡鍙告満锛氬凡閫佽揪
+ sendDriverNotice(driverId, Constants.DriverOrderNotify.ARRIVED, orderId,
+ "orderNo", order.getCode(),
+ "destination", destination);
}
private List<String> getFileUrls(Integer orderId, int objType, String prefix) {
--
Gitblit v1.9.3