|
@@ -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);
|
|
|
+ }
|
|
|
}
|