『博客开发日记-后台』之获取角色列表接口的实现

本文最后更新于 2026年5月14日 晚上

获取角色列表接口的实现


获取角色列表接口的需求

根据关键字模糊查询文件

先以排序序号升序排序和序号相同时按创建时间降序排序

支持分页查询


代码实现

新建 RoleListDto

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
* 角色列表请求DTO
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(description = "角色列表请求对象")
public class RoleListDto {

@Pattern(regexp = "^$|^[01]$", message = "状态只能为0或1")
@ApiModelProperty(value = "状态", example = "0")
private String status;

@ApiModelProperty(value = "关键字(用于模糊搜索角色名称)", example = "Vue")
private String keywords;
}

再创建 AdminRoleListVo

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
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(description = "角色响应对象")
public class AdminRoleListVo
{
@ApiModelProperty(value = "角色ID", example = "1")
private Long id;

@ApiModelProperty(value = "角色编码", example = "admin")
private String roleCode;

@ApiModelProperty(value = "角色名称", example = "系统管理员")
private String name;

@ApiModelProperty(value = "状态(0-正常,1-禁用)", example = "0")
private String status;

@ApiModelProperty(value = "排序", example = "1")
private Integer sort;

@ApiModelProperty(value = "数据权限(1-所有数据 2-部门及子部门数据 3-本部门数据 4-本人数据 5-自定义部门数据)", example = "1")
private Integer dataScope;

@ApiModelProperty(value = "创建日期", example = "2024-01-01 12:00:00")
private Date createTime;

@ApiModelProperty(value = "更新日期", example = "2024-01-01 12:00:00")
private Date updateTime;
}

创建 SysRoleController

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/**
* 角色相关接口
*/
@RestController
@RequestMapping("/roles")
@Api(tags = "角色", description = "角色相关接口")
public class SysRoleController
{
@Autowired
private SysRoleService sysRoleService;

@GetMapping
@SystemLog(businessName = "后台分页查询角色列表")
@ApiOperation(value = "角色列表", notes = "分页查询角色列表", response = PageVo.class)
@ApiImplicitParams({
@ApiImplicitParam(name = "pageNum", value = "页号", dataType = "int", paramType = "query"),
@ApiImplicitParam(name = "pageSize", value = "每页数量", dataType = "int", paramType = "query"),
@ApiImplicitParam(name = "keywords", value = "关键字(角色名称)", dataType = "string", paramType = "query")
})
public ResponseResult<PageVo> getRoleList(Integer pageNum, Integer pageSize, @Valid RoleListDto roleListDto)
{
return sysRoleService.getRoleList(pageNum, pageSize, roleListDto);
}
}

在 SysRoleServiceImpl 中实现方法

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
//获取角色列表
@Override
public ResponseResult<PageVo> getRoleList(Integer pageNum, Integer pageSize, RoleListDto roleListDto)
{
//构建查询条件
LambdaQueryWrapper<SysRole> wrapper = new LambdaQueryWrapper<>();

//根据关键字模糊查询
if(StringUtils.hasText(roleListDto.getKeywords())){
wrapper.like(SysRole::getName, roleListDto.getKeywords());
}

//根据状态进行筛选
if(StringUtils.hasText(roleListDto.getStatus())){
wrapper.eq(SysRole::getStatus, roleListDto.getStatus());
}

//先以排序序号升序排序和序号相同时按创建时间降序排序
wrapper.orderByAsc(SysRole::getSort)
.orderByDesc(SysRole::getCreateTime);

//分页查询
Page<SysRole> page = new Page<>(pageNum, pageSize);
sysRoleService.page(page, wrapper);

//封装成vo返回
List<AdminRoleListVo> roleListVos = BeanCopyUtils.copyBeanList(page.getRecords(), AdminRoleListVo.class);
PageVo pageVo = new PageVo(roleListVos, page.getTotal());

return ResponseResult.okResult(pageVo);
}




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

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


预告

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

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

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


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


『博客开发日记-后台』之获取角色列表接口的实现
http://example.com/2026/05/14/『博客开发日记-后台』之获取角色列表接口的实现/
作者
云梦泽
发布于
2026年5月14日
更新于
2026年5月14日
许可协议