From 467fe3b3ec6aa9d449b094bdd9df4611323d88d1 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期五, 24 四月 2026 21:43:50 +0800
Subject: [PATCH] 代码生成

---
 server/services/src/main/java/com/doumee/service/business/impl/DriverInfoServiceImpl.java |  152 +++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 136 insertions(+), 16 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 c885730..5bd7f52 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
@@ -4,6 +4,7 @@
 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.impl.AreasBizImpl;
 import com.doumee.core.constants.Constants;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
@@ -22,27 +23,17 @@
 import com.doumee.dao.business.ShopInfoMapper;
 import com.doumee.dao.business.OrdersDetailMapper;
 import com.doumee.dao.business.RevenueMapper;
+import com.doumee.dao.business.model.*;
+import com.doumee.service.business.AreasService;
 import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.biz.system.OperationConfigBiz;
 import com.doumee.dao.business.OrderLogMapper;
-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;
-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.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;
@@ -118,6 +109,9 @@
 
     @Autowired
     private NoticeService noticeService;
+
+    @Autowired
+    private AreasBizImpl areasBiz;
 
     /**
      * 鍙戦�佽鍗曠珯鍐呬俊閫氱煡
@@ -383,7 +377,7 @@
             member.setUpdateTime(now);
             member.setTelephone(telephone);
             member.setNickName(telephone.substring(0, 3) + "****" + telephone.substring(7));
-            member.setName(telephone);
+            member.setName(member.getNickName());
             member.setUserType(Constants.ONE);
             member.setBusinessStatus(Constants.ZERO);
             member.setPassword(secure.encryptPassword(defaultPassword, salt));
@@ -401,13 +395,15 @@
 
             // 鍒涘缓鍙告満鍩虹淇℃伅
             DriverInfo driverInfo = new DriverInfo();
+            driverInfo.setId(member.getId());
             driverInfo.setDeleted(Constants.ZERO);
             driverInfo.setCreateTime(now);
             driverInfo.setUpdateTime(now);
             driverInfo.setTelephone(telephone);
+            driverInfo.setName(member.getNickName());
             driverInfo.setMemberId(member.getId());
             driverInfo.setStatus(Constants.ZERO);
-            driverInfo.setAuditStatus(null);
+            driverInfo.setAuditStatus(99);
             driverInfoMapper.insert(driverInfo);
         }
 
@@ -531,6 +527,7 @@
                 .set(DriverInfo::getAliAccount, request.getAliAccount())
                 .set(DriverInfo::getAliName, request.getAliName())
                 .set(DriverInfo::getUpdateTime, now)
+                .set(DriverInfo::getAuditStatus, Constants.ZERO)
                 .set(DriverInfo::getAuditRemark, null)
                 .set(DriverInfo::getAuditTime, null)
                 .eq(DriverInfo::getId, driverInfo.getId()));
@@ -561,18 +558,39 @@
     @Override
     public DriverInfo getVerifyDetail(Integer memberId) {
         DriverInfo driverInfo = driverInfoMapper.selectOne(new QueryWrapper<DriverInfo>().lambda()
-                .eq(DriverInfo::getMemberId, memberId)
+                .eq(DriverInfo::getId, memberId)
                 .eq(DriverInfo::getDeleted, Constants.ZERO)
                 .last("limit 1"));
         if (Objects.isNull(driverInfo)) {
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
+        // 鎷兼帴鍥剧墖鍓嶇紑
+        String imgPrefix = "";
+        try {
+            imgPrefix = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
+                    + systemDictDataBiz.queryByCode(Constants.OSS, Constants.DRIVER_FILES).getCode();
+        } catch (Exception e) {
+            // 鏈厤缃椂蹇界暐
+        }
+        driverInfo.setImgPrefix(imgPrefix);
         // 鏌ヨ杞﹁締绫诲瀷鍚嶇О鍜屾槸鍚﹂渶瑕侀┚椹惰瘉
         if (driverInfo.getCarType() != null) {
             Category category = categoryMapper.selectById(driverInfo.getCarType());
             if (Objects.nonNull(category)) {
                 driverInfo.setCarTypeName(category.getName());
                 driverInfo.setNeedLicense(Constants.equalsInteger(Integer.valueOf(category.getOtherField()), Constants.ONE) ? Constants.ONE : Constants.ZERO);
+            }
+        }
+        // 鏌ヨ鐪佸競鍖轰俊鎭�
+        if (driverInfo.getAreaId() != null) {
+            Areas district = areasBiz.resolveArea(driverInfo.getAreaId());
+            if (district != null) {
+                driverInfo.setDistrictId(district.getId());
+                driverInfo.setDistrictName(district.getName());
+                driverInfo.setCityId(district.getCityId());
+                driverInfo.setCityName(district.getCityName());
+                driverInfo.setProvinceId(district.getProvinceId());
+                driverInfo.setProvinceName(district.getProvinceName());
             }
         }
         // 鏌ヨ鐓х墖鍒楄〃
@@ -790,8 +808,11 @@
         vo.setImgUrl(driver.getImgurl());
         vo.setCarCode(driver.getCarCode());
         vo.setScore(driver.getScore() != null ? driver.getScore().toPlainString() : "0");
+        vo.setDriverLevel(driver.getDriverLevel());
+        vo.setAuditStatus(driver.getAuditStatus());
+        vo.setAuditRemark(driver.getAuditRemark());
         vo.setBalance(driver.getBalance() != null ? driver.getBalance() : 0L);
-
+        vo.setAcceptingStatus(driver.getAcceptingStatus());
         // 澶村儚鍏ㄨ矾寰�
         if (StringUtils.isNotBlank(driver.getImgurl())) {
             String imgPrefix = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
@@ -840,6 +861,54 @@
                 .eq(Orders::getDeleted, Constants.ZERO)
                 .eq(Orders::getStatus, Constants.OrderStatus.delivering.getStatus()));
         vo.setWaitDeliverCount(waitDeliverCount.intValue());
+
+        return vo;
+    }
+
+    @Override
+    public com.doumee.dao.vo.DriverStatsVO getDriverStats(Integer memberId) {
+        DriverInfo driver = driverInfoMapper.selectOne(new QueryWrapper<DriverInfo>().lambda()
+                .eq(DriverInfo::getId, memberId)
+                .eq(DriverInfo::getDeleted, Constants.ZERO)
+                .last("limit 1"));
+        if (driver == null) {
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "鍙告満淇℃伅涓嶅瓨鍦�");
+        }
+
+        com.doumee.dao.vo.DriverStatsVO vo = new com.doumee.dao.vo.DriverStatsVO();
+
+        // 绱浣i噾锛歵ype=0(瀹屾垚璁㈠崟) + vaildStatus=1(宸插叆璐�)
+        QueryWrapper<Revenue> totalWrapper = new QueryWrapper<>();
+        totalWrapper.lambda()
+                .eq(Revenue::getMemberId, memberId)
+                .eq(Revenue::getMemberType, Constants.ONE)
+                .eq(Revenue::getType, Constants.ZERO)
+                .eq(Revenue::getVaildStatus, Constants.ONE)
+                .eq(Revenue::getDeleted, Constants.ZERO);
+        totalWrapper.select("IFNULL(SUM(AMOUNT),0) as amount");
+        Revenue totalResult = revenueMapper.selectOne(totalWrapper);
+        vo.setTotalCommission(totalResult != null && totalResult.getAmount() != null ? totalResult.getAmount() : 0L);
+
+        // 寰呯粨绠椾剑閲戯細type=0(瀹屾垚璁㈠崟) + vaildStatus=0(鍏ヨ处涓�)
+        QueryWrapper<Revenue> pendingWrapper = new QueryWrapper<>();
+        pendingWrapper.lambda()
+                .eq(Revenue::getMemberId, memberId)
+                .eq(Revenue::getMemberType, Constants.ONE)
+                .eq(Revenue::getType, Constants.ZERO)
+                .eq(Revenue::getVaildStatus, Constants.ZERO)
+                .eq(Revenue::getDeleted, Constants.ZERO);
+        pendingWrapper.select("IFNULL(SUM(AMOUNT),0) as amount");
+        Revenue pendingResult = revenueMapper.selectOne(pendingWrapper);
+        vo.setPendingCommission(pendingResult != null && pendingResult.getAmount() != null ? pendingResult.getAmount() : 0L);
+
+        // 璁㈠崟鎬绘暟
+        Long totalOrderCount = ordersMapper.selectCount(new QueryWrapper<Orders>().lambda()
+                .eq(Orders::getAcceptDriver, driver.getId())
+                .eq(Orders::getDeleted, Constants.ZERO));
+        vo.setTotalOrderCount(totalOrderCount.intValue());
+
+        // 閽卞寘浣欓
+        vo.setBalance(driver.getBalance() != null ? driver.getBalance() : 0L);
 
         return vo;
     }
@@ -1701,4 +1770,55 @@
         }
     }
 
+    @Override
+    public void changePassword(Integer driverId, String newPassword, String token) {
+        if (StringUtils.isBlank(newPassword)) {
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵嗙爜涓嶈兘涓虹┖");
+        }
+        // 鏍¢獙瀵嗙爜蹇呴』鍚屾椂鍖呭惈瀛楁瘝鍜屾暟瀛�
+        boolean hasLetter = newPassword.chars().anyMatch(Character::isLetter);
+        boolean hasDigit = newPassword.chars().anyMatch(Character::isDigit);
+        if (!hasLetter || !hasDigit) {
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵嗙爜蹇呴』鍚屾椂鍖呭惈瀛楁瘝鍜屾暟瀛�");
+        }
+        // 鏌ヨ鍙告満瀵瑰簲鐨勪細鍛�
+        DriverInfo driverInfo = driverInfoMapper.selectById(driverId);
+        if (driverInfo == null || driverInfo.getMemberId() == null) {
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        Member member = memberMapper.selectById(driverInfo.getMemberId());
+        if (member == null) {
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        // 鍔犲瘑鏂板瘑鐮佸苟鏇存柊
+        String salt = RandomStringUtils.randomAlphanumeric(6);
+        String encryptPwd = secure.encryptPassword(newPassword, salt);
+        memberMapper.update(new UpdateWrapper<Member>().lambda()
+                .set(Member::getPassword, encryptPwd)
+                .set(Member::getSalt, salt)
+                .eq(Member::getId, member.getId()));
+        // 娓呴櫎token锛屽己鍒堕噸鏂扮櫥褰�
+        if (StringUtils.isNotBlank(token)) {
+            redisTemplate.delete(token);
+        }
+    }
+
+    @Override
+    public Map<String, Integer> getActiveOrderCount(Integer driverId) {
+        // 宸叉姠鍗�(status=3)鏁伴噺
+        Long grabbed = ordersMapper.selectCount(new QueryWrapper<Orders>().lambda()
+                .eq(Orders::getAcceptDriver, driverId)
+                .eq(Orders::getStatus, Constants.OrderStatus.accepted.getStatus())
+                .eq(Orders::getDeleted, Constants.ZERO));
+        // 娲鹃�佷腑(status=4)鏁伴噺
+        Long delivering = ordersMapper.selectCount(new QueryWrapper<Orders>().lambda()
+                .eq(Orders::getAcceptDriver, driverId)
+                .eq(Orders::getStatus, Constants.OrderStatus.delivering.getStatus())
+                .eq(Orders::getDeleted, Constants.ZERO));
+        Map<String, Integer> result = new HashMap<>();
+        result.put("grabbedCount", grabbed != null ? grabbed.intValue() : 0);
+        result.put("deliveringCount", delivering != null ? delivering.intValue() : 0);
+        return result;
+    }
+
 }

--
Gitblit v1.9.3