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 | 193 +++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 164 insertions(+), 29 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 548fc41..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());
}
}
// 鏌ヨ鐓х墖鍒楄〃
@@ -638,6 +656,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
@@ -776,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()
@@ -826,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;
}
@@ -1221,7 +1304,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) {
@@ -1238,9 +1321,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());
@@ -1312,9 +1395,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());
@@ -1397,9 +1480,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());
@@ -1488,9 +1571,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());
@@ -1686,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