From e685b58fd40cf28a20844643d70cc5f5b46ca037 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期五, 10 四月 2026 11:08:17 +0800
Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/gtzxinglijicun
---
server/services/src/main/java/com/doumee/service/business/impl/DriverInfoServiceImpl.java | 585 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 585 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
new file mode 100644
index 0000000..e67a9b0
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/service/business/impl/DriverInfoServiceImpl.java
@@ -0,0 +1,585 @@
+package com.doumee.service.business.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+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.core.constants.Constants;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.config.jwt.JwtTokenUtil;
+import com.doumee.core.utils.Secure;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.DriverInfoMapper;
+import com.doumee.dao.business.MemberMapper;
+import com.doumee.dao.business.MultifileMapper;
+import com.doumee.dao.business.SmsrecordMapper;
+import com.doumee.dao.business.CategoryMapper;
+import com.doumee.dao.business.model.Category;
+import com.doumee.dao.business.model.DriverInfo;
+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.vo.AccountResponse;
+import com.doumee.dao.dto.AuditDTO;
+import com.doumee.dao.dto.DriverLoginRequest;
+import com.doumee.dao.dto.DriverRegisterRequest;
+import com.doumee.dao.dto.DriverVerifyRequest;
+import com.doumee.service.business.AliSmsService;
+import com.doumee.service.business.DriverInfoService;
+import com.alibaba.fastjson.JSONObject;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 鍙告満娉ㄥ唽淇℃伅Service瀹炵幇
+ * @author rk
+ * @date 2026/04/08
+ */
+@Service
+public class DriverInfoServiceImpl implements DriverInfoService {
+
+ @Autowired
+ private DriverInfoMapper driverInfoMapper;
+
+ @Autowired
+ private MemberMapper memberMapper;
+
+ @Autowired
+ private SmsrecordMapper smsrecordMapper;
+
+ @Autowired
+ private JwtTokenUtil jwtTokenUtil;
+
+ @Autowired
+ private Secure secure;
+
+ @Autowired
+ private RedisTemplate<String, Object> redisTemplate;
+
+ @Autowired
+ private MultifileMapper multifileMapper;
+
+ @Autowired
+ private CategoryMapper categoryMapper;
+
+ @Override
+ public Integer create(DriverInfo driverInfo) {
+ driverInfoMapper.insert(driverInfo);
+ return driverInfo.getId();
+ }
+
+ @Override
+ public void deleteById(Integer id) {
+ driverInfoMapper.deleteById(id);
+ }
+
+ @Override
+ public void delete(DriverInfo driverInfo) {
+ UpdateWrapper<DriverInfo> deleteWrapper = new UpdateWrapper<>(driverInfo);
+ driverInfoMapper.delete(deleteWrapper);
+ }
+
+ @Override
+ public void deleteByIdInBatch(List<Integer> ids) {
+ if (CollectionUtils.isEmpty(ids)) {
+ return;
+ }
+ driverInfoMapper.deleteBatchIds(ids);
+ }
+
+ @Override
+ public void updateById(DriverInfo driverInfo) {
+ driverInfoMapper.updateById(driverInfo);
+ }
+
+ @Override
+ public void updateByIdInBatch(List<DriverInfo> driverInfos) {
+ if (CollectionUtils.isEmpty(driverInfos)) {
+ return;
+ }
+ for (DriverInfo driverInfo : driverInfos) {
+ this.updateById(driverInfo);
+ }
+ }
+
+ @Override
+ public DriverInfo findById(Integer id) {
+ DriverInfo driverInfo = driverInfoMapper.selectById(id);
+ if (Objects.isNull(driverInfo)) {
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+ return driverInfo;
+ }
+
+ @Override
+ public DriverInfo findOne(DriverInfo driverInfo) {
+ QueryWrapper<DriverInfo> wrapper = new QueryWrapper<>(driverInfo);
+ return driverInfoMapper.selectOne(wrapper);
+ }
+
+ @Override
+ public List<DriverInfo> findList(DriverInfo driverInfo) {
+ QueryWrapper<DriverInfo> wrapper = new QueryWrapper<>(driverInfo);
+ return driverInfoMapper.selectList(wrapper);
+ }
+
+ @Override
+ public PageData<DriverInfo> findPage(PageWrap<DriverInfo> pageWrap) {
+ IPage<DriverInfo> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+ QueryWrapper<DriverInfo> queryWrapper = new QueryWrapper<>();
+ Utils.MP.blankToNull(pageWrap.getModel());
+ pageWrap.getModel().setDeleted(Constants.ZERO);
+ if (pageWrap.getModel().getId() != null) {
+ queryWrapper.lambda().eq(DriverInfo::getId, pageWrap.getModel().getId());
+ }
+ if (pageWrap.getModel().getDeleted() != null) {
+ queryWrapper.lambda().eq(DriverInfo::getDeleted, pageWrap.getModel().getDeleted());
+ }
+ if (pageWrap.getModel().getCreateUser() != null) {
+ queryWrapper.lambda().eq(DriverInfo::getCreateUser, pageWrap.getModel().getCreateUser());
+ }
+ if (pageWrap.getModel().getCreateTime() != null) {
+ queryWrapper.lambda().ge(DriverInfo::getCreateTime, Utils.Date.getStart(pageWrap.getModel().getCreateTime()));
+ queryWrapper.lambda().le(DriverInfo::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateTime()));
+ }
+ if (pageWrap.getModel().getUpdateUser() != null) {
+ queryWrapper.lambda().eq(DriverInfo::getUpdateUser, pageWrap.getModel().getUpdateUser());
+ }
+ if (pageWrap.getModel().getUpdateTime() != null) {
+ queryWrapper.lambda().ge(DriverInfo::getUpdateTime, Utils.Date.getStart(pageWrap.getModel().getUpdateTime()));
+ queryWrapper.lambda().le(DriverInfo::getUpdateTime, Utils.Date.getEnd(pageWrap.getModel().getUpdateTime()));
+ }
+ if (pageWrap.getModel().getRemark() != null) {
+ queryWrapper.lambda().eq(DriverInfo::getRemark, pageWrap.getModel().getRemark());
+ }
+ if (pageWrap.getModel().getName() != null) {
+ queryWrapper.lambda().like(DriverInfo::getName, pageWrap.getModel().getName());
+ }
+ if (pageWrap.getModel().getTelephone() != null) {
+ queryWrapper.lambda().like(DriverInfo::getTelephone, pageWrap.getModel().getTelephone());
+ }
+ if (pageWrap.getModel().getIdcard() != null) {
+ queryWrapper.lambda().eq(DriverInfo::getIdcard, pageWrap.getModel().getIdcard());
+ }
+ if (pageWrap.getModel().getMaritalStatus() != null) {
+ queryWrapper.lambda().eq(DriverInfo::getMaritalStatus, pageWrap.getModel().getMaritalStatus());
+ }
+ if (pageWrap.getModel().getCarType() != null) {
+ queryWrapper.lambda().eq(DriverInfo::getCarType, pageWrap.getModel().getCarType());
+ }
+ if (pageWrap.getModel().getCarCode() != null) {
+ queryWrapper.lambda().like(DriverInfo::getCarCode, pageWrap.getModel().getCarCode());
+ }
+ if (pageWrap.getModel().getCardStartDate() != null) {
+ queryWrapper.lambda().ge(DriverInfo::getCardStartDate, Utils.Date.getStart(pageWrap.getModel().getCardStartDate()));
+ queryWrapper.lambda().le(DriverInfo::getCardStartDate, Utils.Date.getEnd(pageWrap.getModel().getCardStartDate()));
+ }
+ if (pageWrap.getModel().getCardEndDate() != null) {
+ queryWrapper.lambda().ge(DriverInfo::getCardEndDate, Utils.Date.getStart(pageWrap.getModel().getCardEndDate()));
+ queryWrapper.lambda().le(DriverInfo::getCardEndDate, Utils.Date.getEnd(pageWrap.getModel().getCardEndDate()));
+ }
+ if (pageWrap.getModel().getStatus() != null) {
+ queryWrapper.lambda().eq(DriverInfo::getStatus, pageWrap.getModel().getStatus());
+ }
+ if (pageWrap.getModel().getAuditTime() != null) {
+ queryWrapper.lambda().ge(DriverInfo::getAuditTime, Utils.Date.getStart(pageWrap.getModel().getAuditTime()));
+ queryWrapper.lambda().le(DriverInfo::getAuditTime, Utils.Date.getEnd(pageWrap.getModel().getAuditTime()));
+ }
+ if (pageWrap.getModel().getAuditUser() != null) {
+ queryWrapper.lambda().eq(DriverInfo::getAuditUser, pageWrap.getModel().getAuditUser());
+ }
+ if (pageWrap.getModel().getMemberId() != null) {
+ queryWrapper.lambda().eq(DriverInfo::getMemberId, pageWrap.getModel().getMemberId());
+ }
+ for (PageWrap.SortData sortData : pageWrap.getSorts()) {
+ if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+ queryWrapper.orderByDesc(sortData.getProperty());
+ } else {
+ queryWrapper.orderByAsc(sortData.getProperty());
+ }
+ }
+ return PageData.from(driverInfoMapper.selectPage(page, queryWrapper));
+ }
+
+ @Override
+ public long count(DriverInfo driverInfo) {
+ QueryWrapper<DriverInfo> wrapper = new QueryWrapper<>(driverInfo);
+ return driverInfoMapper.selectCount(wrapper);
+ }
+
+ /***************鍙告満楠岃瘉鐮佺櫥褰曚笟鍔�*************/
+
+ @Override
+ public void sendRegisterCode(String telephone) {
+ if (StringUtils.isBlank(telephone)) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ // 鐢熸垚6浣嶆暟瀛楅獙璇佺爜
+ String code = RandomStringUtils.randomNumeric(6);
+ // 鍙戦�佺煭淇�
+ String templateParam = "{\"code\":\"" + code + "\"}";
+ AliSmsService.sendSms(telephone, "SMS_491325122", templateParam);
+ // 淇濆瓨鐭俊璁板綍
+ Smsrecord smsrecord = new Smsrecord();
+ smsrecord.setDeleted(Constants.ZERO);
+ smsrecord.setCreateTime(new Date());
+ smsrecord.setUpdateTime(new Date());
+ smsrecord.setPhone(telephone);
+ smsrecord.setContent("鍙告満楠岃瘉鐮佺櫥褰曪細" + code);
+ smsrecord.setType(Constants.ZERO);
+ smsrecord.setCode(code);
+ smsrecord.setStatus(Constants.ZERO);
+ // 鏈夋晥鏈�15鍒嗛挓
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(new Date());
+ calendar.add(Calendar.MINUTE, 15);
+ smsrecord.setValidDate(calendar.getTime());
+ smsrecordMapper.insert(smsrecord);
+ }
+
+ @Override
+ @Transactional
+ public AccountResponse register(DriverRegisterRequest request) {
+ String telephone = request.getTelephone();
+ String code = request.getCode();
+ if (StringUtils.isAnyBlank(telephone, code)) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ // 1. 楠岃瘉鐭俊楠岃瘉鐮�
+ QueryWrapper<Smsrecord> smsWrapper = new QueryWrapper<>();
+ smsWrapper.lambda().eq(Smsrecord::getPhone, telephone)
+ .eq(Smsrecord::getCode, code)
+ .eq(Smsrecord::getType, Constants.ZERO)
+ .eq(Smsrecord::getStatus, Constants.ZERO)
+ .ge(Smsrecord::getValidDate, new Date())
+ .orderByDesc(Smsrecord::getCreateTime)
+ .last("limit 1");
+ Smsrecord smsrecord = smsrecordMapper.selectOne(smsWrapper);
+ if (Objects.isNull(smsrecord)) {
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "楠岃瘉鐮侀敊璇垨宸茶繃鏈�");
+ }
+ // 鏍囪楠岃瘉鐮佸凡浣跨敤
+ smsrecord.setStatus(Constants.ONE);
+ smsrecord.setUpdateTime(new Date());
+ smsrecordMapper.updateById(smsrecord);
+
+ // 2. 鏌ヨ鏄惁宸叉湁鍙告満璐﹀彿
+ Member existMember = memberMapper.selectOne(new QueryWrapper<Member>().lambda()
+ .eq(Member::getTelephone, telephone)
+ .eq(Member::getUserType, Constants.ONE)
+ .ne(Member::getStatus, Constants.TWO)
+ .last("limit 1"));
+
+ Date now = new Date();
+ Member member;
+
+ if (Objects.nonNull(existMember)) {
+ // 宸叉湁鍙告満璐﹀彿锛岀洿鎺ョ櫥褰�
+ if (!Constants.equalsInteger(existMember.getStatus(), Constants.ZERO)) {
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "璐﹀彿宸插仠鐢紝璇疯仈绯荤鐞嗗憳");
+ }
+ // 鏇存柊鐧诲綍淇℃伅
+ memberMapper.update(new UpdateWrapper<Member>().lambda()
+ .set(Member::getLoginTime, now)
+ .setSql("login_times = login_times + 1")
+ .eq(Member::getId, existMember.getId()));
+ // 鏇存柊鍐呭瓨涓殑鐧诲綍淇℃伅
+ existMember.setLoginTime(now);
+ existMember.setLoginTimes(existMember.getLoginTimes() + 1);
+ member = existMember;
+ } else {
+ // 娌℃湁鍙告満璐﹀彿锛屾敞鍐屾柊鐢ㄦ埛锛岄粯璁ゅ瘑鐮佷负鎵嬫満鍙峰悗鍏綅
+ String salt = RandomStringUtils.randomAlphanumeric(6);
+ String defaultPassword = telephone.substring(telephone.length() - 6);
+ member = new Member();
+ member.setDeleted(Constants.ZERO);
+ member.setCreateTime(now);
+ member.setUpdateTime(now);
+ member.setTelephone(telephone);
+ member.setNickName(telephone);
+ member.setName(telephone);
+ member.setUserType(Constants.ONE);
+ member.setBusinessStatus(Constants.ZERO);
+ member.setPassword(secure.encryptPassword(defaultPassword, salt));
+ member.setSalt(salt);
+ member.setWorkerIdentity(Constants.ZERO);
+ member.setDriverIdentity(Constants.ZERO);
+ member.setChefIdentity(Constants.ZERO);
+ member.setAmount(Constants.ZERO.longValue());
+ member.setTotalAmount(Constants.ZERO.longValue());
+ member.setStatus(Constants.ZERO);
+ member.setLoginTime(now);
+ member.setLoginTimes(Constants.ONE.longValue());
+ member.setReceiveNum(Constants.ZERO.longValue());
+ member.setPublishNum(Constants.ZERO.longValue());
+ member.setAutoReceiveStatus(Constants.ONE);
+ member.setUseIdentity(Constants.ZERO);
+ memberMapper.insert(member);
+
+ // 鍒涘缓鍙告満鍩虹淇℃伅锛坰tatus=0锛屾敞鍐岀姸鎬侊級
+ DriverInfo driverInfo = new DriverInfo();
+ driverInfo.setDeleted(Constants.ZERO);
+ driverInfo.setCreateTime(now);
+ driverInfo.setUpdateTime(now);
+ driverInfo.setTelephone(telephone);
+ driverInfo.setMemberId(member.getId());
+ driverInfo.setStatus(Constants.ZERO);
+ driverInfoMapper.insert(driverInfo);
+ }
+
+ // 3. 鐢熸垚token杩斿洖
+ AccountResponse accountResponse = new AccountResponse();
+ accountResponse.setToken(JwtTokenUtil.generateTokenForRedis(member.getId(), Constants.ONE, JSONObject.toJSONString(member), redisTemplate));
+ accountResponse.setMember(member);
+ return accountResponse;
+ }
+
+ @Override
+ public AccountResponse login(DriverLoginRequest request) {
+ String telephone = request.getTelephone();
+ String password = request.getPassword();
+ if (StringUtils.isAnyBlank(telephone, password)) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ // 鏌ヨ鍙告満浼氬憳
+ Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda()
+ .eq(Member::getTelephone, telephone)
+ .eq(Member::getUserType, Constants.ONE)
+ .ne(Member::getStatus, Constants.TWO)
+ .last("limit 1"));
+ if (Objects.isNull(member)) {
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "璐﹀彿涓嶅瓨鍦�");
+ }
+ if (!Constants.equalsInteger(member.getStatus(), Constants.ZERO)) {
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "璐﹀彿宸插仠鐢紝璇疯仈绯荤鐞嗗憳");
+ }
+ // 鏍¢獙瀵嗙爜
+ String encryptPwd = secure.encryptPassword(password, member.getSalt());
+ if (!encryptPwd.equals(member.getPassword())) {
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵嗙爜閿欒");
+ }
+ // 鏇存柊鐧诲綍淇℃伅
+ memberMapper.update(new UpdateWrapper<Member>().lambda()
+ .set(Member::getLoginTime, new Date())
+ .setSql("login_times = login_times + 1")
+ .eq(Member::getId, member.getId()));
+
+ AccountResponse accountResponse = new AccountResponse();
+ accountResponse.setToken(JwtTokenUtil.generateTokenForRedis(member.getId(), Constants.ONE, JSONObject.toJSONString(member), redisTemplate));
+ accountResponse.setMember(member);
+ return accountResponse;
+ }
+
+ /***************鍙告満瀹炲悕璁よ瘉涓氬姟*************/
+
+ @Override
+ @Transactional
+ public void submitVerify(Integer memberId, DriverVerifyRequest request) {
+ // 鍙傛暟鍩虹鏍¢獙
+ if (StringUtils.isAnyBlank(request.getName(), request.getIdcard(), request.getLivePlace(),
+ request.getCarCode(), request.getIdcardImg(), request.getIdcardImgBack())) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ if (request.getMaritalStatus() == null || request.getCarType() == null) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ // 韬唤璇佸彿鏍煎紡鏍¢獙锛�18浣嶏紝鏈�鍚庝竴浣嶅彲涓篨锛�
+ if (!request.getIdcard().matches("^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[\\dXx]$")) {
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "韬唤璇佸彿鏍煎紡涓嶆纭�");
+ }
+ // 鏌ヨ鍙告満淇℃伅
+ DriverInfo driverInfo = driverInfoMapper.selectOne(new QueryWrapper<DriverInfo>().lambda()
+ .eq(DriverInfo::getMemberId, memberId)
+ .eq(DriverInfo::getDeleted, Constants.ZERO)
+ .last("limit 1"));
+ if (Objects.isNull(driverInfo)) {
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+ // 鐘舵�佹牎楠岋細status=0(娉ㄥ唽)鎴杝tatus=3(瀹℃壒椹冲洖)鍙彁浜よ璇�
+ if (driverInfo.getStatus() != null
+ && !Constants.equalsInteger(driverInfo.getStatus(), Constants.ZERO)
+ && !Constants.equalsInteger(driverInfo.getStatus(), Constants.THREE)) {
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "褰撳墠鐘舵�佷笉鍏佽鎻愪氦璁よ瘉");
+ }
+ // 鏍规嵁杞﹁締绫诲瀷鍒ゆ柇鏄惁闇�瑕侀┚椹惰瘉
+ Category category = categoryMapper.selectById(request.getCarType());
+ if (Objects.isNull(category) || !Constants.equalsInteger(category.getType(), Constants.ONE)) {
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "杞﹁締绫诲瀷涓嶅瓨鍦�");
+ }
+ boolean needLicense = Constants.equalsInteger(Integer.valueOf(category.getOtherField()), Constants.ONE);
+ if (needLicense) {
+ if (request.getCardStartDate() == null || request.getCardEndDate() == null) {
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "璇ヨ溅杈嗙被鍨嬮渶瑕佸~鍐欓┚椹惰瘉鏈夋晥鏈�");
+ }
+ if (request.getLicenseImgUrls() == null || request.getLicenseImgUrls().isEmpty()) {
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "璇ヨ溅杈嗙被鍨嬮渶瑕佷笂浼犻┚椹惰瘉鐓х墖");
+ }
+ }
+ // 杞﹁締鐓х墖蹇呭~
+ if (request.getCarImgUrls() == null || request.getCarImgUrls().isEmpty()) {
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "璇蜂笂浼犺溅杈嗙収鐗�");
+ }
+ // 鐓х墖鏁伴噺鏍¢獙
+ if (request.getCarImgUrls().size() > 3) {
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "杞﹁締鐓х墖鏈�澶氫笂浼�3寮�");
+ }
+ if (request.getLicenseImgUrls() != null && request.getLicenseImgUrls().size() > 3) {
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "椹鹃┒璇佺収鐗囨渶澶氫笂浼�3寮�");
+ }
+ if (request.getOtherImgUrls() != null && request.getOtherImgUrls().size() > 3) {
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鍏朵粬璧勬枡鐓х墖鏈�澶氫笂浼�3寮�");
+ }
+
+ // 鏇存柊鍙告満淇℃伅
+ Date now = new Date();
+ driverInfoMapper.update(new UpdateWrapper<DriverInfo>().lambda()
+ .set(DriverInfo::getName, request.getName())
+ .set(DriverInfo::getIdcard, request.getIdcard())
+ .set(DriverInfo::getMaritalStatus, request.getMaritalStatus())
+ .set(DriverInfo::getAreaId, request.getAreaId())
+ .set(DriverInfo::getLivePlace, request.getLivePlace())
+ .set(DriverInfo::getCarCode, request.getCarCode())
+ .set(DriverInfo::getCarType, request.getCarType())
+ .set(DriverInfo::getCarColor, request.getCarColor())
+ .set(DriverInfo::getCardStartDate, request.getCardStartDate())
+ .set(DriverInfo::getCardEndDate, request.getCardEndDate())
+ .set(DriverInfo::getIdcardImg, request.getIdcardImg())
+ .set(DriverInfo::getIdcardImgBack, request.getIdcardImgBack())
+ .set(DriverInfo::getStatus, Constants.ONE)
+ .set(DriverInfo::getUpdateTime, now)
+ .set(DriverInfo::getAuditRemark, null)
+ .set(DriverInfo::getAuditTime, null)
+ .eq(DriverInfo::getId, driverInfo.getId()));
+
+ // 鍒犻櫎鏃х殑鐓х墖璁板綍
+ multifileMapper.delete(new QueryWrapper<Multifile>().lambda()
+ .eq(Multifile::getObjId, driverInfo.getId())
+ .in(Multifile::getObjType, 6, 7, 8));
+
+ // 淇濆瓨杞﹁締鐓х墖 objType=6
+ saveMultifileList(driverInfo.getId(), 6, request.getCarImgUrls(), now);
+ // 淇濆瓨椹鹃┒璇佺収鐗� objType=7
+ if (!CollectionUtils.isEmpty(request.getLicenseImgUrls())) {
+ saveMultifileList(driverInfo.getId(), 7, request.getLicenseImgUrls(), now);
+ }
+ // 淇濆瓨鍏朵粬璧勬枡鐓х墖 objType=8
+ if (!CollectionUtils.isEmpty(request.getOtherImgUrls())) {
+ saveMultifileList(driverInfo.getId(), 8, request.getOtherImgUrls(), now);
+ }
+
+ // 鏇存柊浼氬憳鍙告満璁よ瘉鐘舵�佷负璁よ瘉涓�
+ memberMapper.update(new UpdateWrapper<Member>().lambda()
+ .set(Member::getBusinessStatus, Constants.ONE)
+ .set(Member::getUpdateTime, now)
+ .eq(Member::getId, memberId));
+ }
+
+ @Override
+ public DriverInfo getVerifyDetail(Integer memberId) {
+ DriverInfo driverInfo = driverInfoMapper.selectOne(new QueryWrapper<DriverInfo>().lambda()
+ .eq(DriverInfo::getMemberId, memberId)
+ .eq(DriverInfo::getDeleted, Constants.ZERO)
+ .last("limit 1"));
+ if (Objects.isNull(driverInfo)) {
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+ // 鏌ヨ杞﹁締绫诲瀷鍚嶇О鍜屾槸鍚﹂渶瑕侀┚椹惰瘉
+ 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);
+ }
+ }
+ // 鏌ヨ鐓х墖鍒楄〃
+ List<Multifile> multifileList = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda()
+ .eq(Multifile::getObjId, driverInfo.getId())
+ .in(Multifile::getObjType, 6, 7, 8)
+ .orderByAsc(Multifile::getSortnum));
+ if (!CollectionUtils.isEmpty(multifileList)) {
+ for (Multifile mf : multifileList) {
+ if (Constants.equalsInteger(mf.getObjType(), 6)) {
+ driverInfo.getCarImgList().add(mf);
+ } else if (Constants.equalsInteger(mf.getObjType(), 7)) {
+ driverInfo.getLicenseImgList().add(mf);
+ } else if (Constants.equalsInteger(mf.getObjType(), 8)) {
+ driverInfo.getOtherImgList().add(mf);
+ }
+ }
+ }
+ return driverInfo;
+ }
+
+ @Override
+ @Transactional
+ public void auditVerify(AuditDTO auditDTO) {
+ if (Objects.isNull(auditDTO.getId()) || Objects.isNull(auditDTO.getAuditStatus())) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ DriverInfo driverInfo = driverInfoMapper.selectById(auditDTO.getId());
+ if (Objects.isNull(driverInfo)) {
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+ // 鍙湁鐘舵�佷负1(寰呭鎵�)涓斿凡濉啓璁よ瘉淇℃伅鎵嶈兘瀹℃壒
+ if (!Constants.equalsInteger(driverInfo.getStatus(), Constants.ONE)
+ || StringUtils.isBlank(driverInfo.getIdcard())) {
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "褰撳墠鐘舵�佷笉鍏佽瀹℃壒");
+ }
+ Date now = new Date();
+ // 瀹℃壒缁撴灉锛歛uditDTO.auditStatus 0=閫氳繃鈫抎riverInfo.status=2锛�1=鎷掔粷鈫抎riverInfo.status=3
+ Integer newStatus;
+ if (Constants.equalsInteger(auditDTO.getAuditStatus(), Constants.ZERO)) {
+ newStatus = Constants.TWO; // 瀹℃壒閫氳繃
+ } else if (Constants.equalsInteger(auditDTO.getAuditStatus(), Constants.ONE)) {
+ newStatus = Constants.THREE; // 瀹℃壒椹冲洖
+ } else {
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀹℃壒鐘舵�佸弬鏁伴敊璇�");
+ }
+ // 鏇存柊鍙告満鐘舵��
+ driverInfoMapper.update(new UpdateWrapper<DriverInfo>().lambda()
+ .set(DriverInfo::getStatus, newStatus)
+ .set(DriverInfo::getAuditTime, now)
+ .set(DriverInfo::getAuditRemark, auditDTO.getAuditRemark())
+ .set(DriverInfo::getAuditUser, auditDTO.getAuditUser())
+ .set(DriverInfo::getUpdateTime, now)
+ .eq(DriverInfo::getId, auditDTO.getId()));
+ // 鏇存柊浼氬憳鍙告満璁よ瘉鐘舵�侊細閫氳繃=2锛岄┏鍥�=3
+ Integer driverStatus = Constants.equalsInteger(newStatus, Constants.TWO) ? Constants.TWO : Constants.THREE;
+ memberMapper.update(new UpdateWrapper<Member>().lambda()
+ .set(Member::getBusinessStatus, driverStatus)
+ .set(Member::getUpdateTime, now)
+ .eq(Member::getId, driverInfo.getMemberId()));
+ }
+
+ /**
+ * 鎵归噺淇濆瓨闄勪欢璁板綍
+ */
+ private void saveMultifileList(Integer objId, Integer objType, List<String> urls, Date now) {
+ int sortNum = 0;
+ for (String url : urls) {
+ Multifile multifile = new Multifile();
+ multifile.setObjId(objId);
+ multifile.setObjType(objType);
+ multifile.setType(Constants.ZERO);
+ multifile.setFileurl(url);
+ multifile.setIsdeleted(Constants.ZERO);
+ multifile.setCreateDate(now);
+ multifile.setSortnum(sortNum++);
+ multifileMapper.insert(multifile);
+ }
+ }
+
+}
--
Gitblit v1.9.3