소스 검색

登录功能完善

黄远 5 년 전
부모
커밋
4820d299de

+ 2 - 2
lift-common/src/main/java/cn.com.ty.lift.common/aliservice/constants/AliConstants.java

@@ -59,12 +59,12 @@ public class AliConstants {
         /**
          * 短信验证码字段
          */
-        String SMS_CODE_NAME = "smsCode";
+        String SMS_CODE_FIELD = "smsCode";
 
         /**
          * 手机号字段
          */
-        String MOBILE = "mobile";
+        String MOBILE = "sms_mobile";
     }
 
 }

+ 25 - 4
lift-common/src/main/java/cn.com.ty.lift.common/constants/ApiConstants.java

@@ -36,14 +36,29 @@ public class ApiConstants {
     public static final String CURRENT_USER = "currentUser";
 
     /**
-     * 用户id字段
+     * 当前用户id字段
      */
-    public static final String CURRENT_USER_ID = "userId";
+    public static final String CURRENT_USER_ID = "currentUserId";
 
     /**
-     * 公司id
+     * 当前公司id
      */
-    public static final String CURRENT_COMPANY_ID = "companyId";
+    public static final String CURRENT_COMPANY_ID = "currentCompanyId";
+
+    /**
+     * 当前角色id
+     */
+    public static final String CURRENT_ROLE_ID = "currentRoleId";
+
+    /**
+     * 当前权限路径
+     */
+    public static final String CURRENT_PERMISSION_URL = "currentPermissionUrl";
+
+    /**
+     * 当前用户类型
+     */
+    public static final String CURRENT_USER_TYPE = "currentUserType";
 
     /**
      * 已删除
@@ -133,6 +148,12 @@ public class ApiConstants {
          * 验证码手机号
          */
         String SMS_CODE_MOBILE = "smsCodeMobile";
+
+        /**
+         * 用户手机号字段
+         */
+        String USER_INFO_MOBILE = "userInfoMobile";
+
     }
 
     /**

+ 2 - 2
lift-system-service/src/main/java/cn/com/ty/lift/system/user/controller/LoginController.java

@@ -194,7 +194,7 @@ public class LoginController {
                 //将手机号放入session中
                 request.getSession().setAttribute(AliConstants.SmsConstants.MOBILE, mobile);
                 //将短信验证码放入session中设置过期时间为5分钟
-                redisTemplate.opsForValue().set(mobile + AliConstants.SmsConstants.SMS_CODE_NAME,
+                redisTemplate.opsForValue().set(mobile + AliConstants.SmsConstants.SMS_CODE_FIELD,
                         smsCode, 5L, TimeUnit.MINUTES);
                 //将手机号存到redis中,并设置一分钟后过期
                 redisTemplate.opsForValue().set(mobile + ApiConstants.UserConstants.SMS_CODE_MOBILE,
@@ -219,7 +219,7 @@ public class LoginController {
         //从session中获取手机号
         String mobile = (String) request.getSession().getAttribute(AliConstants.SmsConstants.MOBILE);
         //从redis中获取短信验证码
-        Object smsCode = redisTemplate.opsForValue().get(mobile + AliConstants.SmsConstants.SMS_CODE_NAME);
+        Object smsCode = redisTemplate.opsForValue().get(mobile + AliConstants.SmsConstants.SMS_CODE_FIELD);
         if (smsCode != null) {
             if (StringUtils.isNotBlank(inputSmsCode) && inputSmsCode.equals(smsCode)) {
                 return RestResponse.success(null, ApiConstants.RESULT_SUCCESS, "短信验证码校验成功");

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

@@ -21,7 +21,9 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -56,6 +58,9 @@ public class LoginService implements ILoginService {
     @Resource
     private IMaintenanceCompanyService maintenanceCompanyService;
 
+    @Resource
+    private IMenuService menuService;
+
     @Override
     public RestResponse register(HttpServletRequest request, UserRequest userRequest) {
         //判断手机号是否为空
@@ -191,23 +196,19 @@ public class LoginService implements ILoginService {
     private UserResponse initLoginInfo(HttpServletRequest request, Long userId) {
         //获取用户信息
         UserResponse userResponse = userService.getLoginUserInfo(userId);
-        //将当前公司id放入session中
-        if (userResponse.getMaintenanceCompany() != null) {
-            request.getSession().setAttribute(ApiConstants.CURRENT_COMPANY_ID, userResponse.getMaintenanceCompany().getId());
-        }
-        //将用户信息放入session中
-        request.getSession().setAttribute(ApiConstants.CURRENT_USER_ID, userResponse.getUserId());
-        //将用户登录的信息放入redis中,作为缓存处理设置30分钟过期
-        redisTemplate.opsForValue().set(userResponse.getToken(), JSONUtil.toJsonPrettyStr(userResponse), 30L, TimeUnit.MINUTES);
+        //将用户登录的手机号放入session中
+        request.getSession().setAttribute(ApiConstants.UserConstants.USER_INFO_MOBILE, userResponse.getMobile());
+        //封装登录用户信息
+        Map<String, Object> currentUserInfoMap = getUserInfoMap(userResponse);
         //将手机号对应的用户信息放入redis中,设置过期时间为30分钟
         redisTemplate.opsForValue().set(userResponse.getMobile() + ApiConstants.UserConstants.USER_INFO_FIELD,
-                JSONUtil.toJsonPrettyStr(userResponse), 30L, TimeUnit.MINUTES);
+                JSONUtil.toJsonPrettyStr(currentUserInfoMap), 30L, TimeUnit.MINUTES);
         return userResponse;
     }
 
     @Override
     public RestResponse verifySmsCode(String mobile, String inputSmsCode) {
-        Object smsCode = redisTemplate.opsForValue().get(mobile + AliConstants.SmsConstants.SMS_CODE_NAME);
+        Object smsCode = redisTemplate.opsForValue().get(mobile + AliConstants.SmsConstants.SMS_CODE_FIELD);
         if (smsCode != null) {
             if (!(smsCode.equals(inputSmsCode))) {
                 return RestResponse.fail(ApiConstants.RESULT_ERROR, "短信验证码输入有误");
@@ -217,4 +218,33 @@ public class LoginService implements ILoginService {
         }
         return null;
     }
+
+    /**
+     * @param userResponse 用户信息
+     * @return map 用户信息map
+     * @description 封装放入redis的用户信息
+     * @date 2020-01-16 11:40
+     */
+    private Map<String, Object> getUserInfoMap(UserResponse userResponse) {
+        //封装用户登录信息,并将登录信息放入redis中
+        Map<String, Object> currentUserInfoMap = new HashMap<>();
+        //当前用户id
+        currentUserInfoMap.put(ApiConstants.CURRENT_USER_ID, userResponse.getUserId());
+        //当前用户信息
+        currentUserInfoMap.put(ApiConstants.CURRENT_USER_TYPE, userResponse.getType());
+        //当前公司id
+        MaintenanceCompany maintenanceCompany = userResponse.getMaintenanceCompany();
+        if (maintenanceCompany != null) {
+            currentUserInfoMap.put(ApiConstants.CURRENT_COMPANY_ID, maintenanceCompany.getId());
+        }
+        //当前角色id
+        Role role = userResponse.getRole();
+        if (role != null) {
+            currentUserInfoMap.put(ApiConstants.CURRENT_ROLE_ID, role.getId());
+        }
+        //用户权限信息
+        String permissionUrl = menuService.menuToUrl(userResponse.getMenus());
+        currentUserInfoMap.put(ApiConstants.CURRENT_PERMISSION_URL, permissionUrl);
+        return currentUserInfoMap;
+    }
 }