Bladeren bron

登录更改为登录名或手机号登录

user5 2 jaren geleden
bovenliggende
commit
9b20aa69d3

+ 20 - 6
jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/controller/LoginController.java

@@ -51,6 +51,7 @@ import javax.servlet.http.HttpSession;
 import java.io.IOException;
 import java.nio.file.AccessDeniedException;
 import java.util.Date;
+import java.util.List;
 import java.util.UUID;
 
 import static java.awt.SystemColor.info;
@@ -84,30 +85,41 @@ public class LoginController {
     @ApiOperation("登录接口")
     public ResponseEntity login(@RequestBody LoginForm loginForm) {
         ResponseUtil responseUtil = new ResponseUtil ( );
+        String loginUserName = loginForm.getUsername ();
         String username = loginForm.getUsername ();
         String password = loginForm.getPassword ();
         String code = loginForm.getCode ();
-        Integer redisLoginNumber = (Integer) RedisUtils.getInstance ().get ( CacheNames.USER_CACHE_LOGIN_CODE + username );
+        Integer redisLoginNumber = (Integer) RedisUtils.getInstance ().get ( CacheNames.USER_CACHE_LOGIN_CODE + loginUserName );
         if(null == redisLoginNumber){
             redisLoginNumber = 0;
         }else{
             redisLoginNumber ++ ;
         }
-        RedisUtils.getInstance().set(CacheNames.USER_CACHE_LOGIN_CODE + username , redisLoginNumber);
+        RedisUtils.getInstance().set(CacheNames.USER_CACHE_LOGIN_CODE + loginUserName , redisLoginNumber);
         //给登录次数记录设置6小时的过期时间
-        RedisUtils.getInstance().expire(CacheNames.USER_CACHE_LOGIN_CODE + username , 21600);
+        RedisUtils.getInstance().expire(CacheNames.USER_CACHE_LOGIN_CODE + loginUserName , 21600);
 
         String dictValue = DictUtils.getDictLabel("login_number", "login_verification_number", null);
         //字典中限制显示次数
-        Integer loginNumber = 0;
+        Integer loginNumber = 5;
         if(StringUtils.isNotBlank(dictValue)) {
             loginNumber = Integer.valueOf(dictValue);
         }
-        if(redisLoginNumber >= loginNumber){
+        if(redisLoginNumber > loginNumber){
             if(!code.equals ( RedisUtils.getInstance ().get (CacheNames.SYS_CACHE_CODE, loginForm.getUuid ()))){
                 throw new AccountExpiredException ( ErrorConstants.LOGIN_ERROR_ERROR_VALIDATE_CODE );
             }
         }
+        //根据登录名查询登录信息
+        List<UserDTO> loginUserList = userService.getUserIdByLoginOrMobile(username);
+        if(null != loginUserList){
+            if (loginUserList.size()>1){
+                throw new DisabledException ( "登录名重复,请使用手机号登录" );
+            }else{
+                username = loginUserList.get(0).getLoginName();
+            }
+        }
+
         SecurityUtils.login (username, password, authenticationManager  ); //登录操作spring security
 
         /**
@@ -123,8 +135,10 @@ public class LoginController {
         responseUtil.add ( TokenProvider.TOKEN, token);
         //更新登录信息
         updateUserLoginInfo ( responseUtil, userDTO , token);
+
         //删除redis中登录次数的信息
-        RedisUtils.getInstance ().delete ( CacheNames.USER_CACHE_LOGIN_CODE + username );
+        RedisUtils.getInstance ().delete ( CacheNames.USER_CACHE_LOGIN_CODE + loginUserName );
+
         return responseUtil.ok ( );
     }
 

+ 7 - 0
jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/mapper/UserMapper.java

@@ -116,4 +116,11 @@ public interface UserMapper extends BaseMapper<User> {
      * @return
      */
     List<UserDTO> getUserByOfficeIds(@Param("officeIds") List<String> officeIds);
+
+    /**
+     * getUserIdByLoginOrMobile
+     * @param userName
+     * @return
+     */
+    List<UserDTO> getUserIdByLoginOrMobile(String userName);
 }

+ 12 - 0
jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/mapper/xml/UserMapper.xml

@@ -225,4 +225,16 @@
 	<insert id="insertUserPost">
 		INSERT INTO sys_user_post(user_id, post_id) VALUES (#{userId}, #{postId})
 	</insert>
+
+	<select id="getUserIdByLoginOrMobile" resultType="com.jeeplus.sys.service.dto.UserDTO">
+		SELECT
+		<include refid="userOfficeColumns"/>
+		FROM sys_user a
+		<include refid="userJoins"/>
+		<where>
+			a.del_flag = 0
+			and (login_name = #{userName} or mobile = #{userName})
+		</where>
+	</select>
+
 </mapper>

+ 9 - 0
jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/service/UserService.java

@@ -218,5 +218,14 @@ public class UserService  extends ServiceImpl<UserMapper, User> {
 		return userMapper.getUserByOfficeIds(officeIds);
 	}
 
+	/**
+	 * 根据登录名或手机号获取用户信息
+	 * @param loginName
+	 * @return
+	 */
+	public List<UserDTO> getUserIdByLoginOrMobile(String loginName) {
+		return userMapper.getUserIdByLoginOrMobile (loginName);
+	}
+
 
 }