| ¶Ô±ÈÐÂÎļþ |
| | |
| | | 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); |
| | | |
| | | // åå»ºå¸æºåºç¡ä¿¡æ¯ï¼status=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ä½ï¼æåä¸ä½å¯ä¸ºXï¼ |
| | | 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(注å)æstatus=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(); |
| | | // 审æ¹ç»æï¼auditDTO.auditStatus 0=éè¿âdriverInfo.status=2ï¼1=æç»âdriverInfo.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); |
| | | } |
| | | } |
| | | |
| | | } |