【7.0.2】更新获取当前用户信息的结果

pull/12/head^2
fengshuonan 2021-03-25 11:22:09 +08:00
parent 192624ce6e
commit 375c7a7342
4 changed files with 79 additions and 67 deletions

View File

@ -28,6 +28,8 @@ import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Set;
/**
*
*
@ -37,7 +39,17 @@ import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class LoginDetailsResponse {
public class CurrentUserInfoResponse {
/**
* id
*/
private Long userId;
/**
* /id
*/
private Long organizationId;
/**
* ws-url
@ -45,8 +57,23 @@ public class LoginDetailsResponse {
private String wsUrl;
/**
*
*
*/
private String avatarUrl;
private String nickname;
/**
* url
*/
private String avatar;
/**
*
*/
private Set<String> authorities;
/**
*
*/
private Set<String> roles;
}

View File

@ -34,8 +34,8 @@ import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource;
import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource;
import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource;
import cn.stylefeng.roses.kernel.system.modular.user.wrapper.LoginUserWrapper;
import cn.stylefeng.roses.kernel.wrapper.api.annotation.Wrapper;
import cn.stylefeng.roses.kernel.system.api.pojo.login.CurrentUserInfoResponse;
import cn.stylefeng.roses.kernel.system.modular.user.factory.UserLoginInfoFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
@ -103,10 +103,13 @@ public class LoginController {
* @date 2021/3/17 17:37
*/
@GetResource(name = "获取当前用户的用户信息", path = "/getCurrentLoginUserInfo", requiredPermission = false)
@Wrapper(LoginUserWrapper.class)
public ResponseData getCurrentLoginUserInfo() {
LoginUser loginUser = LoginContext.me().getLoginUser();
return new SuccessResponseData(loginUser);
// 转化返回结果
CurrentUserInfoResponse currentUserInfoResponse = UserLoginInfoFactory.parseUserInfo(loginUser);
return new SuccessResponseData(currentUserInfoResponse);
}
}

View File

@ -31,13 +31,16 @@ import cn.stylefeng.roses.kernel.auth.api.pojo.login.basic.SimpleRoleInfo;
import cn.stylefeng.roses.kernel.auth.api.pojo.login.basic.SimpleUserInfo;
import cn.stylefeng.roses.kernel.auth.api.prop.LoginUserPropExpander;
import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum;
import cn.stylefeng.roses.kernel.system.api.pojo.login.CurrentUserInfoResponse;
import cn.stylefeng.roses.kernel.system.api.pojo.organization.DataScopeDTO;
import cn.stylefeng.roses.kernel.system.api.pojo.role.dto.SysRoleDTO;
import cn.stylefeng.roses.kernel.system.api.pojo.user.SysUserOrgDTO;
import cn.stylefeng.roses.kernel.system.api.pojo.user.UserLoginInfoDTO;
import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUser;
import cn.stylefeng.roses.kernel.system.modular.user.service.SysUserService;
import java.util.*;
import java.util.stream.Collectors;
/**
*
@ -131,4 +134,43 @@ public class UserLoginInfoFactory {
return userLoginInfoDTO;
}
/**
*
*
* @author fengshuonan
* @date 2021/3/25 10:06
*/
public static CurrentUserInfoResponse parseUserInfo(LoginUser loginUser) {
SysUserService sysUserService = SpringUtil.getBean(SysUserService.class);
CurrentUserInfoResponse currentUserInfoResponse = new CurrentUserInfoResponse();
// 设置用户id
currentUserInfoResponse.setUserId(loginUser.getUserId());
// 设置组织id
currentUserInfoResponse.setOrganizationId(loginUser.getOrganizationId());
// 登录人的ws-url
currentUserInfoResponse.setWsUrl(loginUser.getWsUrl());
// 设置用户昵称
currentUserInfoResponse.setNickname(loginUser.getSimpleUserInfo().getNickName());
// 设置头像并获取头像的url
Long avatarFileId = loginUser.getSimpleUserInfo().getAvatar();
String userAvatarUrl = sysUserService.getUserAvatarUrl(avatarFileId, loginUser.getToken());
currentUserInfoResponse.setAvatar(userAvatarUrl);
// 设置角色
List<SimpleRoleInfo> simpleRoleInfoList = loginUser.getSimpleRoleInfoList();
Set<String> roleCodes = simpleRoleInfoList.stream().map(SimpleRoleInfo::getRoleCode).collect(Collectors.toSet());
currentUserInfoResponse.setRoles(roleCodes);
// 设置用户拥有的按钮权限
currentUserInfoResponse.setAuthorities(loginUser.getButtonCodes());
return currentUserInfoResponse;
}
}

View File

@ -1,60 +0,0 @@
/*
* Copyright [2020-2030] [https://www.stylefeng.cn]
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* GunsAPACHE LICENSE 2.0使
*
* 1.LICENSE
* 2.Guns
* 3.
* 4. https://gitee.com/stylefeng/guns
* 5. https://gitee.com/stylefeng/guns
* 6.
*/
package cn.stylefeng.roses.kernel.system.modular.user.wrapper;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.extra.spring.SpringUtil;
import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser;
import cn.stylefeng.roses.kernel.system.api.pojo.login.LoginDetailsResponse;
import cn.stylefeng.roses.kernel.system.modular.user.service.SysUserService;
import cn.stylefeng.roses.kernel.wrapper.api.BaseWrapper;
import java.util.Map;
/**
*
*
* @author fengshuonan
* @date 2021/3/22 21:22
*/
public class LoginUserWrapper implements BaseWrapper<LoginUser> {
@Override
public Map<String, Object> doWrap(LoginUser loginUser) {
SysUserService sysUserService = SpringUtil.getBean(SysUserService.class);
LoginDetailsResponse loginDetailsResponse = new LoginDetailsResponse();
// 设置头像并获取头像的url
Long avatarFileId = loginUser.getSimpleUserInfo().getAvatar();
String userAvatarUrl = sysUserService.getUserAvatarUrl(avatarFileId, loginUser.getToken());
loginDetailsResponse.setAvatarUrl(userAvatarUrl);
// 登录人的ws-url
loginDetailsResponse.setWsUrl(loginUser.getWsUrl());
return BeanUtil.beanToMap(loginDetailsResponse);
}
}