『博客开发日记-后台』之获取用户信息接口的实现

本文最后更新于 2026年4月1日 晚上

获取用户信息接口的实现


获取用户信息接口接口的需求

当用户登录时获取当前用户id

根据用户id查询用户权限信息

根据用户id查询用户角色信息

因为这里涉及到用户权限和用户角色的查询

这里需要创建用户权限和用户角色接口的接口服务类(SysMenuServiceImpl,SysRoleServiceImpl)

也是为后续开发做准备

代码实现

先创建AdminUserController类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@RestController
@RequestMapping("/users")
@Api(tags = "用户信息", description = "后台用户信息相关接口")
public class AdminUserController
{
@Autowired
private AdminUserService adminUserService;

@GetMapping("/info")
@SystemLog(businessName = "获取后台用户信息")
@ApiOperation(value = "获取后台用户信息", notes = "获取当前登录后台用户的个人信息", response = SysUserInfoVo.class)
public ResponseResult getInfo()
{
return adminUserService.getAdminInfo();
}
}

然后使用插件生成有关实体类


再生成有关mapper


再生成有关服务类和有关接口



由于后面要写联表查询语句,所以提前将MyBatisX插件下载好,方便后面生成查询语句的.xml文件


再创建AdminUserInfoVo类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
* 用户信息Vo
*/
@Data
@Accessors(chain = true)
@ApiModel(description = "后台用户信息响应对象")
@AllArgsConstructor
@NoArgsConstructor
public class AdminUserInfoVo
{
@ApiModelProperty(value = "用户信息")
private SysUserInfoVo user;

@ApiModelProperty(value = "角色列表")
private List<String> roles;

@ApiModelProperty(value = "菜单列表")
private List<String> perms;

}


在SysMenuServiceImpl类中写关于根据用户id查询用户权限的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/**
* 菜单表(SysMenu)表服务实现类
*
* @author makejava
* @since 2026-03-27 19:07:41
*/
@Service("sysMenuService")
public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> implements SysMenuService
{

@Override
public List<String> selectPermByUserId(Long id)
{
//如果是管理员,则返回所有权限
if (id == 1L){
LambdaQueryWrapper<SysMenu> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(SysMenu :: getType, SystemConstants.MENU_TYPE_M,SystemConstants.MENU_TYPE_B);
queryWrapper.eq(SysMenu :: getStatus, SystemConstants.STATUS_NORMAL);
List<SysMenu> menuList = list(queryWrapper);
List<String> perms = menuList.stream()
.map(SysMenu::getPerm)
.collect(Collectors.toList());
return perms;

}

//如果不是管理员,则返回其对应的权限

return getBaseMapper().selectPermByUserId(id);
}
}

在SysRoleServiceImpl类中写关于根据用户id查询用户角色的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
* 角色表(SysRole)表服务实现类
*
* @author makejava
* @since 2026-03-27 19:27:14
*/
@Service("sysRoleService")
public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> implements SysRoleService {

@Override
public List<String> selectRoleCodeByUserId(Long id)
{
//判断是否为管理员,如果是则返回集合中只需要有admin
if(id == 1L){
List<String> roleCode = new ArrayList<>();
roleCode.add("admin");
return roleCode;
}
//否则查询当前用户具有的角色信息
return getBaseMapper().selectRoleCodeByUserId(id);
}
}

上面提到查询用户权限和用户角色需要涉及到联表查询

所以还要在SysMenuMapper.xml和SysRoleMapper.xml中编写相应的查询语句



最后测试接口成功




PS:该系列只做为作者学习开发项目做的笔记用

不一定符合读者来学习,仅供参考


预告

后续会记录博客的开发过程

每次学习会做一份笔记来进行发表

“一花一世界,一叶一菩提”


版权所有 © 2026 云梦泽
欢迎访问我的个人网站:https://hgt12.github.io/


『博客开发日记-后台』之获取用户信息接口的实现
http://example.com/2026/04/01/『博客开发日记-后台』之获取用户信息接口的实现/
作者
云梦泽
发布于
2026年4月1日
更新于
2026年4月1日
许可协议