黄远 5 سال پیش
والد
کامیت
b695f8fdc2

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

@@ -144,30 +144,17 @@ public class LoginService implements ILoginService {
 
     @Override
     public RestResponse changeTeam(HttpServletRequest request, UserRequest userRequest) {
-        Long companyId = userRequest.getCompanyId();
         UserResponse userResponse = new UserResponse();
-        //校验团队信息
-        MaintenanceCompany maintenanceCompany = maintenanceCompanyService.getById(companyId);
-        if (maintenanceCompany == null) {
-            return RestResponse.success(ApiConstants.RESULT_SUCCESS, "切换团队不存在");
+        //设置token信息
+        userResponse.setToken(userRequest.getToken());
+        //校验用户信息,并设置用户信息
+        RestResponse restResponse = checkAndSetChangeInfo(userRequest,userResponse);
+        //如果校验信息不为空返回校验信息
+        if (restResponse != null) {
+            return restResponse;
         }
-        maintenanceCompany.setCurrentTeamFlag(true);
-        userResponse.setMaintenanceCompany(maintenanceCompany);
-        UserRole userRole = userRoleService.getOne(new QueryWrapper<UserRole>()
-                .eq("company_id", companyId)
-                .eq("user_id", userRequest.getUserId())
-        );
-        if (userRole != null) {
-            Role role = roleService.getById(userRole.getRoleId());
-            userResponse.setRole(role);
-            //获取菜单信息
-            if (role != null) {
-                //设置菜单树
-                List<Menu> menuTree = roleMenuService.getMenuTree(role.getId());
-                userResponse.setMenus(menuTree);
-            }
-        }
-        //更新redis中数据值
+        //更新redis中的信息数据
+        updateUserInfoInRedis(userResponse);
         return RestResponse.success(userResponse, ApiConstants.RESULT_SUCCESS, "切换团队成功");
     }
 
@@ -189,6 +176,19 @@ public class LoginService implements ILoginService {
         return RestResponse.success(userResponse, ApiConstants.RESULT_SUCCESS, "用户登录成功");
     }
 
+    @Override
+    public RestResponse verifySmsCode(String mobile, String inputSmsCode) {
+        Object smsCode = redisTemplate.opsForValue().get(mobile + AliConstants.SmsConstants.SMS_CODE_FIELD);
+        if (smsCode != null) {
+            if (!(smsCode.equals(inputSmsCode))) {
+                return RestResponse.fail(ApiConstants.RESULT_ERROR, "短信验证码输入有误");
+            }
+        } else {
+            return RestResponse.fail(ApiConstants.RESULT_ERROR, "验证码过期,请重新获取验证码");
+        }
+        return null;
+    }
+
     /**
      * @param
      * @return
@@ -212,19 +212,6 @@ public class LoginService implements ILoginService {
         return userResponse;
     }
 
-    @Override
-    public RestResponse verifySmsCode(String mobile, String inputSmsCode) {
-        Object smsCode = redisTemplate.opsForValue().get(mobile + AliConstants.SmsConstants.SMS_CODE_FIELD);
-        if (smsCode != null) {
-            if (!(smsCode.equals(inputSmsCode))) {
-                return RestResponse.fail(ApiConstants.RESULT_ERROR, "短信验证码输入有误");
-            }
-        } else {
-            return RestResponse.fail(ApiConstants.RESULT_ERROR, "验证码过期,请重新获取验证码");
-        }
-        return null;
-    }
-
     /**
      * @param userResponse 用户信息
      * @return map 用户信息map
@@ -258,4 +245,63 @@ public class LoginService implements ILoginService {
         currentUserInfoMap.put(ApiConstants.CURRENT_PERMISSION_URL, permissionUrl);
         return currentUserInfoMap;
     }
+
+    /**
+     * @param userRequest  请求参数
+     * @param userResponse 用户信息
+     * @return
+     * @description 检验并设置更换团队中角色的信息
+     * @date 2020/2/26 1:53 下午
+     */
+    private RestResponse checkAndSetChangeInfo(UserRequest userRequest, UserResponse userResponse) {
+        //校验团队信息
+        MaintenanceCompany maintenanceCompany = maintenanceCompanyService.getById(userRequest.getCompanyId());
+        if (maintenanceCompany == null) {
+            return RestResponse.success(ApiConstants.RESULT_SUCCESS, "要切换的团队不存在");
+        }
+        maintenanceCompany.setCurrentTeamFlag(true);
+        userResponse.setMaintenanceCompany(maintenanceCompany);
+        //获取用户在切换团队的角色信息
+        UserRole userRole = userRoleService.getOne(new QueryWrapper<UserRole>()
+                .eq("company_id", userRequest.getCompanyId())
+                .eq("user_id", userRequest.getUserId())
+        );
+        //校验角色信息
+        if (userRole == null) {
+            return RestResponse.success(ApiConstants.RESULT_ERROR, "用户在要切换的团队没有角色,无法切换");
+        }
+        Role role = roleService.getById(userRole.getRoleId());
+        if (role == null) {
+            return RestResponse.success(ApiConstants.RESULT_ERROR, "用户在要切换的团队没有角色,无法切换");
+        }
+        userResponse.setRole(role);
+        //获取角色对应的菜单信息
+        List<Menu> menuTree = roleMenuService.getMenuTree(role.getId());
+        //校验菜单信息
+        if (menuTree == null || menuTree.size() <= 0) {
+            return RestResponse.success(ApiConstants.RESULT_ERROR, "切换团队中用户没有任何菜单,无法切换");
+        }
+        userResponse.setMenus(menuTree);
+        return null;
+    }
+
+    /**
+     * @param
+     * @return
+     * @description 更新用户在redis中的信息
+     * @date 2020/2/26 12:52 下午
+     */
+    private void updateUserInfoInRedis(UserResponse userResponse) {
+        //从redis中获取用户信息
+        String mobile = (String) redisTemplate.opsForValue().get(userResponse.getToken());
+        Map<String, Object> userInfoMap = JSONUtil.parseObj(redisTemplate.opsForValue().get(mobile));
+        //设置用户角色id
+        userInfoMap.put(ApiConstants.CURRENT_ROLE_ID, userResponse.getRole().getId());
+        //设置用户公司id
+        userInfoMap.put(ApiConstants.CURRENT_COMPANY_ID, userResponse.getMaintenanceCompany().getId());
+        //设置用户菜单信息
+        userInfoMap.put(ApiConstants.CURRENT_PERMISSION_URL, menuService.menuToUrl(userResponse.getMenus()));
+        //重新将用户信息放入到redis中
+        redisTemplate.opsForValue().set(mobile, JSONUtil.toJsonPrettyStr(userInfoMap), 30L, TimeUnit.MINUTES);
+    }
 }

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

@@ -269,9 +269,11 @@ public class MtCompanyUserService extends ServiceImpl<MtCompanyUserMapper, MtCom
             List<UserInfo> userInfoList = (List<UserInfo>) userInfoService.listByIds(userIdList);
             Map<Long, UserInfo> userIdToUserInfo = ProjectUtils.attrToObjMap(userInfoList, "userId", null);
             //获取团队用户角色信息
-            Map<Long, Role> userIdToRole = roleService.getUserIdToRoleByUserIdsAndCompanyId(userIdList, mtCompanyUserRequest.getCompanyId());
+            Map<Long, Role> userIdToRole = roleService.getUserIdToRoleByUserIdsAndCompanyId(userIdList,
+                    mtCompanyUserRequest.getCompanyId());
             //获取团队用户操作证信息
-            Map<Long, LiftCertificate> userIdToLiftCertificate = projectService.getUserIdToLiftCertificateByUserIdListAndCompanyId(userIdList, mtCompanyUserRequest.getCompanyId());
+            Map<Long, LiftCertificate> userIdToLiftCertificate = projectService
+                    .getUserIdToLiftCertificateByUserIdListAndCompanyId(userIdList, mtCompanyUserRequest.getCompanyId());
             for (MtCompanyUser mtCompanyUser : mtCompanyUserList) {
                 AppCompanyUserResponse appCompanyUserResponse = new AppCompanyUserResponse();
                 //设置用户信息