From ce477aa3f4d34a65898c7e69162dde623182338b Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期四, 23 四月 2026 20:06:11 +0800
Subject: [PATCH] 代码生成

---
 server/services/src/main/java/com/doumee/service/business/impl/DriverInfoServiceImpl.java |  160 +++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 147 insertions(+), 13 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 b0b876c..c885730 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
@@ -15,9 +15,11 @@
 import com.doumee.dao.business.DriverInfoMapper;
 import com.doumee.dao.business.MemberMapper;
 import com.doumee.dao.business.MultifileMapper;
+import com.doumee.dao.business.OrderCommentMapper;
 import com.doumee.dao.business.SmsrecordMapper;
 import com.doumee.dao.business.CategoryMapper;
 import com.doumee.dao.business.OrdersMapper;
+import com.doumee.dao.business.ShopInfoMapper;
 import com.doumee.dao.business.OrdersDetailMapper;
 import com.doumee.dao.business.RevenueMapper;
 import com.doumee.biz.system.SystemDictDataBiz;
@@ -26,6 +28,8 @@
 import com.doumee.dao.business.model.Category;
 import com.doumee.dao.business.model.DriverInfo;
 import com.doumee.dao.business.model.OrderLog;
+import com.doumee.dao.business.model.OrderComment;
+import com.doumee.dao.business.model.ShopInfo;
 import com.doumee.dao.business.model.Member;
 import com.doumee.dao.business.model.Multifile;
 import com.doumee.dao.business.model.Smsrecord;
@@ -43,6 +47,7 @@
 import com.doumee.service.business.NoticeService;
 import com.alibaba.fastjson.JSONObject;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.RandomStringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -59,6 +64,7 @@
  * @author rk
  * @date 2026/04/08
  */
+@Slf4j
 @Service
 public class DriverInfoServiceImpl implements DriverInfoService {
 
@@ -88,6 +94,12 @@
 
     @Autowired
     private OrdersMapper ordersMapper;
+
+    @Autowired
+    private ShopInfoMapper shopInfoMapper;
+
+    @Autowired
+    private OrderCommentMapper orderCommentMapper;
 
     @Autowired
     private RevenueMapper revenueMapper;
@@ -626,6 +638,20 @@
                 .set(Member::getBusinessStatus, driverStatus)
                 .set(Member::getUpdateTime, now)
                 .eq(Member::getId, driverInfo.getMemberId()));
+
+        // 鐭俊閫氱煡
+        if (Constants.equalsInteger(newAuditStatus, Constants.ONE)) {
+            // 瀹℃壒閫氳繃
+            sendSmsNotify(driverInfo.getTelephone(),
+                    Constants.SmsNotify.DRIVER_AUTH_APPROVED,
+                    "driver", driverInfo.getName());
+        } else if (Constants.equalsInteger(newAuditStatus, Constants.TWO)) {
+            // 瀹℃壒椹冲洖
+            sendSmsNotify(driverInfo.getTelephone(),
+                    Constants.SmsNotify.DRIVER_AUTH_REJECTED,
+                    "driver", driverInfo.getName(),
+                    "reason", auditDTO.getAuditRemark() != null ? auditDTO.getAuditRemark() : "");
+        }
     }
 
     @Override
@@ -1114,10 +1140,59 @@
             }
         }
 
+        // 寮傚湴瀵勫瓨瀹炴椂缁忕含搴︼紙鎸夌姸鎬佽繑鍥烇級
+        if (Constants.ONE.equals(order.getType())) {
+            // 鍙告満鑷韩缁忕含搴�
+            vo.setDriverLng(driverLng);
+            vo.setDriverLat(driverLat);
+
+            // status=3(宸叉帴鍗�)锛氳繑鍥炲瓨浠堕棬搴楃粡绾害
+            if (Constants.equalsInteger(order.getStatus(), Constants.OrderStatus.accepted.getStatus())) {
+                if (order.getDepositShopId() != null) {
+                    ShopInfo depositShop = shopInfoMapper.selectById(order.getDepositShopId());
+                    if (depositShop != null) {
+                        vo.setDepositShopLng(depositShop.getLongitude());
+                        vo.setDepositShopLat(depositShop.getLatitude());
+                    }
+                }
+            }
+            // status=4(閰嶉�佷腑)锛氳繑鍥炲彇浠剁偣缁忕含搴�
+            if (Constants.equalsInteger(order.getStatus(), 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());
+                }
+            }
+        }
+
         // 涓嬪崟闄勪欢鍥剧墖
         String imgPrefix = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
                 + systemDictDataBiz.queryByCode(Constants.OSS, Constants.MEMBER_FILES).getCode();
         vo.setOrderImages(getFileUrls(orderId, Constants.FileType.ORDER_FILE.getKey(), imgPrefix));
+
+        // 璇勪环淇℃伅
+        vo.setCommentStatus(order.getCommentStatus());
+        if (Constants.equalsInteger(order.getCommentStatus(), Constants.ONE)) {
+            vo.setCommentTime(order.getCommentTime());
+            // 鏌ヨ鍙告満璇勪环璁板綍
+            OrderComment driverComment = orderCommentMapper.selectOne(new QueryWrapper<OrderComment>().lambda()
+                    .eq(OrderComment::getOrderId, orderId)
+                    .eq(OrderComment::getTargetType, Constants.THREE)
+                    .eq(OrderComment::getDeleted, Constants.ZERO)
+                    .last("limit 1"));
+            if (driverComment != null) {
+                vo.setDriverScore(driverComment.getScore());
+                vo.setCommentContent(driverComment.getContent());
+            }
+            // 璇勪环闄勪欢鍥剧墖
+            vo.setCommentImages(getFileUrls(orderId, Constants.FileType.COMMENT_ATTACH.getKey(), imgPrefix));
+        }
 
         return vo;
     }
@@ -1160,7 +1235,7 @@
         Date todayStart = cal.getTime();
         Long todayCancelCount = orderLogMapper.selectCount(new QueryWrapper<OrderLog>().lambda()
                 .eq(OrderLog::getOptUserId, driver.getMemberId())
-                .eq(OrderLog::getObjType, Constants.ORDER_LOG_CANCEL)
+                .eq(OrderLog::getObjType, Constants.OrderLogType.driverCancel.getStatus())
                 .eq(OrderLog::getOptUserType, Constants.ONE)
                 .ge(OrderLog::getCreateTime, todayStart));
         if (todayCancelCount != null && todayCancelCount >= limit) {
@@ -1177,9 +1252,9 @@
         // 5. 鍐欏叆鍙栨秷鏃ュ織
         OrderLog log = new OrderLog();
         log.setOrderId(orderId);
-        log.setTitle("鍙告満鍙栨秷璁㈠崟");
-        log.setLogInfo(StringUtils.isNotBlank(reason) ? reason : "鍙告満鍙栨秷鎺ュ崟");
-        log.setObjType(Constants.ORDER_LOG_CANCEL);
+        log.setTitle(Constants.OrderLogType.driverCancel.getTitle());
+        log.setLogInfo(Constants.OrderLogType.driverCancel.format(StringUtils.isNotBlank(reason) ? reason : "鍙告満鍙栨秷鎺ュ崟"));
+        log.setObjType(Constants.OrderLogType.driverCancel.getStatus());
         log.setOptUserId(driver.getMemberId());
         log.setOptUserType(Constants.ONE);
         log.setOrderStatus(order.getStatus());
@@ -1251,9 +1326,9 @@
         // 6. 鍐欏叆鎿嶄綔鏃ュ織
         OrderLog log = new OrderLog();
         log.setOrderId(orderId);
-        log.setTitle("鍙告満鎶㈠崟");
-        log.setLogInfo("鍙告満銆�" + driver.getName() + "銆戞姠鍗曟垚鍔�");
-        log.setObjType(Constants.ORDER_LOG_DRIVER_PICKUP);
+        log.setTitle(Constants.OrderLogType.driverGrab.getTitle());
+        log.setLogInfo(Constants.OrderLogType.driverGrab.format(driver.getName()));
+        log.setObjType(Constants.OrderLogType.driverGrab.getStatus());
         log.setOptUserId(driver.getMemberId());
         log.setOptUserType(Constants.ONE);
         log.setOrderStatus(Constants.OrderStatus.accepted.getStatus());
@@ -1276,6 +1351,12 @@
         sendDriverNotice(driverId, Constants.DriverOrderNotify.WAIT_DELIVER, orderId,
                 "orderNo", order.getCode(),
                 "shopName", shopName != null ? shopName : "");
+
+        // 鐭俊閫氱煡鍙告満锛氭姠鍗曟垚鍔燂紝寰呭彇浠�
+        String pickupAddress = order.getDepositShopAddress() != null ? order.getDepositShopAddress() : order.getDepositLocation();
+        sendSmsNotify(driver.getTelephone(), Constants.SmsNotify.DRIVER_WAIT_PICKUP,
+                "orderNo", order.getCode(),
+                "address", pickupAddress != null ? pickupAddress : "");
     }
 
     @Override
@@ -1330,9 +1411,9 @@
         // 5. 鍐欏叆鎿嶄綔鏃ュ織
         OrderLog log = new OrderLog();
         log.setOrderId(orderId);
-        log.setTitle("鍙告満瀹屾垚鍙栦欢");
-        log.setLogInfo("鍙告満銆�" + driver.getName() + "銆戝畬鎴愬彇浠讹紝寮�濮嬫淳閫�");
-        log.setObjType(Constants.ORDER_LOG_DRIVER_PICKUP);
+        log.setTitle(Constants.OrderLogType.driverPickup.getTitle());
+        log.setLogInfo(Constants.OrderLogType.driverPickup.format(driver.getName()));
+        log.setObjType(Constants.OrderLogType.driverPickup.getStatus());
         log.setOptUserId(driver.getMemberId());
         log.setOptUserType(Constants.ONE);
         log.setOrderStatus(Constants.OrderStatus.delivering.getStatus());
@@ -1355,6 +1436,14 @@
         // 閫氱煡鍙告満锛氬凡鍙栦欢閰嶉�佷腑
         sendDriverNotice(driverId, Constants.DriverOrderNotify.DELIVERING, orderId,
                 "orderNo", order.getCode());
+
+        // 鐭俊閫氱煡浼氬憳锛氬徃鏈哄凡鍙栦欢锛岄厤閫佷腑
+        Member deliveringMember = memberMapper.selectById(order.getMemberId());
+        if (deliveringMember != null) {
+            sendSmsNotify(deliveringMember.getTelephone(), Constants.SmsNotify.MEMBER_DELIVERING,
+                    "orderNo", order.getCode(),
+                    "name", driver.getName());
+        }
     }
 
     @Override
@@ -1413,9 +1502,10 @@
         // 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.setTitle(Constants.OrderLogType.driverDeliver.getTitle());
+        log.setLogInfo(Constants.OrderLogType.driverDeliver.format(
+                StringUtils.isNotBlank(dto.getRemark()) ? dto.getRemark() : "鍙告満銆�" + driver.getName() + "銆戝凡閫佽揪"));
+        log.setObjType(Constants.OrderLogType.driverDeliver.getStatus());
         log.setOptUserId(driver.getMemberId());
         log.setOptUserType(Constants.ONE);
         log.setOrderStatus(Constants.OrderStatus.arrived.getStatus());
@@ -1567,4 +1657,48 @@
         return vo;
     }
 
+    /**
+     * 鍙戦�佺煭淇¢�氱煡锛堝け璐ヤ笉褰卞搷涓讳笟鍔★級
+     */
+    private void sendSmsNotify(String phone, Constants.SmsNotify smsNotify, String... paramPairs) {
+        if (StringUtils.isBlank(phone)) {
+            return;
+        }
+        String content = smsNotify.format(paramPairs);
+        try {
+            JSONObject templateParam = new JSONObject();
+            for (int i = 0; i < paramPairs.length - 1; i += 2) {
+                templateParam.put(paramPairs[i], paramPairs[i + 1]);
+            }
+            boolean result = 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);
+            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.setCreateTime(new Date());
+                record.setDeleted(Constants.ZERO);
+                smsrecordMapper.insert(record);
+            } catch (Exception ignored) {}
+        }
+    }
+
 }

--
Gitblit v1.9.3