Browse Source

登录优化

黄远 5 years ago
parent
commit
1653978f89

+ 15 - 0
lift-common/src/main/java/cn.com.ty.lift.common/constants/ApiConstants.java

@@ -61,11 +61,26 @@ public class ApiConstants {
      */
     public static final String CURRENT_USER_TYPE = "currentUserType";
 
+    /**
+     *  访问类型 app端访问
+     */
+    public static final int ACCESS_TYPE_PC = 1;
+
     /**
      *  访问类型 app端访问
      */
     public static final int ACCESS_TYPE_APP = 2;
 
+    /**
+     *  访问类型 app端访问
+     */
+    public static final int ACCESS_TYPE_PUBLIC = 3;
+
+    /**
+     *  访问类型 app端访问
+     */
+    public static final int ACCESS_TYPE_APPLETS = 4;
+
     /**
      * 已删除
      */

+ 9 - 1
lift-system-service/src/main/java/cn/com/ty/lift/system/user/service/ILoginService.java

@@ -49,11 +49,19 @@ public interface ILoginService {
     RestResponse wxLogin(HttpServletRequest request, UserRequest userRequest);
 
     /**
-     * @param mobile 手机号
+     * @param mobile       手机号
      * @param inputSmsCode 验证码
      * @return
      * @description 校验手机短信验证码
      * @date 2020-01-04 10:38
      */
     RestResponse verifySmsCode(String mobile, String inputSmsCode);
+
+    /**
+     * @param mobile 用户手机号
+     * @param token token
+     * @description 在redis中置空用户信息
+     * @date 2020/4/22 6:46 下午
+     */
+    void blankingUserInfoIntoRedis(String mobile, String token);
 }

+ 11 - 14
lift-system-service/src/main/java/cn/com/ty/lift/system/user/service/impl/LoginService.java

@@ -136,17 +136,6 @@ public class LoginService implements ILoginService {
         return redisTemplate.opsForValue().get(mobileUserInfo);
     }
 
-    /**
-     * @param userRequest 用户手机号, 用户端类型
-     * @description 在redis中置空用户信息
-     * @date 2020/4/22 3:39 下午
-     */
-    public void blankingUserInfoIntoRedis(UserRequest userRequest) {
-        String mobileUserInfo = getUserInfoKeyInRedis(userRequest);
-        redisTemplate.opsForValue().set(mobileUserInfo, null);
-        redisTemplate.opsForValue().set(userRequest.getToken(), null);
-    }
-
     @Override
     public RestResponse resetPassword(UserRequest userRequest) {
         RestResponse verifyResult = verifySmsCode(userRequest.getMobile(), userRequest.getInputSmsCode());
@@ -164,10 +153,8 @@ public class LoginService implements ILoginService {
         String newPassword = PasswordUtils.generatePassword(userRequest.getPassword(), salt);
         userAccount.setPassword(newPassword);
         userAccountService.updateById(userAccount);
-        //用户修改密码后,需要重新登录,将redis中的用户信息置空
-        String mobileUserInfo = (String) redisTemplate.opsForValue().get(userRequest.getToken());
         redisTemplate.opsForValue().set(userRequest.getToken(), null);
-        blankingUserInfoIntoRedis(userRequest);
+        this.blankingUserInfoIntoRedis(userRequest.getMobile(), userRequest.getToken());
         return RestResponse.success(null, ApiConstants.RESULT_SUCCESS, "重置密码成功");
     }
 
@@ -220,6 +207,16 @@ public class LoginService implements ILoginService {
         return null;
     }
 
+    @Override
+    public void blankingUserInfoIntoRedis(String mobile, String token) {
+        String mobileUserInfo = mobile + ApiConstants.UserConstants.USER_INFO_MOBILE;
+        redisTemplate.opsForValue().set(token, null);
+        redisTemplate.opsForValue().set(mobileUserInfo + ApiConstants.ACCESS_TYPE_PC, null);
+        redisTemplate.opsForValue().set(mobileUserInfo + ApiConstants.ACCESS_TYPE_APP, null);
+        redisTemplate.opsForValue().set(mobileUserInfo + ApiConstants.ACCESS_TYPE_PUBLIC, null);
+        redisTemplate.opsForValue().set(mobileUserInfo + ApiConstants.ACCESS_TYPE_APPLETS, null);
+    }
+
     /**
      * @param
      * @return

+ 1 - 3
lift-system-service/src/main/java/cn/com/ty/lift/system/user/service/impl/UserService.java

@@ -346,9 +346,7 @@ public class UserService implements IUserService {
         userAccountService.updateById(oldUserAccount);
         userInfoService.updateById(userInfo);
         //将用户在系统中登出,用户更换手机号后需要重新登录
-        String mobileUserInfo = (String) redisTemplate.opsForValue().get(changeMobileRequest.getToken());
-        redisTemplate.opsForValue().set(changeMobileRequest.getToken(), null);
-        redisTemplate.opsForValue().set(mobileUserInfo, null);
+        loginService.blankingUserInfoIntoRedis(changeMobileRequest.getOldMobile(), changeMobileRequest.getToken());
         return RestResponse.success(ApiConstants.RESULT_SUCCESS, "更换手机号成功");
     }