-
仪表盘显示发布的文章总数
-
在仪表盘可以看见文章标题
-
在仪表盘中显示15条文章
-
在仪表盘中实时更新文章总数
-
更改文章内容不会更新文章总数
-
仪表盘列表按照发布时间排序
-
点击列表中的文章可以跳转到相应文章页面
-
文章管理内容
-
仪表盘文章按照发布时间排序
-
显示每个文章标签、发布时间、浏览量标签
-
点击文章标题可以跳转入文章界面
-
文章标题只显示15篇文章,超过15篇文章会在右下角显示总页数和下一页
-
文章发布
-
文章标题填写超过25字,文章发表失败
-
文章标题不能超过25个字,文章内容不受限制
-
用户可以创建新文章,标题为不填(发布失败)
-
用户可以创建新文章,填写标题(发布成功)
-
创建文章后自动生成创建时间
-
发布文章可以开启和关闭评论功能
-
文章编辑、删除
-
用户可以编辑已有文章,可以修改文章标题,文章内容
-
用户编辑已有文章,修改标题超过25个字无法保存
-
点击修改、修改文章标题、文章标签、文章内容后,点击保存会弹出保存成功
-
用户可以删除已有文章,删除后该文章的评论从会在仪表盘列表中删除
-
删除文章时,会弹出提示是否删除,点击是后会显示删除成功,列表文章数量减少
-
删除文章后,点击仪表盘,显示减少一条文章
-
用户可以点击文章列表中的文章标题,进入文章详情页面查看文章的详细内容
仪表盘显示发布的文章总数如图所示
import com.example.xiangmuqaq.model.ResponseData.ArticleResponseData;
import com.example.xiangmuqaq.model.ResponseData.StaticticsBo;
import com.example.xiangmuqaq.model.domain.Article;
import com.example.xiangmuqaq.model.domain.Comment;
import com.example.xiangmuqaq.service.IArticleService;
import com.example.xiangmuqaq.service.ISiteService;
import com.github.pagehelper.PageInfo;
import org.junit.platform.commons.util.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
* Qingke
* 2023/10/25
* 21:18
**/
@Controller
@RequestMapping("/admin")
public class AdminController {
private static final Logger logger = LoggerFactory.getLogger(AdminController.class);
@Autowired
private ISiteService siteServiceImpl;
@Autowired
private IArticleService articleServiceImpl;
// 管理中心起始页
@GetMapping(value = {"", "/index"})
public String index(HttpServletRequest request) {
// 获取最新的15篇博客、评论以及统计数据
List<Article> articles = siteServiceImpl.recentArticles(15);
List<Comment> comments = siteServiceImpl.recentComments(15);
StaticticsBo staticticsBo = siteServiceImpl.getStatistics();
// 向Request域中存储数据
request.setAttribute("comments", comments);
request.setAttribute("articles", articles);
request.setAttribute("statistics", staticticsBo);
return "back/index";
}
// 向文章发表页面跳转
@GetMapping(value = "/article/toEditPage")
public String newArticle( ) {
return "back/article_edit";
}
// 发表文章
@PostMapping(value = "/article/publish")
@ResponseBody
public ArticleResponseData publishArticle(Article article) {
if (StringUtils.isBlank(article.getCategories())) {
article.setCategories("默认分类");
}
try {
articleServiceImpl.publish(article);
logger.info("文章发布成功");
return ArticleResponseData.ok();
} catch (Exception e) {
logger.error("文章发布失败,错误信息: "+e.getMessage());
return ArticleResponseData.fail();
}
}
// 跳转到后台文章列表页面
@GetMapping(value = "/article")
public String index(@RequestParam(value = "page", defaultValue = "1") int page,
@RequestParam(value = "count", defaultValue = "15") int count,
HttpServletRequest request) {
PageInfo<Article> pageInfo = articleServiceImpl.selectArticleWithPage(page, count);
request.setAttribute("articles", pageInfo);
return "back/article_list";
}
// 向文章修改页面跳转
@GetMapping(value = "/article/{id}")
public String editArticle(@PathVariable("id") String id, HttpServletRequest request) {
Article article = articleServiceImpl.selectArticleWithId(Integer.parseInt(id));
request.setAttribute("contents", article);
request.setAttribute("categories", article.getCategories());
return "back/article_edit";
}
// 修改处理处理
@PostMapping(value = "/article/modify")
@ResponseBody
public ArticleResponseData modifyArticle(Article article) {
try {
articleServiceImpl.updateArticleWithId(article);
logger.info("文章更新成功");
return ArticleResponseData.ok();
} catch (Exception e) {
logger.error("文章更新失败,错误信息: "+e.getMessage());
return ArticleResponseData.fail();
}
}
// 文章删除
@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();
}
}
}