|
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.google.gson.Gson;
|
|
import com.google.gson.Gson;
|
|
import com.qmth.boot.api.exception.ApiException;
|
|
import com.qmth.boot.api.exception.ApiException;
|
|
|
|
+import com.qmth.teachcloud.common.bean.auth.AuthBean;
|
|
import com.qmth.teachcloud.common.bean.dto.BlurryUserDto;
|
|
import com.qmth.teachcloud.common.bean.dto.BlurryUserDto;
|
|
import com.qmth.teachcloud.common.bean.dto.LoginDto;
|
|
import com.qmth.teachcloud.common.bean.dto.LoginDto;
|
|
import com.qmth.teachcloud.common.bean.dto.UserDto;
|
|
import com.qmth.teachcloud.common.bean.dto.UserDto;
|
|
@@ -15,15 +16,13 @@ import com.qmth.teachcloud.common.bean.dto.excel.DescribeImportDto;
|
|
import com.qmth.teachcloud.common.bean.dto.excel.SysUserImportDto;
|
|
import com.qmth.teachcloud.common.bean.dto.excel.SysUserImportDto;
|
|
import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
|
|
import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
|
|
import com.qmth.teachcloud.common.bean.params.UserSaveParams;
|
|
import com.qmth.teachcloud.common.bean.params.UserSaveParams;
|
|
|
|
+import com.qmth.teachcloud.common.bean.result.LoginResult;
|
|
import com.qmth.teachcloud.common.bean.result.UserBatchDisposeResult;
|
|
import com.qmth.teachcloud.common.bean.result.UserBatchDisposeResult;
|
|
import com.qmth.teachcloud.common.config.DictionaryConfig;
|
|
import com.qmth.teachcloud.common.config.DictionaryConfig;
|
|
import com.qmth.teachcloud.common.contant.SpringContextHolder;
|
|
import com.qmth.teachcloud.common.contant.SpringContextHolder;
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
import com.qmth.teachcloud.common.entity.*;
|
|
import com.qmth.teachcloud.common.entity.*;
|
|
-import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
|
|
-import com.qmth.teachcloud.common.enums.FieldUniqueEnum;
|
|
|
|
-import com.qmth.teachcloud.common.enums.FlowApproveNameEnum;
|
|
|
|
-import com.qmth.teachcloud.common.enums.RoleTypeEnum;
|
|
|
|
|
|
+import com.qmth.teachcloud.common.enums.*;
|
|
import com.qmth.teachcloud.common.mapper.SysUserMapper;
|
|
import com.qmth.teachcloud.common.mapper.SysUserMapper;
|
|
import com.qmth.teachcloud.common.service.*;
|
|
import com.qmth.teachcloud.common.service.*;
|
|
import com.qmth.teachcloud.common.util.Base64Util;
|
|
import com.qmth.teachcloud.common.util.Base64Util;
|
|
@@ -85,6 +84,12 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
@Resource
|
|
@Resource
|
|
DictionaryConfig dictionaryConfig;
|
|
DictionaryConfig dictionaryConfig;
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
+ BasicSchoolService basicSchoolService;
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ TeachcloudCommonService teachcloudCommonService;
|
|
|
|
+
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public IPage<UserDto> list(String loginName, String roleId, Boolean enable, String realName, Integer pageNumber, Integer pageSize) {
|
|
public IPage<UserDto> list(String loginName, String roleId, Boolean enable, String realName, Integer pageNumber, Integer pageSize) {
|
|
@@ -143,7 +148,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
|
|
|
@Transactional
|
|
@Transactional
|
|
@Override
|
|
@Override
|
|
- public boolean updatePassword(SysUser user) throws NoSuchAlgorithmException {
|
|
|
|
|
|
+ public LoginResult updatePassword(SysUser user) throws NoSuchAlgorithmException {
|
|
SysUser sysUser = this.getById(user.getId());
|
|
SysUser sysUser = this.getById(user.getId());
|
|
if (sysUser == null) {
|
|
if (sysUser == null) {
|
|
throw ExceptionResultEnum.ERROR.exception("用户不存在");
|
|
throw ExceptionResultEnum.ERROR.exception("用户不存在");
|
|
@@ -154,8 +159,12 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
String newPwd = user.getPassword();
|
|
String newPwd = user.getPassword();
|
|
String mobileNumber = user.getMobileNumber();
|
|
String mobileNumber = user.getMobileNumber();
|
|
String verifyCode = user.getVerifyCode();
|
|
String verifyCode = user.getVerifyCode();
|
|
|
|
+ String oldPassword = user.getOldPassword();
|
|
if (SystemConstant.strNotNull(newPwd)) {
|
|
if (SystemConstant.strNotNull(newPwd)) {
|
|
// 参数中存在密码 -》 更新密码
|
|
// 参数中存在密码 -》 更新密码
|
|
|
|
+ if (SystemConstant.strNotNull(oldPassword) && oldPassword.equals(newPwd)){
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("新密码和旧密码一致请重新输入");
|
|
|
|
+ }
|
|
sysUser.setPwdCount(sysUser.getPwdCount() == null ? 1 : sysUser.getPwdCount() + 1);
|
|
sysUser.setPwdCount(sysUser.getPwdCount() == null ? 1 : sysUser.getPwdCount() + 1);
|
|
sysUser.setPwdUpdateTime(System.currentTimeMillis());
|
|
sysUser.setPwdUpdateTime(System.currentTimeMillis());
|
|
sysUser.setPassword(newPwd);
|
|
sysUser.setPassword(newPwd);
|
|
@@ -178,6 +187,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
sysUser.setMobileNumber(mobileNumber);
|
|
sysUser.setMobileNumber(mobileNumber);
|
|
}
|
|
}
|
|
boolean success = this.updateById(sysUser);
|
|
boolean success = this.updateById(sysUser);
|
|
|
|
+ if (!success){
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("用户更新失败");
|
|
|
|
+ }
|
|
|
|
+
|
|
//如果原密码和旧密码不一致,且用户已经登陆,需要重新登录
|
|
//如果原密码和旧密码不一致,且用户已经登陆,需要重新登录
|
|
Object object = ServletUtil.getRequest().getAttribute(SystemConstant.SESSION);
|
|
Object object = ServletUtil.getRequest().getAttribute(SystemConstant.SESSION);
|
|
if (Objects.nonNull(object)) {
|
|
if (Objects.nonNull(object)) {
|
|
@@ -195,7 +208,49 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
if (Objects.nonNull(verifyCode) && !dictionaryConfig.smsDomain().getSmsNormalCode().equals(verifyCode)) {
|
|
if (Objects.nonNull(verifyCode) && !dictionaryConfig.smsDomain().getSmsNormalCode().equals(verifyCode)) {
|
|
sysUserService.expiredVerifyCode(sysUser.getId(), sysUser.getMobileNumber());
|
|
sysUserService.expiredVerifyCode(sysUser.getId(), sysUser.getMobileNumber());
|
|
}
|
|
}
|
|
- return success;
|
|
|
|
|
|
+
|
|
|
|
+ // 登录
|
|
|
|
+ BasicSchool basicSchool = basicSchoolService.getById(sysUser.getSchoolId());
|
|
|
|
+ String schoolCode = basicSchool.getCode();
|
|
|
|
+ if (!schoolCode.equalsIgnoreCase(SystemConstant.ADMIN_CODE)) {
|
|
|
|
+ basicSchool = commonCacheService.schoolCache(schoolCode);
|
|
|
|
+ if (Objects.isNull(basicSchool)) {
|
|
|
|
+ throw ExceptionResultEnum.SCHOOL_NO_DATA.exception();
|
|
|
|
+ }
|
|
|
|
+ if (Objects.nonNull(basicSchool.getEnable()) && !basicSchool.getEnable()) {
|
|
|
|
+ throw ExceptionResultEnum.SCHOOL_ENABLE.exception();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
|
|
|
|
+ wrapper.lambda().eq(SysUser::getLoginName, sysUser.getLoginName());
|
|
|
|
+ if (!schoolCode.equalsIgnoreCase(SystemConstant.ADMIN_CODE)) {
|
|
|
|
+ wrapper.lambda().eq(SysUser::getSchoolId, basicSchool.getId());
|
|
|
|
+ }
|
|
|
|
+ List<SysUser> userList = sysUserService.list(wrapper);
|
|
|
|
+ //用户不存在
|
|
|
|
+ if (Objects.isNull(userList) || userList.size() == 0) {
|
|
|
|
+ throw ExceptionResultEnum.USER_NO_DATA.exception();
|
|
|
|
+ }
|
|
|
|
+ if (schoolCode.equalsIgnoreCase(SystemConstant.ADMIN_CODE)) {
|
|
|
|
+ userList.forEach(o -> {
|
|
|
|
+ AuthBean authBean = teachcloudCommonService.getUserAuth(o.getId());
|
|
|
|
+ if (Objects.nonNull(authBean) && Objects.nonNull(authBean.getRoleList()) && authBean.getRoleList().size() > 0) {
|
|
|
|
+ if (Objects.nonNull(authBean.getSchool())) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("用户无法通过当前页面登录");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ if (userList.size() > 1) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("查询的用户有多条");
|
|
|
|
+ }
|
|
|
|
+ if (Objects.nonNull(sysUser.getSchoolId()) && sysUser.getSchoolId().longValue() != basicSchool.getId().longValue()) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("用户学校不匹配");
|
|
|
|
+ }
|
|
|
|
+ // 校验验证码
|
|
|
|
+ sysUserService.checkSmsCode(sysUser.getId(), sysUser.getMobileNumber(), dictionaryConfig.smsDomain().getSmsNormalCode());
|
|
|
|
+
|
|
|
|
+ return teachcloudCommonService.login(sysUser.getPassword(), sysUser, AppSourceEnum.SYSTEM);
|
|
}
|
|
}
|
|
|
|
|
|
@Transactional
|
|
@Transactional
|