Browse Source

登录优化

黄远 5 years ago
parent
commit
1123610d1f

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

@@ -139,11 +139,6 @@ public class ApiConstants {
          */
         int NOT_EXPERT = 0;
 
-        /**
-         * 用户信息字段
-         */
-        String USER_INFO_FIELD = "userInfo";
-
         /**
          * 验证码手机号
          */

+ 1 - 0
lift-system-service/src/main/java/cn/com/ty/lift/system/user/dao/entity/model/ChangeMobileRequest.java

@@ -12,4 +12,5 @@ public class ChangeMobileRequest {
     private String oldMobile;//原来手机号
     private String newMobile;//新手机号
     private String newMobileSmsCode;//新手机号验证码
+    private String token;//用户授权令牌
 }

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

@@ -20,7 +20,6 @@ import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 import java.util.HashMap;
 import java.util.List;
@@ -137,7 +136,8 @@ public class LoginService implements ILoginService {
         userAccount.setPassword(newPassword);
         userAccountService.updateById(userAccount);
         //用户修改密码后,需要重新登录,将redis中的用户信息置空
-        redisTemplate.opsForValue().set(userAccount.getMobile() + ApiConstants.UserConstants.USER_INFO_FIELD, null);
+        String mobileUserInfo = (String) redisTemplate.opsForValue().get(userRequest.getToken());
+        redisTemplate.opsForValue().set(mobileUserInfo, null);
         return RestResponse.success(null, ApiConstants.RESULT_SUCCESS, "重置密码成功");
     }
 
@@ -197,18 +197,17 @@ public class LoginService implements ILoginService {
     private UserResponse initLoginInfo(HttpServletRequest request, Long userId) {
         //获取用户信息
         UserResponse userResponse = userService.getLoginUserInfo(userId);
-        //将用户登录的手机号放入session中
-        request.getSession().setAttribute(ApiConstants.UserConstants.USER_INFO_MOBILE, userResponse.getMobile());
-
-        Cookie[] cookies = request.getCookies();
-        System.out.println("JSESSIONID:" + cookies[0].getValue());
-        System.out.println("test:" + request.getSession().getAttribute("test"));
-        System.out.println("sessionId:" + request.getSession().getId());
+        //将用户手机号放入session中
+        request.getSession().setAttribute(ApiConstants.CURRENT_USER_ID, userResponse.getUserId());
         //封装登录用户信息
         Map<String, Object> currentUserInfoMap = getUserInfoMap(userResponse);
-        //将手机号对应的用户信息放入redis中,设置过期时间为30分钟
-        redisTemplate.opsForValue().set(userResponse.getMobile() + ApiConstants.UserConstants.USER_INFO_FIELD,
-                JSONUtil.toJsonPrettyStr(currentUserInfoMap), 30L, TimeUnit.MINUTES);
+        String mobileUserInfo = JSONUtil.toJsonPrettyStr(userResponse.getMobile()
+                + ApiConstants.UserConstants.USER_INFO_MOBILE);
+        //将token对应用户手机号放入redis中,设置过期时间为30分钟
+        redisTemplate.opsForValue().set(userResponse.getToken(), mobileUserInfo, 30L, TimeUnit.MINUTES);
+        //将用户手机号对应的用户信息放入redis中, 过期时间为30分钟
+        redisTemplate.opsForValue().set(mobileUserInfo, JSONUtil.toJsonPrettyStr(currentUserInfoMap),
+                30L, TimeUnit.MINUTES);
         return userResponse;
     }
 
@@ -236,8 +235,13 @@ public class LoginService implements ILoginService {
         Map<String, Object> currentUserInfoMap = new HashMap<>();
         //当前用户id
         currentUserInfoMap.put(ApiConstants.CURRENT_USER_ID, userResponse.getUserId());
+        //如果用户类型为空,设置用户类型为普通类型
+        int userType = 3;
+        if (userResponse.getType() != null) {
+            userType = userResponse.getType();
+        }
         //当前用户信息
-        currentUserInfoMap.put(ApiConstants.CURRENT_USER_TYPE, userResponse.getType());
+        currentUserInfoMap.put(ApiConstants.CURRENT_USER_TYPE, userType);
         //当前公司id
         MaintenanceCompany maintenanceCompany = userResponse.getMaintenanceCompany();
         if (maintenanceCompany != null) {

+ 5 - 8
lift-system-service/src/main/java/cn/com/ty/lift/system/user/service/impl/MenuService.java

@@ -53,9 +53,9 @@ public class MenuService extends ServiceImpl<MenuMapper, Menu> implements IMenuS
     public String menuToUrl(List<Menu> menuList) {
         //将菜单转化为菜单树
         List<Menu> menuTree = TreeUtil.listToTree(menuList, ApiConstants.MENU_PARENT_ATTR, ApiConstants.ROOT_MENU_PARENT_ID, "id");
-        StringBuilder sb = new StringBuilder();
         //递归组合菜单路径
-        menuTreeToUrl(menuTree, sb, "");
+        StringBuilder sb = new StringBuilder();
+        menuTreeToUrl(menuTree,  sb);
         return sb.toString();
     }
 
@@ -133,22 +133,19 @@ public class MenuService extends ServiceImpl<MenuMapper, Menu> implements IMenuS
 
     /**
      * @param menuTree 菜单树,
-     * @param sb       路径StringBuilder对象
-     * @param url      请求路径
      * @return
      * @description 菜单树转化为路径字符串
      * @date 2019/11/27 10:03 AM
      */
-    private void menuTreeToUrl(List<Menu> menuTree, StringBuilder sb, String url) {
+    private void menuTreeToUrl(List<Menu> menuTree, StringBuilder sb) {
         if (menuTree != null && menuTree.size() > 0) {
             for (Menu menu : menuTree) {
                 if (StringUtils.isNotBlank(menu.getUrl())) {
-                    url = url + menu.getUrl();
+                    sb.append(menu.getUrl());
                 }
-                menuTreeToUrl(menu.getChildren(), sb, url);
+                menuTreeToUrl(menu.getChildren(), sb);
             }
         }
-        sb.append(url + ",");
     }
 
     /**

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

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

+ 1 - 1
lift-system-service/src/main/resources/application.yml

@@ -14,7 +14,7 @@ spring:
   application:
     name: lift-system-service
   profiles:
-    active: dev
+    active: local
 
 #自动添加createTime、isDelete 等字段
 xwy: