ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -48,7 +48,7 @@ public AjaxResult login(@RequestBody LoginBody loginBody) { // 生成令牌 String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(), String token = loginService.login(loginBody.getNickName(), loginBody.getPassword(), loginBody.getCode(), loginBody.getUuid()); HashMap<String, String> tokenMap = new HashMap<>(); ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
@@ -252,9 +252,10 @@ // user.setSex(userAll.getSex()=="男"?"1":"0"); // user.setPostIds(userAll.getPostIds()); // user.set if (!userService.checkUserNameUnique(user)) if (!userService.checkNickNameUnique(user)) { return error("新增用户'" + user.getUserName() + "'失败,登录账号已存在"); return error("新增用户'" + user.getNickName() + "'失败,登录账号已存在"); } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) { ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java
@@ -7,11 +7,22 @@ */ public class LoginBody { public String getNickName() { return nickName; } public void setNickName(String nickName) { this.nickName = nickName; } /** * 用户名 */ private String username; private String nickName; /** * 用户密码 */ ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
@@ -115,23 +115,23 @@ /** * 登录验证 * * @param username 用户名 * @param nickName 用户名 * @param password 密码 * @param code 验证码 * @param uuid 唯一标识 * @return 结果 */ public String login(String username, String password, String code, String uuid) public String login(String nickName, String password, String code, String uuid) { // 验证码校验 validateCaptcha(username, code, uuid); validateCaptcha(nickName, code, uuid); // 登录前置校验 loginPreCheck(username, password); loginPreCheck(nickName, password); // 用户验证 Authentication authentication = null; try { UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, password); UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(nickName, password); AuthenticationContextHolder.setContext(authenticationToken); // 该方法会去调用UserDetailsServiceImpl.loadUserByUsername authentication = authenticationManager.authenticate(authenticationToken); @@ -140,12 +140,12 @@ { if (e instanceof BadCredentialsException) { AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"))); AsyncManager.me().execute(AsyncFactory.recordLogininfor(nickName, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"))); throw new UserPasswordNotMatchException(); } else { AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage())); AsyncManager.me().execute(AsyncFactory.recordLogininfor(nickName, Constants.LOGIN_FAIL, e.getMessage())); throw new ServiceException(e.getMessage()); } } @@ -153,12 +153,13 @@ { AuthenticationContextHolder.clearContext(); } AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); AsyncManager.me().execute(AsyncFactory.recordLogininfor(nickName, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); LoginUser loginUser = (LoginUser) authentication.getPrincipal(); recordLoginInfo(loginUser.getUserId()); SysUser sysUser = userService.selectUserByUserName(username); SysUser sysUser = userService.selectUserByNickName(nickName); //.selectUserByUserName(username); Long userId = sysUser.getUserId(); // 生成token ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
@@ -45,6 +45,9 @@ */ public SysUser selectUserByUserName(String userName); public SysUser selectUserByNickName(String nickName); /** * 通过用户ID查询用户 * @@ -115,6 +118,10 @@ */ public SysUser checkUserNameUnique(String userName); public SysUser checkNickNameUnique(String nickName); /** * 校验手机号码是否唯一 * ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
@@ -48,6 +48,9 @@ */ public SysUser selectUserByUserName(String userName); public SysUser selectUserByNickName(String nickName); /** * 通过用户ID查询用户 * @@ -80,6 +83,10 @@ */ public boolean checkUserNameUnique(SysUser user); public boolean checkNickNameUnique(SysUser user); /** * 校验手机号码是否唯一 * ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -135,6 +135,11 @@ return userMapper.selectUserByUserName(userName); } @Override public SysUser selectUserByNickName(String nickName) { return userMapper.selectUserByNickName(nickName); } /** * 通过用户ID查询用户 * @@ -199,6 +204,17 @@ return UserConstants.UNIQUE; } @Override public boolean checkNickNameUnique(SysUser user) { Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); SysUser info = userMapper.checkUserNameUnique(user.getUserName()); if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; } /** * 校验手机号码是否唯一 * ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -133,7 +133,14 @@ <include refid="selectUserVo"/> where u.user_name = #{userName} and u.del_flag = '0' </select> <select id="selectUserByNickName" parameterType="String" resultMap="SysUserResult"> <include refid="selectUserVo"/> where u.nick_name = #{nickName} and u.del_flag = '0' </select> <select id="selectUserById" parameterType="Long" resultMap="SysUserResult"> <include refid="selectUserVo"/> where u.user_id = #{userId} @@ -142,7 +149,9 @@ <select id="checkUserNameUnique" parameterType="String" resultMap="SysUserResult"> select user_id, user_name from sys_user where user_name = #{userName} and del_flag = '0' limit 1 </select> <select id="checkNickNameUnique" parameterType="String" resultMap="SysUserResult"> select user_id, nick_name from sys_user where nick_name = #{nickName} and del_flag = '0' limit 1 </select> <select id="checkPhoneUnique" parameterType="String" resultMap="SysUserResult"> select user_id, phonenumber from sys_user where phonenumber = #{phonenumber} and del_flag = '0' limit 1 </select>