From 4f377a3364166699c97eeead1b8d0c50eab80d9c Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Mon, 22 Mar 2021 21:34:32 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=907.0.2=E3=80=91=E3=80=90login=E3=80=91?= =?UTF-8?q?=E5=88=A0=E9=99=A4loginWithDetail?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/pojo/login/LoginDetailsResponse.java | 20 +++------- kernel-s-system/system-business-user/pom.xml | 8 ++++ .../user/controller/LoginController.java | 18 ++------- .../LoginUserWrapper.java} | 39 +++++++------------ 4 files changed, 29 insertions(+), 56 deletions(-) rename kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/{factory/LoginResponseFactory.java => wrapper/LoginUserWrapper.java} (76%) 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/LoginDetailsResponse.java index bfc4af541..a6b174901 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/LoginDetailsResponse.java @@ -33,35 +33,25 @@ import lombok.NoArgsConstructor; import java.util.List; /** - * 登陆信息详情相应结果 + * 登录人详细信息 * - * @author majianguo - * @date 2021/1/7 11:59 + * @author fengshuonan + * @date 2021/3/22 21:27 */ @Data @AllArgsConstructor @NoArgsConstructor public class LoginDetailsResponse { - /** - * 登录人的token - */ - private String token; - - /** - * 到期时间 - */ - private Long expireAt; - /** * 用户基本信息 */ private SimpleUserDetail user; /** - * 权限信息 + * 权限信息(对应后台的resource) */ - private List permissions; + private List authorities; /** * 角色信息 diff --git a/kernel-s-system/system-business-user/pom.xml b/kernel-s-system/system-business-user/pom.xml index 496e78e0a..58dbd31dd 100644 --- a/kernel-s-system/system-business-user/pom.xml +++ b/kernel-s-system/system-business-user/pom.xml @@ -70,6 +70,14 @@ 7.0.2 + + + + cn.stylefeng.roses + wrapper-api + 7.0.2 + + 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 f069f759a..5ab57989c 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.api.pojo.login.LoginDetailsResponse; -import cn.stylefeng.roses.kernel.system.modular.user.factory.LoginResponseFactory; +import cn.stylefeng.roses.kernel.system.modular.user.wrapper.LoginUserWrapper; +import cn.stylefeng.roses.kernel.wrapper.api.annotation.Wrapper; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RequestBody; @@ -81,19 +81,6 @@ public class LoginController { return new SuccessResponseData(); } - /** - * 用户登陆并返回详情 - * - * @author fengshuonan - * @date 2021/3/17 17:24 - */ - @PostResource(name = "用户登陆并返回详情", path = "/loginWithDetail", requiredLogin = false, requiredPermission = false) - public ResponseData loginWithDetail(@RequestBody @Validated LoginRequest loginRequest) { - LoginResponse loginResponse = authServiceApi.login(loginRequest); - LoginDetailsResponse loginDetail = LoginResponseFactory.createLoginDetail(loginResponse); - return new SuccessResponseData(loginDetail); - } - /** * 获取当前用户的用户信息 * @@ -101,6 +88,7 @@ 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); diff --git a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/factory/LoginResponseFactory.java b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/wrapper/LoginUserWrapper.java similarity index 76% rename from kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/factory/LoginResponseFactory.java rename to kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/wrapper/LoginUserWrapper.java index 0bfbd0dbf..f53ab3d23 100644 --- a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/factory/LoginResponseFactory.java +++ b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/wrapper/LoginUserWrapper.java @@ -22,10 +22,10 @@ * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns * 6.若您的项目无法满足以上几点,可申请商业授权 */ -package cn.stylefeng.roses.kernel.system.modular.user.factory; +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.auth.LoginResponse; import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser; import cn.stylefeng.roses.kernel.auth.api.pojo.login.basic.SimpleRoleInfo; import cn.stylefeng.roses.kernel.auth.api.pojo.login.basic.SimpleUserInfo; @@ -33,53 +33,40 @@ import cn.stylefeng.roses.kernel.system.api.pojo.login.LoginDetailsResponse; import cn.stylefeng.roses.kernel.system.api.pojo.login.details.SimpleAuthDetail; import cn.stylefeng.roses.kernel.system.api.pojo.login.details.SimpleUserDetail; import cn.stylefeng.roses.kernel.system.modular.user.service.SysUserService; +import cn.stylefeng.roses.kernel.wrapper.api.BaseWrapper; import java.util.ArrayList; import java.util.List; +import java.util.Map; /** - * 登录返回结果组装 + * 登录用户的包装类 * * @author fengshuonan - * @date 2021/1/7 17:11 + * @date 2021/3/22 21:22 */ -public class LoginResponseFactory { - - /** - * 用于登录接口的返回值创建 - * - * @author fengshuonan - * @date 2021/1/7 17:12 - */ - public static LoginDetailsResponse createLoginDetail(LoginResponse loginResponse) { +public class LoginUserWrapper implements BaseWrapper { + @Override + public Map doWrap(LoginUser loginUser) { SysUserService sysUserService = SpringUtil.getBean(SysUserService.class); LoginDetailsResponse loginDetailsResponse = new LoginDetailsResponse(); // 获取用户详细信息 - LoginUser loginUser = loginResponse.getLoginUser(); SimpleUserInfo simpleUserInfo = loginUser.getSimpleUserInfo(); // 获取用户角色信息 List simpleRoleInfoList = loginUser.getSimpleRoleInfoList(); - // 组装token和过期时间 - loginDetailsResponse.setToken(loginResponse.getToken()); - loginDetailsResponse.setExpireAt(loginResponse.getExpireAt()); - // 组装用户信息 SimpleUserDetail simpleUserDetail = new SimpleUserDetail(); simpleUserDetail.setUserId(loginUser.getUserId()); simpleUserDetail.setName(simpleUserInfo.getRealName()); - // todo 地址信息 - simpleUserDetail.setAddress("北京市"); - simpleUserDetail.setPosition("总经理"); - // 设置头像,并获取头像的url - Long avatarFileId = loginResponse.getLoginUser().getSimpleUserInfo().getAvatar(); - String userAvatarUrl = sysUserService.getUserAvatarUrl(avatarFileId, loginResponse.getToken()); + Long avatarFileId = loginUser.getSimpleUserInfo().getAvatar(); + String userAvatarUrl = sysUserService.getUserAvatarUrl(avatarFileId, loginUser.getToken()); simpleUserDetail.setAvatar(userAvatarUrl); loginDetailsResponse.setUser(simpleUserDetail); @@ -93,13 +80,13 @@ public class LoginResponseFactory { simpleAuthDetail.setOperation(null); authInfos.add(simpleAuthDetail); } - loginDetailsResponse.setPermissions(authInfos); + loginDetailsResponse.setAuthorities(authInfos); loginDetailsResponse.setRoles(authInfos); // 登录人的ws-url loginDetailsResponse.setWsUrl(loginUser.getWsUrl()); - return loginDetailsResponse; + return BeanUtil.beanToMap(loginDetailsResponse); } }