Browse Source

修改用户登录账号重复验证

RuoYi 2 years ago
parent
commit
e337f685bc

+ 7 - 3
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java

@@ -130,7 +130,7 @@ public class SysUserController extends BaseController
     @ResponseBody
     public AjaxResult addSave(@Validated SysUser user)
     {
-        if (UserConstants.USER_NAME_NOT_UNIQUE.equals(userService.checkLoginNameUnique(user.getLoginName())))
+        if (UserConstants.USER_NAME_NOT_UNIQUE.equals(userService.checkLoginNameUnique(user)))
         {
             return error("新增用户'" + user.getLoginName() + "'失败,登录账号已存在");
         }
@@ -176,7 +176,11 @@ public class SysUserController extends BaseController
     {
         userService.checkUserAllowed(user);
         userService.checkUserDataScope(user.getUserId());
-        if (StringUtils.isNotEmpty(user.getPhonenumber())
+        if (UserConstants.USER_NAME_NOT_UNIQUE.equals(userService.checkLoginNameUnique(user)))
+        {
+            return error("修改用户'" + user.getLoginName() + "'失败,登录账号已存在");
+        }
+        else if (StringUtils.isNotEmpty(user.getPhonenumber())
                 && UserConstants.USER_PHONE_NOT_UNIQUE.equals(userService.checkPhoneUnique(user)))
         {
             return error("修改用户'" + user.getLoginName() + "'失败,手机号码已存在");
@@ -269,7 +273,7 @@ public class SysUserController extends BaseController
     @ResponseBody
     public String checkLoginNameUnique(SysUser user)
     {
-        return userService.checkLoginNameUnique(user.getLoginName());
+        return userService.checkLoginNameUnique(user);
     }
 
     /**

+ 2 - 2
ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/service/SysRegisterService.java

@@ -58,7 +58,7 @@ public class SysRegisterService
         {
             msg = "账户长度必须在2到20个字符之间";
         }
-        else if (UserConstants.USER_NAME_NOT_UNIQUE.equals(userService.checkLoginNameUnique(loginName)))
+        else if (UserConstants.USER_NAME_NOT_UNIQUE.equals(userService.checkLoginNameUnique(user)))
         {
             msg = "保存用户'" + loginName + "'失败,注册账号已存在";
         }
@@ -67,7 +67,7 @@ public class SysRegisterService
             user.setPwdUpdateDate(DateUtils.getNowDate());
             user.setUserName(loginName);
             user.setSalt(ShiroUtils.randomSalt());
-            user.setPassword(passwordService.encryptPassword(user.getLoginName(), user.getPassword(), user.getSalt()));
+            user.setPassword(passwordService.encryptPassword(loginName, password, user.getSalt()));
             boolean regFlag = userService.registerUser(user);
             if (!regFlag)
             {

+ 1 - 1
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java

@@ -104,7 +104,7 @@ public interface SysUserMapper
      * @param loginName 登录名称
      * @return 结果
      */
-    public int checkLoginNameUnique(String loginName);
+    public SysUser checkLoginNameUnique(String loginName);
 
     /**
      * 校验手机号码是否唯一

+ 2 - 2
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java

@@ -143,10 +143,10 @@ public interface ISysUserService
     /**
      * 校验用户名称是否唯一
      * 
-     * @param loginName 登录名称
+     * @param user 用户信息
      * @return 结果
      */
-    public String checkLoginNameUnique(String loginName);
+    public String checkLoginNameUnique(SysUser user);
 
     /**
      * 校验手机号码是否唯一

+ 7 - 6
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java

@@ -347,16 +347,17 @@ public class SysUserServiceImpl implements ISysUserService
     }
 
     /**
-     * 校验登录名称是否唯一
+     * 校验用户名称是否唯一
      * 
-     * @param loginName 用户名
-     * @return
+     * @param user 用户信息
+     * @return 结果
      */
     @Override
-    public String checkLoginNameUnique(String loginName)
+    public String checkLoginNameUnique(SysUser user)
     {
-        int count = userMapper.checkLoginNameUnique(loginName);
-        if (count > 0)
+        Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();
+        SysUser info = userMapper.checkLoginNameUnique(user.getLoginName());
+        if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue())
         {
             return UserConstants.USER_NAME_NOT_UNIQUE;
         }

+ 2 - 2
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -138,8 +138,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		where u.email = #{email} and u.del_flag = '0'
 	</select>
 	
-	<select id="checkLoginNameUnique" parameterType="String" resultType="int">
-		select count(1) from sys_user where login_name=#{loginName} and del_flag = '0' limit 1
+	<select id="checkLoginNameUnique" parameterType="String" resultMap="SysUserResult">
+		select user_id, login_name from sys_user where login_name=#{loginName} and del_flag = '0' limit 1
 	</select>
 	
 	<select id="checkPhoneUnique" parameterType="String" resultMap="SysUserResult">