作者 RuoYi

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

@@ -125,7 +125,7 @@ public class SysUserController extends BaseController @@ -125,7 +125,7 @@ public class SysUserController extends BaseController
125 @PostMapping 125 @PostMapping
126 public AjaxResult add(@Validated @RequestBody SysUser user) 126 public AjaxResult add(@Validated @RequestBody SysUser user)
127 { 127 {
128 - if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user.getUserName()))) 128 + if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user)))
129 { 129 {
130 return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,登录账号已存在"); 130 return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,登录账号已存在");
131 } 131 }
@@ -154,7 +154,11 @@ public class SysUserController extends BaseController @@ -154,7 +154,11 @@ public class SysUserController extends BaseController
154 { 154 {
155 userService.checkUserAllowed(user); 155 userService.checkUserAllowed(user);
156 userService.checkUserDataScope(user.getUserId()); 156 userService.checkUserDataScope(user.getUserId());
157 - if (StringUtils.isNotEmpty(user.getPhonenumber()) 157 + if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user)))
  158 + {
  159 + return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,登录账号已存在");
  160 + }
  161 + else if (StringUtils.isNotEmpty(user.getPhonenumber())
158 && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) 162 && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user)))
159 { 163 {
160 return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,手机号码已存在"); 164 return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,手机号码已存在");
@@ -41,9 +41,11 @@ public class SysRegisterService @@ -41,9 +41,11 @@ public class SysRegisterService
41 public String register(RegisterBody registerBody) 41 public String register(RegisterBody registerBody)
42 { 42 {
43 String msg = "", username = registerBody.getUsername(), password = registerBody.getPassword(); 43 String msg = "", username = registerBody.getUsername(), password = registerBody.getPassword();
  44 + SysUser sysUser = new SysUser();
  45 + sysUser.setUserName(username);
44 46
45 - boolean captchaEnabled = configService.selectCaptchaEnabled();  
46 // 验证码开关 47 // 验证码开关
  48 + boolean captchaEnabled = configService.selectCaptchaEnabled();
47 if (captchaEnabled) 49 if (captchaEnabled)
48 { 50 {
49 validateCaptcha(username, registerBody.getCode(), registerBody.getUuid()); 51 validateCaptcha(username, registerBody.getCode(), registerBody.getUuid());
@@ -67,16 +69,14 @@ public class SysRegisterService @@ -67,16 +69,14 @@ public class SysRegisterService
67 { 69 {
68 msg = "密码长度必须在5到20个字符之间"; 70 msg = "密码长度必须在5到20个字符之间";
69 } 71 }
70 - else if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(username))) 72 + else if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(sysUser)))
71 { 73 {
72 msg = "保存用户'" + username + "'失败,注册账号已存在"; 74 msg = "保存用户'" + username + "'失败,注册账号已存在";
73 } 75 }
74 else 76 else
75 { 77 {
76 - SysUser sysUser = new SysUser();  
77 - sysUser.setUserName(username);  
78 sysUser.setNickName(username); 78 sysUser.setNickName(username);
79 - sysUser.setPassword(SecurityUtils.encryptPassword(registerBody.getPassword())); 79 + sysUser.setPassword(SecurityUtils.encryptPassword(password));
80 boolean regFlag = userService.registerUser(sysUser); 80 boolean regFlag = userService.registerUser(sysUser);
81 if (!regFlag) 81 if (!regFlag)
82 { 82 {
@@ -84,8 +84,7 @@ public class SysRegisterService @@ -84,8 +84,7 @@ public class SysRegisterService
84 } 84 }
85 else 85 else
86 { 86 {
87 - AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.REGISTER,  
88 - MessageUtils.message("user.register.success"))); 87 + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.REGISTER, MessageUtils.message("user.register.success")));
89 } 88 }
90 } 89 }
91 return msg; 90 return msg;
@@ -107,7 +107,7 @@ public interface SysUserMapper @@ -107,7 +107,7 @@ public interface SysUserMapper
107 * @param userName 用户名称 107 * @param userName 用户名称
108 * @return 结果 108 * @return 结果
109 */ 109 */
110 - public int checkUserNameUnique(String userName); 110 + public SysUser checkUserNameUnique(String userName);
111 111
112 /** 112 /**
113 * 校验手机号码是否唯一 113 * 校验手机号码是否唯一
@@ -69,10 +69,10 @@ public interface ISysUserService @@ -69,10 +69,10 @@ public interface ISysUserService
69 /** 69 /**
70 * 校验用户名称是否唯一 70 * 校验用户名称是否唯一
71 * 71 *
72 - * @param userName 用户名称 72 + * @param user 用户信息
73 * @return 结果 73 * @return 结果
74 */ 74 */
75 - public String checkUserNameUnique(String userName); 75 + public String checkUserNameUnique(SysUser user);
76 76
77 /** 77 /**
78 * 校验手机号码是否唯一 78 * 校验手机号码是否唯一
@@ -161,14 +161,15 @@ public class SysUserServiceImpl implements ISysUserService @@ -161,14 +161,15 @@ public class SysUserServiceImpl implements ISysUserService
161 /** 161 /**
162 * 校验用户名称是否唯一 162 * 校验用户名称是否唯一
163 * 163 *
164 - * @param userName 用户名称 164 + * @param user 用户信息
165 * @return 结果 165 * @return 结果
166 */ 166 */
167 @Override 167 @Override
168 - public String checkUserNameUnique(String userName) 168 + public String checkUserNameUnique(SysUser user)
169 { 169 {
170 - int count = userMapper.checkUserNameUnique(userName);  
171 - if (count > 0) 170 + Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();
  171 + SysUser info = userMapper.checkUserNameUnique(user.getUserName());
  172 + if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue())
172 { 173 {
173 return UserConstants.NOT_UNIQUE; 174 return UserConstants.NOT_UNIQUE;
174 } 175 }
@@ -130,8 +130,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" @@ -130,8 +130,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
130 where u.user_id = #{userId} 130 where u.user_id = #{userId}
131 </select> 131 </select>
132 132
133 - <select id="checkUserNameUnique" parameterType="String" resultType="int">  
134 - select count(1) from sys_user where user_name = #{userName} and del_flag = '0' limit 1 133 + <select id="checkUserNameUnique" parameterType="String" resultMap="SysUserResult">
  134 + select user_id, user_name from sys_user where user_name = #{userName} and del_flag = '0' limit 1
135 </select> 135 </select>
136 136
137 <select id="checkPhoneUnique" parameterType="String" resultMap="SysUserResult"> 137 <select id="checkPhoneUnique" parameterType="String" resultMap="SysUserResult">