一、业务处理层实现
1.在接口中增加如下方法
// 根据主键删除文章
public void deleteArticleWithId(int id);
2.在实现类中增加如下方法和依赖
@Autowired
private CommentMapper commentMapper;
// 删除文章
@Override
public void deleteArticleWithId(int id) {
// 删除文章的同时,删除对应的缓存
articleMapper.deleteArticleWithId(id);
redisTemplate.delete("article_" + id);
// 同时删除对应文章的统计数据
statisticMapper.deleteStatisticWithId(id);
// 同时删除对应文章的评论数据
commentMapper.deleteCommentWithId(id);
}
二、请求处理层实现
打开系统后台管理控制类AdminController,在类中增加文章删除的处理方法
// 文章删除
@PostMapping(value = "/article/delete")
@ResponseBody
public ArticleResponseData delete(@RequestParam int id) {
try {
articleServiceImpl.deleteArticleWithId(id);
logger.info("文章删除成功");
return ArticleResponseData.ok();
} catch (Exception e) {
logger.error("文章删除失败,错误信息: "+e.getMessage());
return ArticleResponseData.fail();
}
}
三、实现前端页面功能
back文件夹下的文章管理列表页面article_list.html进行文章列表的展示和删除实现
注:
主要作用是文章列表展示,以及文章删除的Ajax请求实现。需要注意的是,在文章删除操作的Ajax请求中,需要在HTTP header头信息中携带CSRF Token信息进行请求验证。
四、效果展示
启动项目进行效果测试,在浏览器上访问http://localhost/admin/article,被拦截并登录成功后直接进入后台文章列表页面;选择页面最上方修改后的名为“文章标题222”的文章后方“删除”链接对该文章进行删除操作,在弹出的删除提示框中确认后效果如图。