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

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

获取友链列表接口的实现


获取友链列表接口的需求

根据关键字模糊查询友链名称

根据状态筛选

对列表进去排序

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


代码实现

创建 LinkController

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/**
* 后台友链管理接口
*/
@RestController
@RequestMapping("/links")
@Api(tags = "后台文章管理", description = "后台文章管理相关接口")
public class LinkController
{
@Autowired
private AdminLinkService adminLinkService;

@GetMapping
@SystemLog(businessName = "后台分页查询友链列表")
@ApiOperation(value = "友链列表", notes = "分页查询友链列表", response = LinkVo.class, responseContainer = "List")
@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> linkList(Integer pageNum, Integer pageSize, LinkListDto linkListDto)
{
return adminLinkService.linkList(pageNum, pageSize, linkListDto);
}

创建 LinkListDto

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
* 友链查询请求DTO
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(description = "友链查询请求对象")
public class LinkListDto {

@ApiModelProperty(value = "状态", example = "0")
private String status;

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


创建 AdminLinkListVo

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
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(description = "友链响应对象")
public class AdminLinkListVo
{
@ApiModelProperty(value = "友链ID")
private Long id;

@ApiModelProperty(value = "站点名称")
private String name;

@ApiModelProperty(value = "头像链接")
private String logo;

@ApiModelProperty(value = "网站地址")
private String address;

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

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

@ApiModelProperty(value = "个人描述")
private String description;

@ApiModelProperty(value = "创建日期")
private Date createTime;
}


创建 AdminLinkService

1
2
3
4
5
6
7
8
9
10
/**
* 后台友链管理服务接口
*
* @author mengze
*/
public interface AdminLinkService {

ResponseResult<PageVo> linkList(Integer pageNum, Integer pageSize, LinkListDto linkListDto);
}


创建 AdminLinkServiceImpl 并在其中实现方法

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
32
33
34
35
36
37
38
39
40
41
42
43
44
/**
* 后台友链管理服务实现类
*
* @author mengze
*/
@Service
public class AdminLinkServiceImpl implements AdminLinkService
{
@Autowired
LinkService linkService;

//获取友链列表
@Override
public ResponseResult linkList(Integer pageNum, Integer pageSize, LinkListDto linkListDto)
{
//构建查询条件
LambdaQueryWrapper<Link> queryWrapper = new LambdaQueryWrapper<>();

//根据关键字模糊查询友链名称
if(StringUtils.hasText(linkListDto.getKeywords())) {
queryWrapper.like(Link::getName, linkListDto.getKeywords());
}

//根据状态筛选
if (StringUtils.hasText(linkListDto.getStatus())){
queryWrapper.eq(Link::getStatus, linkListDto.getStatus());
}

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

//分页查询
Page<Link> page = new Page<>(pageNum, pageSize);
linkService.page(page, queryWrapper);

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

return ResponseResult.okResult(pageVo);
}
}


测试接口




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

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


预告

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

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

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


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


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