diff --git a/blade-auth/src/main/java/org/springblade/auth/granter/SocialTokenGranter.java b/blade-auth/src/main/java/org/springblade/auth/granter/SocialTokenGranter.java index 5f453210..0032113f 100644 --- a/blade-auth/src/main/java/org/springblade/auth/granter/SocialTokenGranter.java +++ b/blade-auth/src/main/java/org/springblade/auth/granter/SocialTokenGranter.java @@ -26,6 +26,7 @@ import org.springblade.auth.utils.TokenUtil; import org.springblade.core.social.props.SocialProperties; import org.springblade.core.social.utils.SocialUtil; import org.springblade.core.tool.api.R; +import org.springblade.core.tool.support.Kv; import org.springblade.core.tool.utils.BeanUtil; import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.WebUtil; @@ -105,12 +106,13 @@ public class SocialTokenGranter extends AbstractTokenGranter { BladeUserDetails bladeUserDetails; if (result.isSuccess()) { User user = result.getData().getUser(); + Kv detail = result.getData().getDetail(); if (user == null) { throw new InvalidGrantException("social grant failure, user is null"); } bladeUserDetails = new BladeUserDetails(user.getId(), tenantId, result.getData().getOauthId(), user.getName(), user.getRealName(), user.getDeptId(), user.getPostId(), user.getRoleId(), Func.join(result.getData().getRoles()), Func.toStr(userOauth.getAvatar(), TokenUtil.DEFAULT_AVATAR), - userOauth.getUsername(), AuthConstant.ENCRYPT + user.getPassword(), true, true, true, true, + userOauth.getUsername(), AuthConstant.ENCRYPT + user.getPassword(), detail, true, true, true, true, AuthorityUtils.commaSeparatedStringToAuthorityList(Func.join(result.getData().getRoles()))); } else { throw new InvalidGrantException("social grant failure, feign client return error"); diff --git a/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetails.java b/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetails.java index e08f6a93..979a7c85 100644 --- a/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetails.java +++ b/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetails.java @@ -17,6 +17,7 @@ package org.springblade.auth.service; import lombok.Getter; +import org.springblade.core.tool.support.Kv; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.userdetails.User; @@ -74,8 +75,12 @@ public class BladeUserDetails extends User { * 头像 */ private final String avatar; + /** + * 用户详情 + */ + private final Kv detail; - public BladeUserDetails(Long userId, String tenantId, String oauthId, String name, String realName, String deptId, String postId, String roleId, String roleName, String avatar, String username, String password, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, Collection authorities) { + public BladeUserDetails(Long userId, String tenantId, String oauthId, String name, String realName, String deptId, String postId, String roleId, String roleName, String avatar, String username, String password, Kv detail, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, Collection authorities) { super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities); this.userId = userId; this.tenantId = tenantId; @@ -88,6 +93,7 @@ public class BladeUserDetails extends User { this.roleId = roleId; this.roleName = roleName; this.avatar = avatar; + this.detail = detail; } } diff --git a/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetailsServiceImpl.java b/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetailsServiceImpl.java index 27b94263..74b33cc4 100644 --- a/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetailsServiceImpl.java +++ b/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetailsServiceImpl.java @@ -20,7 +20,6 @@ import lombok.AllArgsConstructor; import lombok.SneakyThrows; import org.apache.commons.lang3.StringUtils; import org.springblade.auth.constant.AuthConstant; -import org.springblade.auth.enums.BladeUserEnum; import org.springblade.auth.utils.TokenUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; @@ -31,6 +30,7 @@ import org.springblade.system.entity.Tenant; import org.springblade.system.feign.ISysClient; import org.springblade.system.user.entity.User; import org.springblade.system.user.entity.UserInfo; +import org.springblade.system.user.enums.UserEnum; import org.springblade.system.user.feign.IUserClient; import org.springframework.security.core.authority.AuthorityUtils; import org.springframework.security.core.userdetails.UserDetailsService; @@ -80,12 +80,12 @@ public class BladeUserDetailsServiceImpl implements UserDetailsService { // 远程调用返回数据 R result; // 根据不同用户类型调用对应的接口返回数据,用户可自行拓展 - if (userType.equals(BladeUserEnum.WEB.getName())) { - result = userClient.userInfo(tenantId, username); - } else if (userType.equals(BladeUserEnum.APP.getName())) { - result = userClient.userInfo(tenantId, username); + if (userType.equals(UserEnum.WEB.getName())) { + result = userClient.userInfo(tenantId, username, UserEnum.WEB.getName()); + } else if (userType.equals(UserEnum.APP.getName())) { + result = userClient.userInfo(tenantId, username, UserEnum.APP.getName()); } else { - result = userClient.userInfo(tenantId, username); + result = userClient.userInfo(tenantId, username, UserEnum.OTHER.getName()); } // 判断返回信息 @@ -100,7 +100,7 @@ public class BladeUserDetailsServiceImpl implements UserDetailsService { } return new BladeUserDetails(user.getId(), user.getTenantId(), StringPool.EMPTY, user.getName(), user.getRealName(), user.getDeptId(), user.getPostId(), user.getRoleId(), Func.join(result.getData().getRoles()), Func.toStr(user.getAvatar(), TokenUtil.DEFAULT_AVATAR), - username, AuthConstant.ENCRYPT + user.getPassword(), true, true, true, true, + username, AuthConstant.ENCRYPT + user.getPassword(), userInfo.getDetail(), true, true, true, true, AuthorityUtils.commaSeparatedStringToAuthorityList(Func.join(result.getData().getRoles()))); } else { throw new UsernameNotFoundException(result.getMsg()); diff --git a/blade-auth/src/main/java/org/springblade/auth/support/BladeJwtTokenEnhancer.java b/blade-auth/src/main/java/org/springblade/auth/support/BladeJwtTokenEnhancer.java index 4423ba70..3b88dfee 100644 --- a/blade-auth/src/main/java/org/springblade/auth/support/BladeJwtTokenEnhancer.java +++ b/blade-auth/src/main/java/org/springblade/auth/support/BladeJwtTokenEnhancer.java @@ -61,6 +61,7 @@ public class BladeJwtTokenEnhancer implements TokenEnhancer { info.put(TokenUtil.REAL_NAME, principal.getRealName()); info.put(TokenUtil.ROLE_NAME, principal.getRoleName()); info.put(TokenUtil.AVATAR, principal.getAvatar()); + info.put(TokenUtil.DETAIL, principal.getDetail()); info.put(TokenUtil.LICENSE, TokenUtil.LICENSE_NAME); ((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(info); diff --git a/blade-auth/src/main/java/org/springblade/auth/utils/TokenUtil.java b/blade-auth/src/main/java/org/springblade/auth/utils/TokenUtil.java index a06d12a4..b3ff6c13 100644 --- a/blade-auth/src/main/java/org/springblade/auth/utils/TokenUtil.java +++ b/blade-auth/src/main/java/org/springblade/auth/utils/TokenUtil.java @@ -52,6 +52,7 @@ public class TokenUtil { public final static String TENANT_ID = TokenConstant.TENANT_ID; public final static String OAUTH_ID = TokenConstant.OAUTH_ID; public final static String CLIENT_ID = TokenConstant.CLIENT_ID; + public final static String DETAIL = TokenConstant.DETAIL; public final static String LICENSE = TokenConstant.LICENSE; public final static String LICENSE_NAME = TokenConstant.LICENSE_NAME; diff --git a/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/enums/DictEnum.java b/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/enums/DictEnum.java index 0adfaba9..609b7cc0 100644 --- a/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/enums/DictEnum.java +++ b/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/enums/DictEnum.java @@ -84,6 +84,10 @@ public enum DictEnum { * 行政区划 */ REGION("region"), + /** + * 用户平台 + */ + USER_TYPE("user_type"), ; final String name; diff --git a/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/User.java b/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/User.java index 87b6e9ca..576b32da 100644 --- a/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/User.java +++ b/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/User.java @@ -39,6 +39,10 @@ public class User extends TenantEntity { * 用户编号 */ private String code; + /** + * 用户平台 + */ + private Integer userType; /** * 账号 */ diff --git a/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/UserInfo.java b/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/UserInfo.java index a8d5d557..98063fa3 100644 --- a/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/UserInfo.java +++ b/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/UserInfo.java @@ -19,6 +19,7 @@ package org.springblade.system.user.entity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import org.springblade.core.tool.support.Kv; import java.io.Serializable; import java.util.List; @@ -46,6 +47,12 @@ public class UserInfo implements Serializable { @ApiModelProperty(value = "用户") private User user; + /** + * 拓展信息 + */ + @ApiModelProperty(value = "拓展信息") + private Kv detail; + /** * 权限标识集合 */ diff --git a/blade-auth/src/main/java/org/springblade/auth/enums/BladeUserEnum.java b/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/enums/UserEnum.java similarity index 71% rename from blade-auth/src/main/java/org/springblade/auth/enums/BladeUserEnum.java rename to blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/enums/UserEnum.java index 5b87c3fc..3626e4bc 100644 --- a/blade-auth/src/main/java/org/springblade/auth/enums/BladeUserEnum.java +++ b/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/enums/UserEnum.java @@ -14,7 +14,7 @@ * this software without specific prior written permission. * Author: Chill 庄骞 (smallchill@163.com) */ -package org.springblade.auth.enums; +package org.springblade.system.user.enums; import lombok.AllArgsConstructor; import lombok.Getter; @@ -26,7 +26,7 @@ import lombok.Getter; */ @Getter @AllArgsConstructor -public enum BladeUserEnum { +public enum UserEnum { /** * web @@ -37,9 +37,33 @@ public enum BladeUserEnum { * app */ APP("app", 2), + + /** + * other + */ + OTHER("other", 3), ; final String name; final int category; + /** + * 匹配枚举值 + * + * @param name 名称 + * @return BladeUserEnum + */ + public static UserEnum of(String name) { + if (name == null) { + return null; + } + UserEnum[] values = UserEnum.values(); + for (UserEnum smsEnum : values) { + if (smsEnum.name.equals(name)) { + return smsEnum; + } + } + return null; + } + } diff --git a/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java b/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java index c17f1b59..875c19db 100644 --- a/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java +++ b/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java @@ -40,6 +40,7 @@ public interface IUserClient { String API_PREFIX = "/client"; String USER_INFO = API_PREFIX + "/user-info"; + String USER_INFO_BY_TYPE = API_PREFIX + "/user-info-by-type"; String USER_INFO_BY_ID = API_PREFIX + "/user-info-by-id"; String USER_INFO_BY_ACCOUNT = API_PREFIX + "/user-info-by-account"; String USER_AUTH_INFO = API_PREFIX + "/user-auth-info"; @@ -76,6 +77,17 @@ public interface IUserClient { @GetMapping(USER_INFO) R userInfo(@RequestParam("tenantId") String tenantId, @RequestParam("account") String account); + /** + * 获取用户信息 + * + * @param tenantId 租户ID + * @param account 账号 + * @param userType 用户平台 + * @return + */ + @GetMapping(USER_INFO_BY_TYPE) + R userInfo(@RequestParam("tenantId") String tenantId, @RequestParam("account") String account, @RequestParam("userType") String userType); + /** * 获取第三方平台信息 * diff --git a/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/vo/UserVO.java b/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/vo/UserVO.java index 1dc5c754..038ac117 100644 --- a/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/vo/UserVO.java +++ b/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/vo/UserVO.java @@ -52,6 +52,11 @@ public class UserVO extends User { */ private String tenantName; + /** + * 用户平台名 + */ + private String userTypeName; + /** * 角色名 */ diff --git a/blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java b/blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java index 1a95c1ca..ea54607b 100644 --- a/blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java +++ b/blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java @@ -24,6 +24,7 @@ import org.springblade.core.tool.utils.Func; import org.springblade.system.user.entity.User; import org.springblade.system.user.entity.UserInfo; import org.springblade.system.user.entity.UserOauth; +import org.springblade.system.user.enums.UserEnum; import org.springblade.system.user.service.IUserService; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -60,6 +61,12 @@ public class UserClient implements IUserClient { return R.data(service.userInfo(tenantId, account)); } + @Override + @GetMapping(USER_INFO_BY_TYPE) + public R userInfo(String tenantId, String account, String userType) { + return R.data(service.userInfo(tenantId, account, UserEnum.of(userType))); + } + @Override @PostMapping(USER_AUTH_INFO) public R userAuthInfo(@RequestBody UserOauth userOauth) { diff --git a/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.xml b/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.xml index e80bb010..c374249e 100644 --- a/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.xml +++ b/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.xml @@ -12,6 +12,8 @@ + + @@ -25,18 +27,6 @@ - - - select id, - create_user AS createUser, - create_time AS createTime, - update_user AS updateUser, - update_time AS updateTime, - status, - is_deleted AS isDeleted, - account, password, name, real_name, email, phone, birthday, sex, role_id, dept_id - -