feat:查询用户信息
This commit is contained in:
@@ -0,0 +1,45 @@
|
|||||||
|
package com.xiang.xservice.auth.api.dto.resp;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class PermissionDTO {
|
||||||
|
/**
|
||||||
|
* id
|
||||||
|
*/
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 名称
|
||||||
|
*/
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编码
|
||||||
|
*/
|
||||||
|
private String code;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 类型 1=菜单 2=按钮 3=接口
|
||||||
|
*/
|
||||||
|
private Integer type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 父类id
|
||||||
|
*/
|
||||||
|
private Long parentId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 路径接口
|
||||||
|
*/
|
||||||
|
private String apiPath;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 请求方法
|
||||||
|
*/
|
||||||
|
private String method;
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package com.xiang.xservice.auth.api.dto.resp;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class UserDTO {
|
||||||
|
|
||||||
|
private List<RoleDTO> roles;
|
||||||
|
private UserResp user;
|
||||||
|
private DeptDTO dept;
|
||||||
|
private List<PermissionDTO> permissionRoles;
|
||||||
|
}
|
||||||
@@ -5,11 +5,13 @@ import com.xiang.xservice.auth.api.dto.req.LoginRequest;
|
|||||||
import com.xiang.xservice.auth.api.dto.req.RegisterRequest;
|
import com.xiang.xservice.auth.api.dto.req.RegisterRequest;
|
||||||
import com.xiang.xservice.auth.api.dto.resp.LoginResp;
|
import com.xiang.xservice.auth.api.dto.resp.LoginResp;
|
||||||
import com.xiang.xservice.auth.api.dto.resp.RegisterResp;
|
import com.xiang.xservice.auth.api.dto.resp.RegisterResp;
|
||||||
|
import com.xiang.xservice.auth.api.dto.resp.UserDTO;
|
||||||
import com.xiang.xservice.auth.service.service.XUserService;
|
import com.xiang.xservice.auth.service.service.XUserService;
|
||||||
import com.xiang.xservice.basic.common.resp.Result;
|
import com.xiang.xservice.basic.common.resp.Result;
|
||||||
import com.xiang.xservice.basic.exception.BusinessException;
|
import com.xiang.xservice.basic.exception.BusinessException;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
@@ -55,4 +57,10 @@ public class TokenController implements TokenApi {
|
|||||||
}
|
}
|
||||||
return Result.error("操作失败");
|
return Result.error("操作失败");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/private/auth/getInfo")
|
||||||
|
public Result<UserDTO> getUserInfo() {
|
||||||
|
// todo token的工具类,直接获取token中的userId无需传参
|
||||||
|
return Result.success(userService.getUserDetail(1L));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ import com.xiang.xservice.basic.common.resp.Result;
|
|||||||
import com.xiang.xservice.basic.exception.BusinessException;
|
import com.xiang.xservice.basic.exception.BusinessException;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ server:
|
|||||||
port: 38011
|
port: 38011
|
||||||
spring:
|
spring:
|
||||||
profiles:
|
profiles:
|
||||||
active: test
|
active: local
|
||||||
application:
|
application:
|
||||||
name: xservice-auth-center
|
name: xservice-auth-center
|
||||||
mvc:
|
mvc:
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package com.xiang.xservice.auth.service.convert;
|
||||||
|
|
||||||
|
import com.xiang.xservice.auth.api.dto.resp.PermissionDTO;
|
||||||
|
import com.xiang.xservice.auth.service.entity.XPermission;
|
||||||
|
import org.mapstruct.Mapper;
|
||||||
|
import org.mapstruct.factory.Mappers;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper(componentModel = "spring")
|
||||||
|
public interface XPermissionConvert {
|
||||||
|
XPermissionConvert INSTANCE = Mappers.getMapper(XPermissionConvert.class);
|
||||||
|
|
||||||
|
PermissionDTO toDTO(XPermission permission);
|
||||||
|
List<PermissionDTO> toDTOList(List<XPermission> permission);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -21,6 +21,11 @@ public class XUser implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 租户id
|
||||||
|
*/
|
||||||
|
private Long tenantId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户名(昵称)
|
* 用户名(昵称)
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ public interface XPermissionMapper {
|
|||||||
|
|
||||||
List<XPermission> getPermissionList(XPermission permission);
|
List<XPermission> getPermissionList(XPermission permission);
|
||||||
|
|
||||||
List<XPermission> getPermissionByIds(@Param("id") List<Long> ids);
|
List<XPermission> getPermissionByIds(@Param("ids") List<Long> ids);
|
||||||
|
|
||||||
XPermission getPermissionById(@Param("id") Long id);
|
XPermission getPermissionById(@Param("id") Long id);
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,16 @@
|
|||||||
package com.xiang.xservice.auth.service.repository.mapper;
|
package com.xiang.xservice.auth.service.repository.mapper;
|
||||||
|
|
||||||
import com.xiang.xservice.auth.service.entity.XRolePermission;
|
import com.xiang.xservice.auth.service.entity.XRolePermission;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
@Mapper
|
||||||
public interface XRolePermissionMapper {
|
public interface XRolePermissionMapper {
|
||||||
|
|
||||||
List<XRolePermission> getRolePermissionsByRoleId(@Param("roleId") Long roleId);
|
List<XRolePermission> getRolePermissionsByRoleId(@Param("roleId") Long roleId);
|
||||||
|
List<XRolePermission> getRolePermissionsByRoleIds(@Param("roleIds") List<Long> roleIds);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.xiang.xservice.auth.service.repository.mapper;
|
|||||||
|
|
||||||
import com.xiang.xservice.auth.service.entity.XUserDept;
|
import com.xiang.xservice.auth.service.entity.XUserDept;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -16,4 +17,6 @@ public interface XUserDeptMapper {
|
|||||||
int addBatch(List<XUserDept> list);
|
int addBatch(List<XUserDept> list);
|
||||||
|
|
||||||
int delByDeptId(Long deptId);
|
int delByDeptId(Long deptId);
|
||||||
|
|
||||||
|
XUserDept getByUserId(@Param("id") Long userId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import com.xiang.xservice.auth.api.dto.req.user.UserRoleUpdateRequest;
|
|||||||
import com.xiang.xservice.auth.api.dto.req.user.UserUpdateRequest;
|
import com.xiang.xservice.auth.api.dto.req.user.UserUpdateRequest;
|
||||||
import com.xiang.xservice.auth.api.dto.resp.LoginResp;
|
import com.xiang.xservice.auth.api.dto.resp.LoginResp;
|
||||||
import com.xiang.xservice.auth.api.dto.resp.RegisterResp;
|
import com.xiang.xservice.auth.api.dto.resp.RegisterResp;
|
||||||
|
import com.xiang.xservice.auth.api.dto.resp.UserDTO;
|
||||||
import com.xiang.xservice.auth.api.dto.resp.UserResp;
|
import com.xiang.xservice.auth.api.dto.resp.UserResp;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -34,4 +35,6 @@ public interface XUserService {
|
|||||||
Boolean setUserDept(UserDeptUpdateRequest request);
|
Boolean setUserDept(UserDeptUpdateRequest request);
|
||||||
|
|
||||||
Boolean setUserRole(UserRoleUpdateRequest request);
|
Boolean setUserRole(UserRoleUpdateRequest request);
|
||||||
|
|
||||||
|
UserDTO getUserDetail(Long userId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package com.xiang.xservice.auth.service.service.impl;
|
|||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.xiang.xservice.auth.api.code.Code01UserErrorCode;
|
import com.xiang.xservice.auth.api.code.Code01UserErrorCode;
|
||||||
import com.xiang.xservice.auth.api.code.Code02RoleErrorCode;
|
import com.xiang.xservice.auth.api.code.Code02RoleErrorCode;
|
||||||
|
import com.xiang.xservice.auth.api.code.Code03DeptErrorCode;
|
||||||
import com.xiang.xservice.auth.api.dto.req.LoginRequest;
|
import com.xiang.xservice.auth.api.dto.req.LoginRequest;
|
||||||
import com.xiang.xservice.auth.api.dto.req.RegisterRequest;
|
import com.xiang.xservice.auth.api.dto.req.RegisterRequest;
|
||||||
import com.xiang.xservice.auth.api.dto.req.user.UserAddRequest;
|
import com.xiang.xservice.auth.api.dto.req.user.UserAddRequest;
|
||||||
@@ -12,13 +13,25 @@ import com.xiang.xservice.auth.api.dto.req.user.UserRoleUpdateRequest;
|
|||||||
import com.xiang.xservice.auth.api.dto.req.user.UserUpdateRequest;
|
import com.xiang.xservice.auth.api.dto.req.user.UserUpdateRequest;
|
||||||
import com.xiang.xservice.auth.api.dto.resp.LoginResp;
|
import com.xiang.xservice.auth.api.dto.resp.LoginResp;
|
||||||
import com.xiang.xservice.auth.api.dto.resp.RegisterResp;
|
import com.xiang.xservice.auth.api.dto.resp.RegisterResp;
|
||||||
|
import com.xiang.xservice.auth.api.dto.resp.UserDTO;
|
||||||
import com.xiang.xservice.auth.api.dto.resp.UserResp;
|
import com.xiang.xservice.auth.api.dto.resp.UserResp;
|
||||||
|
import com.xiang.xservice.auth.service.convert.XDeptConvert;
|
||||||
|
import com.xiang.xservice.auth.service.convert.XPermissionConvert;
|
||||||
|
import com.xiang.xservice.auth.service.convert.XRoleConvert;
|
||||||
import com.xiang.xservice.auth.service.convert.XUserConvert;
|
import com.xiang.xservice.auth.service.convert.XUserConvert;
|
||||||
|
import com.xiang.xservice.auth.service.entity.XDept;
|
||||||
|
import com.xiang.xservice.auth.service.entity.XPermission;
|
||||||
import com.xiang.xservice.auth.service.entity.XRole;
|
import com.xiang.xservice.auth.service.entity.XRole;
|
||||||
|
import com.xiang.xservice.auth.service.entity.XRolePermission;
|
||||||
import com.xiang.xservice.auth.service.entity.XUser;
|
import com.xiang.xservice.auth.service.entity.XUser;
|
||||||
|
import com.xiang.xservice.auth.service.entity.XUserDept;
|
||||||
import com.xiang.xservice.auth.service.entity.XUserRole;
|
import com.xiang.xservice.auth.service.entity.XUserRole;
|
||||||
import com.xiang.xservice.auth.service.enums.UserStatusEnum;
|
import com.xiang.xservice.auth.service.enums.UserStatusEnum;
|
||||||
|
import com.xiang.xservice.auth.service.repository.mapper.XDeptMapper;
|
||||||
|
import com.xiang.xservice.auth.service.repository.mapper.XPermissionMapper;
|
||||||
import com.xiang.xservice.auth.service.repository.mapper.XRoleMapper;
|
import com.xiang.xservice.auth.service.repository.mapper.XRoleMapper;
|
||||||
|
import com.xiang.xservice.auth.service.repository.mapper.XRolePermissionMapper;
|
||||||
|
import com.xiang.xservice.auth.service.repository.mapper.XUserDeptMapper;
|
||||||
import com.xiang.xservice.auth.service.repository.mapper.XUserMapper;
|
import com.xiang.xservice.auth.service.repository.mapper.XUserMapper;
|
||||||
import com.xiang.xservice.auth.service.repository.mapper.XUserRoleMapper;
|
import com.xiang.xservice.auth.service.repository.mapper.XUserRoleMapper;
|
||||||
import com.xiang.xservice.auth.service.service.XUserService;
|
import com.xiang.xservice.auth.service.service.XUserService;
|
||||||
@@ -57,6 +70,13 @@ public class XUserServiceImpl implements XUserService {
|
|||||||
private final XUserConvert userConvert;
|
private final XUserConvert userConvert;
|
||||||
private final XRoleMapper roleMapper;
|
private final XRoleMapper roleMapper;
|
||||||
private final XUserRoleMapper userRoleMapper;
|
private final XUserRoleMapper userRoleMapper;
|
||||||
|
private final XRoleConvert roleConvert;
|
||||||
|
private final XDeptMapper deptMapper;
|
||||||
|
private final XUserDeptMapper userDeptMapper;
|
||||||
|
private final XDeptConvert deptConvert;
|
||||||
|
private final XRolePermissionMapper rolePermissionMapper;
|
||||||
|
private final XPermissionMapper permissionMapper;
|
||||||
|
private final XPermissionConvert permissionConvert;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public LoginResp login(LoginRequest request) {
|
public LoginResp login(LoginRequest request) {
|
||||||
@@ -91,6 +111,8 @@ public class XUserServiceImpl implements XUserService {
|
|||||||
.issuedAt(now)
|
.issuedAt(now)
|
||||||
.expiresAt(now.plus(3, ChronoUnit.HOURS))
|
.expiresAt(now.plus(3, ChronoUnit.HOURS))
|
||||||
// 自定义 scope
|
// 自定义 scope
|
||||||
|
.claim("userId", user.getId())
|
||||||
|
.claim("tenantId", user.getTenantId())
|
||||||
.claim("timestamp", System.currentTimeMillis())
|
.claim("timestamp", System.currentTimeMillis())
|
||||||
.claim("username", request.getUsername())
|
.claim("username", request.getUsername())
|
||||||
.claim("authorities", roleCodes)
|
.claim("authorities", roleCodes)
|
||||||
@@ -222,4 +244,37 @@ public class XUserServiceImpl implements XUserService {
|
|||||||
}
|
}
|
||||||
return Boolean.FALSE;
|
return Boolean.FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public UserDTO getUserDetail(Long userId) {
|
||||||
|
UserDTO dto = new UserDTO();
|
||||||
|
XUser user = userMapper.getUserById(userId);
|
||||||
|
if (Objects.isNull(user)) {
|
||||||
|
throw new BusinessException(Code01UserErrorCode.USER_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
dto.setUser(userConvert.toResp(user));
|
||||||
|
List<XUserRole> userRoles = userRoleMapper.getByUserId(userId);
|
||||||
|
List<Long> roleIds = userRoles.stream().map(XUserRole::getRoleId).toList();
|
||||||
|
List<XRole> roles = roleMapper.getRoleByIds(roleIds);
|
||||||
|
if (CollectionUtils.isEmpty(roles)) {
|
||||||
|
throw new BusinessException(Code02RoleErrorCode.ROLE_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
dto.setRoles(roleConvert.toDTOList(roles));
|
||||||
|
XUserDept userDept = userDeptMapper.getByUserId(userId);
|
||||||
|
if (Objects.nonNull(userDept)) {
|
||||||
|
Long deptId = userDept.getDeptId();
|
||||||
|
XDept dept = deptMapper.getDeptById(deptId);
|
||||||
|
if (Objects.isNull(dept)) {
|
||||||
|
throw new BusinessException(Code03DeptErrorCode.DEPT_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
dto.setDept(deptConvert.toDTO(dept));
|
||||||
|
}
|
||||||
|
List<XRolePermission> permissionsByRoleIds = rolePermissionMapper.getRolePermissionsByRoleIds(roleIds);
|
||||||
|
if (CollectionUtils.isNotEmpty(permissionsByRoleIds)) {
|
||||||
|
List<Long> permissionIds = permissionsByRoleIds.stream().map(XRolePermission::getPermissionId).toList();
|
||||||
|
List<XPermission> permissions = permissionMapper.getPermissionByIds(permissionIds);
|
||||||
|
dto.setPermissionRoles(permissionConvert.toDTOList(permissions));
|
||||||
|
}
|
||||||
|
return dto;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="com.xiang.xservice.auth.service.repository.mapper.XDeptMapper">
|
<mapper namespace="com.xiang.xservice.auth.service.repository.mapper.XDeptMapper">
|
||||||
|
|
||||||
<resultMap id="BaseResultMap" type="com.xiang.xservice.auth.service.entity.XUserDept" >
|
<resultMap id="BaseResultMap" type="com.xiang.xservice.auth.service.entity.XDept" >
|
||||||
<result column="name" property="name" />
|
<result column="name" property="name" />
|
||||||
<result column="parent_id" property="parentId" />
|
<result column="parent_id" property="parentId" />
|
||||||
<result column="tree_path" property="treePath" />
|
<result column="tree_path" property="treePath" />
|
||||||
|
|||||||
@@ -171,7 +171,7 @@
|
|||||||
select <include refid="Base_Column_List"/>
|
select <include refid="Base_Column_List"/>
|
||||||
from x_permission
|
from x_permission
|
||||||
where id in
|
where id in
|
||||||
<foreach collection="list" item="id" open="(" close=")" separator=",">
|
<foreach collection="ids" item="id" open="(" close=")" separator=",">
|
||||||
#{id}
|
#{id}
|
||||||
</foreach>
|
</foreach>
|
||||||
</select>
|
</select>
|
||||||
|
|||||||
@@ -9,13 +9,21 @@
|
|||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<sql id="Base_Column_List">
|
<sql id="Base_Column_List">
|
||||||
role_id,
|
`role_id`,
|
||||||
permission_id
|
`permission_id`
|
||||||
</sql>
|
</sql>
|
||||||
<select id="getRolePermissionsByRoleId" resultMap="BaseResultMap">
|
<select id="getRolePermissionsByRoleId" resultMap="BaseResultMap">
|
||||||
select <include refid="Base_Column_List"/>
|
select <include refid="Base_Column_List"/>
|
||||||
from x_role_permission
|
from x_role_permission
|
||||||
where role_id = #{roleId}
|
where `role_id` = #{roleId}
|
||||||
|
</select>
|
||||||
|
<select id="getRolePermissionsByRoleIds" resultMap="BaseResultMap">
|
||||||
|
select <include refid="Base_Column_List"/>
|
||||||
|
from x_role_permission
|
||||||
|
where `role_id` in
|
||||||
|
<foreach collection="roleIds" item="id" open="(" close=")" separator=",">
|
||||||
|
#{id}
|
||||||
|
</foreach>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,10 @@
|
|||||||
<delete id="delByDeptId">
|
<delete id="delByDeptId">
|
||||||
delete from x_user_data_scope_dept where dept_id = #{deptId}
|
delete from x_user_data_scope_dept where dept_id = #{deptId}
|
||||||
</delete>
|
</delete>
|
||||||
|
<select id="getByUserId" resultMap="BaseResultMap">
|
||||||
|
select <include refid="Base_Column_List"/>
|
||||||
|
from x_user_data_scope_dept where user_id = #{id}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
Reference in New Issue
Block a user