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

---
 server/services/src/main/java/com/doumee/service/business/impl/DriverInfoServiceImpl.java |  203 ++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 195 insertions(+), 8 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 8110145..920b9e6 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
@@ -32,19 +32,15 @@
 import com.doumee.dao.business.model.Orders;
 import com.doumee.dao.business.model.OrdersDetail;
 import com.doumee.dao.business.model.Revenue;
+import com.doumee.dao.dto.*;
 import com.doumee.dao.vo.AccountResponse;
 import com.doumee.dao.vo.DriverCenterVO;
 import com.doumee.dao.vo.DriverGrabOrderVO;
 import com.doumee.dao.vo.DriverOrderDetailVO;
-import com.doumee.dao.dto.AuditDTO;
-import com.doumee.dao.dto.ChangeStatusDTO;
-import com.doumee.dao.dto.DriverLoginRequest;
-import com.doumee.dao.dto.DriverRegisterRequest;
-import com.doumee.dao.dto.DriverVerifyRequest;
-import com.doumee.dao.dto.DriverActiveOrderDTO;
-import com.doumee.dao.dto.DriverGrabOrderDTO;
 import com.doumee.core.utils.aliyun.AliSmsService;
+import com.doumee.dao.business.model.Notice;
 import com.doumee.service.business.DriverInfoService;
+import com.doumee.service.business.NoticeService;
 import com.alibaba.fastjson.JSONObject;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import org.apache.commons.lang3.RandomStringUtils;
@@ -107,6 +103,43 @@
 
     @Autowired
     private OperationConfigBiz operationConfigBiz;
+
+    @Autowired
+    private NoticeService noticeService;
+
+    /**
+     * 鍙戦�佽鍗曠珯鍐呬俊閫氱煡
+     */
+    private void sendOrderNotice(Integer memberId, Constants.MemberOrderNotify notify, Integer orderId, String... params) {
+        Notice notice = new Notice();
+        notice.setUserType(0); // 0=浼氬憳
+        notice.setUserId(memberId);
+        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);
+    }
+
+    /**
+     * 鍙戦�侀棬搴楃珯鍐呬俊閫氱煡
+     */
+    private void sendShopNotice(Integer shopId, Constants.ShopOrderNotify notify, Integer orderId, String... params) {
+        Notice notice = new Notice();
+        notice.setUserType(2); // 2=闂ㄥ簵
+        notice.setUserId(shopId);
+        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) {
@@ -462,7 +495,8 @@
                 .set(DriverInfo::getCardEndDate, request.getCardEndDate())
                 .set(DriverInfo::getIdcardImg, request.getIdcardImg())
                 .set(DriverInfo::getIdcardImgBack, request.getIdcardImgBack())
-                .set(DriverInfo::getAuditStatus, Constants.ZERO)
+                .set(DriverInfo::getAliAccount, request.getAliAccount())
+                .set(DriverInfo::getAliName, request.getAliName())
                 .set(DriverInfo::getUpdateTime, now)
                 .set(DriverInfo::getAuditRemark, null)
                 .set(DriverInfo::getAuditTime, null)
@@ -1131,6 +1165,159 @@
         log.setCreateTime(new Date());
         log.setDeleted(Constants.ZERO);
         orderLogMapper.insert(log);
+
+        // 閫氱煡浼氬憳锛氬徃鏈哄彉鏇�
+        sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.DRIVER_CHANGED, orderId,
+                "orderNo", order.getCode());
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void grabOrder(Integer driverId, Integer orderId) {
+        // 1. 鏍¢獙鍙告満
+        DriverInfo driver = driverInfoMapper.selectById(driverId);
+        if (driver == null) {
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "鍙告満淇℃伅涓嶅瓨鍦�");
+        }
+        // 2. 鏍¢獙鍙告満鎺ュ崟鐘舵��
+        if (!Constants.ONE.equals(driver.getAcceptingStatus())) {
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "璇峰厛寮�鍚帴鍗曠姸鎬�");
+        }
+        if (!Integer.valueOf(3).equals(driver.getAuditStatus())) {
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鍙告満瀹℃牳鏈�氳繃鎴栨湭缂寸撼鎶奸噾");
+        }
+        if (driver.getDriverLevel() == null) {
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鍙告満绛夌骇鏈缃�");
+        }
+
+        // 3. 鏍¢獙璁㈠崟
+        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 (!Constants.TWO.equals(order.getStatus())) {
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "褰撳墠璁㈠崟鐘舵�佷笉鍏佽鎶㈠崟");
+        }
+
+        // 4. 鏍¢獙鍙告満绛夌骇 鈮� 璁㈠崟绛夌骇
+        if (order.getGoodLevel() != null && driver.getDriverLevel() < order.getGoodLevel()) {
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鍙告満绛夌骇涓嶈冻锛屾棤娉曟姠璇ヨ鍗�");
+        }
+
+        // 5. 鍘熷瓙鏇存柊锛氬甫 status=2 鏉′欢闃叉骞跺彂閲嶅鎶㈠崟
+        Date now = new Date();
+        int rows = ordersMapper.update(new UpdateWrapper<Orders>().lambda()
+                .set(Orders::getAcceptDriver, driverId)
+                .set(Orders::getAcceptTime, now)
+                .set(Orders::getAcceptType, 0) // 0=鎵嬪姩鎶㈠崟
+                .set(Orders::getStatus, Constants.OrderStatus.accepted.getStatus())
+                .set(Orders::getUpdateTime, now)
+                .eq(Orders::getId, orderId)
+                .eq(Orders::getStatus, Constants.TWO));
+        if (rows == 0) {
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鎶㈠崟澶辫触锛岃鍗曞凡琚姠鎴栫姸鎬佸凡鍙樻洿");
+        }
+
+        // 6. 鍐欏叆鎿嶄綔鏃ュ織
+        OrderLog log = new OrderLog();
+        log.setOrderId(orderId);
+        log.setTitle("鍙告満鎶㈠崟");
+        log.setLogInfo("鍙告満銆�" + driver.getName() + "銆戞姠鍗曟垚鍔�");
+        log.setObjType(Constants.ORDER_LOG_DRIVER_PICKUP);
+        log.setOptUserId(driver.getMemberId());
+        log.setOptUserType(Constants.ONE);
+        log.setOrderStatus(Constants.OrderStatus.accepted.getStatus());
+        log.setCreateTime(now);
+        log.setDeleted(Constants.ZERO);
+        orderLogMapper.insert(log);
+
+        // 7. 閫氱煡浼氬憳锛氬徃鏈哄凡鎶㈠崟
+        sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.WAIT_PICKUP_GRABBED, orderId,
+                "driverName", driver.getName());
+
+        // 閫氱煡瀛樹欢闂ㄥ簵锛氳鍗曞凡鎶㈠崟寰呭彇浠�
+        if (order.getDepositShopId() != null) {
+            sendShopNotice(order.getDepositShopId(), Constants.ShopOrderNotify.WAIT_PICKUP, orderId,
+                    "orderNo", order.getCode());
+        }
+    }
+
+    @Override
+    @Transactional
+    public void confirmPickup(Integer driverId, DriverPickupDTO 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 (!Constants.equalsInteger(order.getStatus(), Constants.OrderStatus.accepted.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_TAKE.getKey());
+                multifile.setType(Constants.ZERO);
+                multifile.setFileurl(url);
+                multifile.setIsdeleted(Constants.ZERO);
+                multifile.setCreateDate(now);
+                multifile.setSortnum(sortNum++);
+                multifileMapper.insert(multifile);
+            }
+        }
+
+        // 4. 鏇存柊璁㈠崟鐘舵�佷负娲鹃�佷腑(4)
+        ordersMapper.update(new UpdateWrapper<Orders>().lambda()
+                .set(Orders::getStatus, Constants.OrderStatus.delivering.getStatus())
+                .set(Orders::getUpdateTime, now)
+                .eq(Orders::getId, orderId));
+
+        // 5. 鍐欏叆鎿嶄綔鏃ュ織
+        OrderLog log = new OrderLog();
+        log.setOrderId(orderId);
+        log.setTitle("鍙告満瀹屾垚鍙栦欢");
+        log.setLogInfo("鍙告満銆�" + driver.getName() + "銆戝畬鎴愬彇浠讹紝寮�濮嬫淳閫�");
+        log.setObjType(Constants.ORDER_LOG_DRIVER_PICKUP);
+        log.setOptUserId(driver.getMemberId());
+        log.setOptUserType(Constants.ONE);
+        log.setOrderStatus(Constants.OrderStatus.delivering.getStatus());
+        log.setCreateTime(now);
+        log.setDeleted(Constants.ZERO);
+        orderLogMapper.insert(log);
+
+        // 閫氱煡浼氬憳锛氳鍗曢厤閫佷腑
+        sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.DELIVERING, orderId,
+                "orderNo", order.getCode(),
+                "driverName", driver.getName());
+
+        // 閫氱煡鍙栦欢闂ㄥ簵锛氳鍗曢厤閫佷腑
+        if (order.getTakeShopId() != null) {
+            sendShopNotice(order.getTakeShopId(), Constants.ShopOrderNotify.DELIVERING, orderId,
+                    "orderNo", order.getCode(),
+                    "driverName", driver.getName());
+        }
     }
 
     private List<String> getFileUrls(Integer orderId, int objType, String prefix) {

--
Gitblit v1.9.3