|
@@ -1,6 +1,7 @@
|
|
package com.qmth.teachcloud.common.service.impl;
|
|
package com.qmth.teachcloud.common.service.impl;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSON;
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
@@ -233,7 +234,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
}
|
|
}
|
|
if (SystemConstant.strNotNull(mobileNumber)) {
|
|
if (SystemConstant.strNotNull(mobileNumber)) {
|
|
// 校验验证码
|
|
// 校验验证码
|
|
- this.checkSmsCode(user.getId(), mobileNumber, verifyCode);
|
|
|
|
|
|
+ this.checkSmsCode(user.getId(), mobileNumber, verifyCode, false);
|
|
// 更新电话
|
|
// 更新电话
|
|
|
|
|
|
SysUser checkMobileNumber = this.getOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getSchoolId, sysUser.getSchoolId()).eq(SysUser::getEnable, true).eq(SysUser::getMobileNumber, mobileNumber));
|
|
SysUser checkMobileNumber = this.getOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getSchoolId, sysUser.getSchoolId()).eq(SysUser::getEnable, true).eq(SysUser::getMobileNumber, mobileNumber));
|
|
@@ -320,7 +321,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
throw ExceptionResultEnum.ERROR.exception("用户学校不匹配");
|
|
throw ExceptionResultEnum.ERROR.exception("用户学校不匹配");
|
|
}
|
|
}
|
|
// 校验验证码
|
|
// 校验验证码
|
|
- sysUserService.checkSmsCode(sysUser.getId(), sysUser.getMobileNumber(), sysConfig.getConfigValue());
|
|
|
|
|
|
+ sysUserService.checkSmsCode(sysUser.getId(), sysUser.getMobileNumber(), sysConfig.getConfigValue(), false);
|
|
|
|
|
|
return teachcloudCommonService.login(sysUser.getPassword(), sysUser, AppSourceEnum.SYSTEM);
|
|
return teachcloudCommonService.login(sysUser.getPassword(), sysUser, AppSourceEnum.SYSTEM);
|
|
}
|
|
}
|
|
@@ -777,41 +778,33 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public void checkSmsCode(Long userId, String mobileNumber, String code) {
|
|
|
|
- SysConfig value = sysConfigService.getByKey("sys.code.enable");
|
|
|
|
- if (Objects.nonNull(value) && value.getConfigValue().equals("true")) {
|
|
|
|
- if (Objects.isNull(code)) {
|
|
|
|
- throw ExceptionResultEnum.ERROR.exception("验证码不能为空");
|
|
|
|
- }
|
|
|
|
- SysConfig sysConfig = commonCacheService.addSysConfigCache(SystemConstant.SMS_NORMAL_CODE);
|
|
|
|
- Optional.ofNullable(sysConfig).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未配置万能短信验证码"));
|
|
|
|
- if (!sysConfig.getConfigValue().equals(code)) {
|
|
|
|
- List<VerifyCodeCheckDto> verifyCodeCheckDtoList = this.baseMapper.findVerifyCodeByUser(userId, mobileNumber);
|
|
|
|
- if (verifyCodeCheckDtoList.size() < 1) {
|
|
|
|
- throw ExceptionResultEnum.ERROR.exception("验证码错误");
|
|
|
|
- }
|
|
|
|
- VerifyCodeCheckDto accessControl = verifyCodeCheckDtoList.get(0);
|
|
|
|
- if (accessControl == null || !accessControl.getVerifyCode().equals(code)) {
|
|
|
|
- throw ExceptionResultEnum.ERROR.exception("验证码错误");
|
|
|
|
- }
|
|
|
|
|
|
+ public void checkSmsCode(Long userId, String mobileNumber, String code, boolean useDefaultCode) {
|
|
|
|
+ if (Objects.isNull(code)) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("验证码不能为空");
|
|
|
|
+ }
|
|
|
|
+ SysConfig sysConfig = commonCacheService.addSysConfigCache(SystemConstant.SMS_NORMAL_CODE);
|
|
|
|
+ if (useDefaultCode && sysConfig != null && StringUtils.isNotBlank(sysConfig.getConfigValue()) && code.equals(sysConfig.getConfigValue())) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
|
|
- if (new Date(accessControl.getExpireTime()).before(new Date())) {
|
|
|
|
- throw ExceptionResultEnum.ERROR.exception("验证码已过期");
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ List<VerifyCodeCheckDto> verifyCodeCheckDtoList = this.baseMapper.findVerifyCodeByUser(userId, mobileNumber);
|
|
|
|
+ if (verifyCodeCheckDtoList.size() < 1) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("验证码无效");
|
|
|
|
+ }
|
|
|
|
+ VerifyCodeCheckDto accessControl = verifyCodeCheckDtoList.get(0);
|
|
|
|
+ if (accessControl == null || !accessControl.getVerifyCode().equals(code)) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("验证码错误");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (new Date(accessControl.getExpireTime()).before(new Date())) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("验证码已过期");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@Transactional
|
|
@Transactional
|
|
@Override
|
|
@Override
|
|
public void expiredVerifyCode(Long userId, String mobileNumber) {
|
|
public void expiredVerifyCode(Long userId, String mobileNumber) {
|
|
- SysConfig value = sysConfigService.getByKey("sys.code.enable");
|
|
|
|
- if (Objects.nonNull(value) && value.getConfigValue().equals("true")) {
|
|
|
|
- int count = this.baseMapper.updateVerifyCodeExpiredTime(userId, mobileNumber);
|
|
|
|
- if (count != 1) {
|
|
|
|
- throw ExceptionResultEnum.ERROR.exception("验证码过期失败");
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ this.baseMapper.updateVerifyCodeExpiredTime(userId, mobileNumber);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -1167,8 +1160,26 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
@Override
|
|
@Override
|
|
public SysUser getByLoginName(Long schoolId, String loginName) {
|
|
public SysUser getByLoginName(Long schoolId, String loginName) {
|
|
QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
|
|
- queryWrapper.lambda().eq(SysUser::getSchoolId, schoolId)
|
|
|
|
- .eq(SysUser::getLoginName, loginName);
|
|
|
|
|
|
+ LambdaQueryWrapper<SysUser> lambda = queryWrapper.lambda();
|
|
|
|
+ if (schoolId == null) {
|
|
|
|
+ lambda.isNull(SysUser::getSchoolId);
|
|
|
|
+ } else {
|
|
|
|
+ lambda.eq(SysUser::getSchoolId, schoolId);
|
|
|
|
+ }
|
|
|
|
+ lambda.eq(SysUser::getLoginName, loginName);
|
|
|
|
+ return this.getOne(queryWrapper);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public SysUser getByMobileNumber(Long schoolId, String mobileNumber) {
|
|
|
|
+ QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
|
|
|
|
+ LambdaQueryWrapper<SysUser> lambda = queryWrapper.lambda();
|
|
|
|
+ if (schoolId == null) {
|
|
|
|
+ lambda.isNull(SysUser::getSchoolId);
|
|
|
|
+ } else {
|
|
|
|
+ lambda.eq(SysUser::getSchoolId, schoolId);
|
|
|
|
+ }
|
|
|
|
+ lambda.eq(SysUser::getMobileNumber, mobileNumber);
|
|
return this.getOne(queryWrapper);
|
|
return this.getOne(queryWrapper);
|
|
}
|
|
}
|
|
|
|
|