如果 ID 为空,表示首页下的帖子列表,查询所有;
如果 ID 不为空,表示对应版块的帖子列表。
参数名 | 描述 | 类型 | 默认值 | 条件 |
---|---|---|---|---|
boardId | 板块 Id | Long | 可为空 |
/**
* 主⻚中显⽰的帖⼦列表以发布时间降序排列
* 查询所有的帖子集合
* @return 帖⼦列表
*/
List selectAll ();
在 services 包下新建 IArticleService 接口:
public interface IArticleService {
/**
* 主⻚中显⽰的帖⼦列表以发布时间降序排列
* 查询所有的帖子集合
* @return 帖⼦列表
*/
List selectAll ();
}
@Slf4j
@Service
public class ArticleServiceImpl implements IArticleService {
@Resource
ArticleMapper articleMapper;
@Override
public List selectAll() {
// 调用 DAO
List result = articleMapper.selectAll();
// 返回结果
return result;
}
}
@SpringBootTest
class ArticleServiceImplTest {
@Resource
private IArticleService articleService;
@Resource
private ObjectMapper objectMapper;
@Test
void selectAll() throws JsonProcessingException {
List articles = articleService.selectAll();
System.out.println(objectMapper.writeValueAsString(articles));
}
}
在 ArticleController 中提供对外的 API 接口:
@Api(tags = "帖子接口")
@Slf4j
@RestController
@RequestMapping("/article")
public class ArticleController {
@Resource
private IArticleService articleService;
@ApiOperation("获取板块帖⼦列表")
@GetMapping("/getAllByBoardId")
public AppResult> getAllByBoardId(){
// 调用 Service
List articles = articleService.selectAll();
// 判断是否为空
if(articles == null){
articles = new ArrayList<>();
}
// 返回结果
return AppResult.success(articles);
}
}
// ========================= 获取帖子列表 =======================
// 成功后,调用listBuildArticleList()方法,构建帖子列表
$.ajax({
type: 'GET',
url: 'article/getAllByBoardId' + queryString,
// 成功回调
success: function(respData){
if(respData.code == 0){
// 成功
listBuildArticleList(respData.data);
}else{
// 失败
$.toast({
heading : '警告',
text : respData.message,
icon : 'Warning'
});
}
},
// 失败回调
error: function(){
$.toast({
heading : '错误',
text : '出错了,请联系管理员',
icon : 'error'
});
}
});
/**
* 根据板块ID 查询帖子列表
* @param boardId 板块Id
* @return List
*/
List selectByBoardId (Long boardId);
/**
* 根据板块ID 查询帖子列表
* @param boardId 板块Id
* @return List
*/
List selectByBoardId (Long boardId);
@Override
public List selectByBoardId(Long boardId) {
// 非空校验
if(boardId == null || boardId <= 0){
// 打印日志
log.warn(ResultCode.FAILED_PARAMS_VALIDATE.toString());
// 抛出异常
throw new ApplicationException(AppResult.failed(ResultCode.FAILED_PARAMS_VALIDATE));
}
// 调用 DAO
List result = articleMapper.selectByBoardId(boardId);
return result;
}
@Test
void selectByBoardId() throws JsonProcessingException {
List articles = articleService.selectByBoardId(1l);
System.out.println(objectMapper.writeValueAsString(articles));
articles = articleService.selectByBoardId(2l);
System.out.println(objectMapper.writeValueAsString(articles));
articles = articleService.selectByBoardId(20l);
System.out.println(objectMapper.writeValueAsString(articles));
}
测试结果如下:
@Api(tags = "帖子接口")
@Slf4j
@RestController
@RequestMapping("/article")
public class ArticleController {
@Resource
private IArticleService articleService;
@ApiOperation("获取板块帖⼦列表")
@GetMapping("/getAllByBoardId")
public AppResult> getAllByBoardId((@ApiParam(value = "版块Id") @RequestParam(value = "boardId", required = false) Long boardId) {
// 声明返回的集合
List articles;
// 根据传入的 boardId 来获取不同的集合
if(boardId == null){
// 首页,查询所有
articles = articleService.selectAll();
}else {
// 查询对应的板块的帖子集合
articles = articleService.selectByBoardId(boardId);
}
// 判断是否为空
if(articles == null){
articles = new ArrayList<>();
}
// 返回结果
return AppResult.success(articles);
}
}
客户端发送请求传入版块Id,服务器响应对应板块的详情。
参数名 | 描述 |
类型 | 默认值 | 条件 |
---|---|---|---|---|
id | 版块 Id | long | 必要 |
/**
* 根据 ID 查询板块信息
* @param id 版块Id
* @return Board
*/
Board selectById (Long id);
@Override
public Board selectById(Long id) {
// 非空校验
if (id == null || id <= 0) {
// 打印日志
log.warn(ResultCode.FAILED_PARAMS_VALIDATE.toString());
// 抛出异常
throw new ApplicationException(AppResult.failed(ResultCode.FAILED_PARAMS_VALIDATE));
}
// 调用 DAO
Board board = boardMapper.selectByPrimaryKey(id);
return null;
}
@Test
void selectById() throws JsonProcessingException {
Board board = boradService.selectById(1l);
System.out.println(objectMapper.writeValueAsString(board));
board = boradService.selectById(2l);
System.out.println(objectMapper.writeValueAsString(board));
board = boradService.selectById(20l);
System.out.println(objectMapper.writeValueAsString(board));
}
测试结果:
@ApiOperation("获取版块详情")
@GetMapping("/getById")
public AppResult getBoardInfo(@Param("版块Id") @RequestParam("id") @NonNull Long id){
// 调用 Service
Board board = boradService.selectById(id);
// 返回结果
return AppResult.success(board);
}
// ========================= 获取版块信息 =======================
//
function getBoardInfo (boardId) {
if (!boardId) {
return;
}
// 发送请求, 成功后,显示版块相关信息
$.ajax({
type: 'GET',
url: 'board/getById?id=' + boardId,
// 成功回调
success: function(respData){
if(respData.code == 0){
// 成功
let board = respData.data;
// 1. 设置版块名
$('#article_list_board_title').html(board.name);
// 2. 设置版块下的贴子数
$('#article_list_count_board').html('帖子数量:' + board.articleCount);
// 3. 是否显示帖子标签
$('#article_list_count_board').show();
}else{
// 失败
$.toast({
heading : '警告',
text : respData.message,
icon : 'Warning'
});
}
},
// 失败回调
error: function(){
$.toast({
heading : '错误',
text : '出错了,请联系管理员',
icon : 'error'
});
}
});
}