From 375c7a7342adfa77ed8b42d24edecabad671fdb5 Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Thu, 25 Mar 2021 11:22:09 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=907.0.2=E3=80=91=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=BD=93=E5=89=8D=E7=94=A8=E6=88=B7=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E7=9A=84=E7=BB=93=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...onse.java => CurrentUserInfoResponse.java} | 33 +++++++++- .../user/controller/LoginController.java | 11 ++-- .../user/factory/UserLoginInfoFactory.java | 42 +++++++++++++ .../user/wrapper/LoginUserWrapper.java | 60 ------------------- 4 files changed, 79 insertions(+), 67 deletions(-) rename kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/login/{LoginDetailsResponse.java => CurrentUserInfoResponse.java} (76%) delete mode 100644 kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/wrapper/LoginUserWrapper.java diff --git a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/login/LoginDetailsResponse.java b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/login/CurrentUserInfoResponse.java similarity index 76% rename from kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/login/LoginDetailsResponse.java rename to kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/login/CurrentUserInfoResponse.java index 4a75ff173..9fdc223dd 100644 --- a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/login/LoginDetailsResponse.java +++ b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/login/CurrentUserInfoResponse.java @@ -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 authorities; + + /** + * 用户拥有的角色编码 + */ + private Set roles; } diff --git a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/LoginController.java b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/LoginController.java index d2f8452a6..eb8d79de5 100644 --- a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/LoginController.java +++ b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/LoginController.java @@ -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); } } diff --git a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/factory/UserLoginInfoFactory.java b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/factory/UserLoginInfoFactory.java index 35805f809..6ccda1d58 100644 --- a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/factory/UserLoginInfoFactory.java +++ b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/factory/UserLoginInfoFactory.java @@ -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 simpleRoleInfoList = loginUser.getSimpleRoleInfoList(); + Set roleCodes = simpleRoleInfoList.stream().map(SimpleRoleInfo::getRoleCode).collect(Collectors.toSet()); + currentUserInfoResponse.setRoles(roleCodes); + + // 设置用户拥有的按钮权限 + currentUserInfoResponse.setAuthorities(loginUser.getButtonCodes()); + + return currentUserInfoResponse; + } + } diff --git a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/wrapper/LoginUserWrapper.java b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/wrapper/LoginUserWrapper.java deleted file mode 100644 index 9ed0cd3c2..000000000 --- a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/wrapper/LoginUserWrapper.java +++ /dev/null @@ -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. - * - * Guns采用APACHE 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 { - - @Override - public Map 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); - } - -}