Parcourir la source

fix:登录修改

caozixuan il y a 3 ans
Parent
commit
25a2b96c72

+ 2 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysUserService.java

@@ -7,6 +7,7 @@ import com.qmth.teachcloud.common.bean.dto.LoginDto;
 import com.qmth.teachcloud.common.bean.dto.UserDto;
 import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
 import com.qmth.teachcloud.common.bean.params.UserSaveParams;
+import com.qmth.teachcloud.common.bean.result.LoginResult;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.FlowApproveNameEnum;
 import org.springframework.util.LinkedMultiValueMap;
@@ -34,7 +35,7 @@ public interface SysUserService extends IService<SysUser> {
 
     boolean resetPassword(Long id) throws NoSuchAlgorithmException;
 
-    boolean updatePassword(SysUser user) throws NoSuchAlgorithmException;
+    LoginResult updatePassword(SysUser user) throws NoSuchAlgorithmException;
 
     boolean bindRoles(SysUser sysUser);
 

+ 61 - 6
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.gson.Gson;
 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.LoginDto;
 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.params.ApproveUserResult;
 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.config.DictionaryConfig;
 import com.qmth.teachcloud.common.contant.SpringContextHolder;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 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.service.*;
 import com.qmth.teachcloud.common.util.Base64Util;
@@ -85,6 +84,12 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     @Resource
     DictionaryConfig dictionaryConfig;
 
+    @Resource
+    BasicSchoolService basicSchoolService;
+
+    @Resource
+    TeachcloudCommonService teachcloudCommonService;
+
 
     @Override
     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
     @Override
-    public boolean updatePassword(SysUser user) throws NoSuchAlgorithmException {
+    public LoginResult updatePassword(SysUser user) throws NoSuchAlgorithmException {
         SysUser sysUser = this.getById(user.getId());
         if (sysUser == null) {
             throw ExceptionResultEnum.ERROR.exception("用户不存在");
@@ -154,8 +159,12 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         String newPwd = user.getPassword();
         String mobileNumber = user.getMobileNumber();
         String verifyCode = user.getVerifyCode();
+        String oldPassword = user.getOldPassword();
         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.setPwdUpdateTime(System.currentTimeMillis());
             sysUser.setPassword(newPwd);
@@ -178,6 +187,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
             sysUser.setMobileNumber(mobileNumber);
         }
         boolean success = this.updateById(sysUser);
+        if (!success){
+            throw ExceptionResultEnum.ERROR.exception("用户更新失败");
+        }
+
         //如果原密码和旧密码不一致,且用户已经登陆,需要重新登录
         Object object = ServletUtil.getRequest().getAttribute(SystemConstant.SESSION);
         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)) {
             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