package me.jcala.blog.controller.admin;
import me.jcala.blog.domain.BlogView;
import me.jcala.blog.service.inter.BlogSer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
/**
* 后台管理中博客管理页面
* 包括对博客的增,删,改
* 此页面中所有处理请求的前缀为/admin,比如blogAdd方法匹配的url为/admin/blogAdd
* The type Blog ctrl.
*/
@Controller
@RequestMapping("/admin")
public class BlogCtrl {
private BlogSer blogSer;
@Autowired
public BlogCtrl(BlogSer blogSer) {
this.blogSer = blogSer;
}
/**
*后台管理中添加博客页面的控制器
*
* @return templates下的admin/blog_add.vm页面
*/
@GetMapping("/blogAdd")
public String blogAdd() {
return "admin/blog_add";
}
/**
* 后台管理中修改博客页面的控制器
* 由于markdown编辑器的问题,使用了正则匹配update地址,而不是/update/{id}的形式
*
* @param id 要修改的博客的id
* @return templates下的admin/blog_add.vm页面
*/
@GetMapping("/update{id:\\d+}")
public String blogModify(@PathVariable int id,Model model){
BlogView blogView=blogSer.adminGetBlog(id);
if (blogView==null){
return "error";
}else {
blogView.setVid(id);
model.addAttribute("blog",blogView);
return "admin/blog_modify";
}
}
/**
* 添加博客的表单控制器
*
* @param view 表单中提交的博客信息,包括标题,标签,md页面,和md转成的html页面
* @return templates下的result页面,用于提示是否保存博客成功
*/
@PostMapping("/post.action")
public String postAction(@ModelAttribute("blogForm") BlogView view, Model model){
blogSer.addBlog(view);
return "redirect:/admin/blogList/1";
}
/**
* 更新博客的表单控制器
*
* @param view 表单中提交的博客信息,包括id,md页面,和md转成的html页面
* @return templates下的result页面,用于提示是否保存博客成功
*/
@PostMapping("/update.action")
public String update(@ModelAttribute("blogForm") BlogView view,Model model){
blogSer.updateBlog(view);
return "redirect:/post/"+view.getVid();
}
/**
* 删除博客的控制器
*
* @param id 要删除的博客id
*/
@GetMapping("/delete/{id}")
public String delete(@PathVariable int id,Model model){
blogSer.deleteBlogById(id);
return "redirect:/admin/blogList/1";
}
/**
* 所有博客列表的显示界面.
*
* @param page 显示的为博客的第几页
* @return templates下的admin/blog_list.vm页面
*/
@GetMapping("/blogList/{page}")
public String blogList(@PathVariable int page, Model model) {
model.addAttribute("current",page);
model.addAttribute("pageNum",blogSer.adminGetPageNum());
model.addAttribute("blogList",blogSer.getBlogPage(page));
return "admin/blog_list";
}
}