抄forestblog项目源代码controller学习,加自己注释,第一次学项目代码

package com.liuyanzhao.ssm.blog.controller.admin;

import cn.hutool.http.HtmlUtil;
import com.github.pagehelper.PageInfo;
import com.liuyanzhao.ssm.blog.dto.ArticleParam;
import com.liuyanzhao.ssm.blog.entity.Article;
import com.liuyanzhao.ssm.blog.entity.Category;
import com.liuyanzhao.ssm.blog.entity.Tag;
import com.liuyanzhao.ssm.blog.entity.User;
import com.liuyanzhao.ssm.blog.enums.UserRole;
import com.liuyanzhao.ssm.blog.service.ArticleService;
import com.liuyanzhao.ssm.blog.service.CategoryService;
import com.liuyanzhao.ssm.blog.service.TagService;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import javax.servlet.http.HttpSession;
import javax.xml.transform.sax.SAXResult;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;

@Controller
@RequestMapping("/admin/article")
public class BAC {
    //控制器引入服务
    //文章服务
    @Autowired
    private ArticleService articleService;
    //标签服务
    @Autowired
    private TagService tagService;
    //分类服务
    @Autowired
    private CategoryService categoryService;

    //设置地址
    //后台文章列表显示
    @RequestMapping("")
    public String index(@RequestParam(required = false,defaultValue = "1") Integer pageIndex,
                        @RequestParam(required = false,defaultValue = "10") Integer pageSize,
                        @RequestParam(required = false)String status, Model model,
                        HttpSession session
                        ){
        HashMap<String, Object> criteria = new HashMap<>(1);
        if(status==null){
            //没有状态
            model.addAttribute("pageUrlPrefix","/admin/article?pageIndex");
        }else{
            //在标准中加入状态
            criteria.put("status",status);
            //加载模板,跳转状态的路径
            model.addAttribute("pageUrlPrefix","/admin/article?status="+status+"&pageIndex");
        }
        //获得会话对象
        User user = (User)session.getAttribute("user");
        //如果不是管理员
        if(!UserRole.ADMIN.getValue().equals(user.getUserRole())){
            criteria.put("userId",user.getUserId());
        }
        //页面信息对象
        PageInfo<Article> articlePageInfo =  articleService.pageArticle(pageIndex,pageSize,criteria);
        //加载视图
        model.addAttribute("pageInfo",articlePageInfo);
        //返回到默认页面
        return "Admin/Article/index";
    }
    //后台添加页面
    @RequestMapping("/insert")
    public String insertArticleView(Model model){
        //从对象中获取类别列表 对象可能已经有数据
        List<Category> categoryList = categoryService.listCategory();
        //从对象中获取便签列表 对象标签可能已经初始化
        List<Tag>tagList = tagService.listTag();
        //将对象加载到视图中
        model.addAttribute("categoryList",categoryList);
        model.addAttribute("tagList",tagList);
        //返回插入页面
        return "Admin/Article/insert";
    }
    //后台添加文章 按下添加文章按钮后后台的操作
    @RequestMapping(value = "/insertSubmit",method = RequestMethod.POST)
    //传入所有文章参数
    public String insertArticleSubmit(HttpSession session, ArticleParam articleParam){
        //创造一个article对象
        Article article=new Article();
        //从当前会话中获取用户的id
        User user=(User)session.getAttribute("user");
        //如果会话中有用户,将文章的用户id设为此用户id
        if(user!=null){
            article.setArticleUserId(user.getUserId());
        }
        article.setArticleTitle(articleParam.getArticleTitle());
        //文章摘要
        int summaryLength=150;
        //获取文章的内容
        String summaryText= HtmlUtil.cleanHtmlTag(articleParam.getArticleContent());
        //如果大于长度,截取前面的到summaryLength到上传中
        if(summaryText.length()>summaryLength){

            String summary=summaryText.substring(0,summaryLength);
            article.setArticleSummary(summary);
        }else{
            article.setArticleSummary(summaryText);
        }
        //article中已经有上传的文章
        //设置缩略图 函数传入articleParam 好修改后传出去
        article.setArticleThumbnail(articleParam.getArticleThumbnail());
        article.setArticleContent(articleParam.getArticleContent());
        article.setArticleStatus(articleParam.getArticleStatus());
        //填充分类 分类数组
        List<Category>categoryList=new ArrayList<>();
        //获取子分类
        //这里的为什么两个条件相等不太清楚 应该是作者写错了,我改了过来,第一次看源代码看出作者错了,真好,哈哈哈!
        if(articleParam.getArticleParentCategoryId()!=null){
            categoryList.add(new Category(articleParam.getArticleParentCategoryId()));
        }
        if(articleParam.getArticleChildCategoryId()!=null){
            categoryList.add(new Category(articleParam.getArticleChildCategoryId()));
        }
        //将列表中的list传入article中
        article.setCategoryList(categoryList);
        //填充便签,先创造一个对象以便赋值给对象后传出去
        List<Tag>tagList=new ArrayList<>();
        //如果id不为空 将其中的id都传到造出来的对象中
        if(articleParam.getArticleTagIds()!=null){
            for(int i=0;i<articleParam.getArticleTagIds().size();i++){
                Tag tag=new Tag(articleParam.getArticleTagIds().get(i));
                tagList.add(tag);
            }
        }
        //将赋值好的对象返回给article对象
        article.setTagList(tagList);
        //将主要的对象article插入到表中
        articleService.insertArticle(article);
        //跳转到文章主页面
        return "redirect:/admin/article";

        //删除文章
        @RequestMapping(value = "/delete/{id}", method = RequestMethod.POST)
        public void deleteArticle(@PathVariable("id") Integer id,HttpSession session){
            Article dbArticle = articleService.getArticleByStatusAndId(null,id);
            //文章不存在
            if(dbArticle==null){
                return;
            }
            User user= (User) session.getAttribute("user");
             如果不是管理员,访问其他用户的数据,则跳转403
            if(!Object.equals(dbArticle.getArticleUserId(),user.getUserId())&&!Objects.equals(user.getUserRole(),UserRole.ADMIN.getValue())){
                return;
            }
            articleService.deleteArticle(id);
        }
    }
    //编辑文章页面显示
    @RequestMapping(value="/edit/{id}")
    //传入model和session 便于修改他们的值 传入id
    public String ediArticleView(@PathVariable("id") Integer id,Model model,HttpSession session){
        //通过id获取文章
        Article article = articleService.getArticleByStatusAndId(null,id);
        //如果文章不存在
        if(article==null){
            return "redirect:/404";
        }
        //获取session中user的值
        User user=(User)session.getAttribute("user");
        //如果不是文章的作者或者管理员
        if(!Objects.equals(article.getArticleUserId(),user.getUserId())&&!Objects.equals(user.getUserRole(),UserRole.ADMIN.getValue())){
            return "redirect:/403";
        }
        //将翁主传入model
        model.addAttribute("article",article);
        //传入分类列表
        List<Category> categoryList=categoryService.listCategory();
        model.addAttribute("categoryList",categoryList);
        //传入标签列表
        List<Tag> tagList = tagService.listTag();
        model.addAttribute("tagList",tagList);
        //跳转到编辑界面
        return "Admin/Article/edit";
    }
    //编辑文章提交
    @RequestMapping(value = "/editSubmit",method = RequestMethod.POST)
    //后台提交到数据库 大概是创一个对象 把数据弄到对象中在传到数据库
    //传入表中参数和session 便于修该
    public String editArticleSubmit(ArticleParam articleParam,HttpSession session){
        //通过文章id获取已经存到数据库文章 接下来就是修改文章
        Article dbArticle = articleService.getArticleByStatusAndId(null,articleParam.getArticleId());
        //如果没有这篇文章
        if(dbArticle == null){
            return "redirect:/404";
        }
        //获得会话中的user对象
        User user=(User)session.getAttribute("user");
        //和上面一样,判断是不是本人或者管理员
        if(!Objects.equals(dbArticle.getArticleUserId(),user.getUserId())&&!Objects(user.getUserRole(),UserRole.ADMIN.getValue())){
            return "rediect:/403";
        }
        //创造article对象,将修改的参数传入
        Article article = new Article();
        article.setArticleThumbnail(articleParam.getArticleThumbnail());//缩略图
        article.setArticleId(articleParam.getArticleId());
        article.setArticleTitle(articleParam.getArticleTitle());
        article.setArticleContent(articleParam.getArticleContent());
        article.setArticleStatus(articleParam.getArticleStatus());
        //设置文章的摘要
        int summaryLength=150;
        //清除以前的文章
        String summaryText= HtmlUtil.cleanHtmlTag(article.getArticleContent());
        //限制字数
        if(summaryText.length()>summaryLength){
            //如果超出,截断
            String summary= summaryText.substring(0,summaryLength);
            article.setArticleSummary(summary);
        }else{
            article.setArticleSummary(summaryText);
        }
        //填充分类
        //创造列表,等下可以将数据传到列表中进而传到article对象,进而返回
        List<Category>categoryList=new ArrayList<>();
        //判断传入的参数中分类是否为空,如果不为空,将其中所有参数传入到model(视图)中
       if(articleParam.getArticleParentCategoryId()!=null){
           categoryList.add(new Category(articleParam.getArticleParentCategoryId()));
       }
       if(articleParam.getArticleChildCategoryId()!=null){
           categoryList.add(new Category(articleParam.getArticleChildCategoryId()));
       }//填充分类
        article.setCategoryList(categoryList);
       //填充标签
        List<Tag> tagList = new ArrayList<>();
        if(articleParam.getArticleTagIds()!=null){
            for(int i=0;i<articleParam.getArticleTagIds().size();i++){
                Tag tag = new Tag(articleParam.getArticleTagIds().get(i));
                tagList.add(tag);
            }
        }
        //将标签列表添加到article中
        article.setTagList(tagList);
        articleService.updateArticleDetail(article);
        return "redirect:/admin/article";
    }
    //后台添加文章提交
    @RequestMapping(value = "/insertDraftSubmit",method = RequestMethod.POST)
    public String insertDraftSubmit(HttpSession session,ArticleParam articleParam){
        //新建文章
        Article article = new Article();
        //获取当前用户
        User user= (User)session.getAttribute("user");
        //用户不为空 设置文章的用户id
        if(user!=null){
            article.setArticleUserId(user.getUserId());
        }
        //传入开头
        article.setArticleTitle(articleParam.getArticleTitle());
        //传入文章摘要
        int summaryLength= 150;
        //过滤html中的便签内容
        String summaryText = HtmlUtil.cleanHtmlTag(articleParam.getArticleContent());
        if(summaryText.length()>summaryLength){
            String summary = summaryText.substring(0,summaryLength);
            article.setArticleSummary(summary);
        }else{
            article.setArticleSummary(summaryText);
        }//传入文章缩略图,内容,状态
        article.setArticleThumbnail(articleParam.getArticleThumbnail());
        article.setArticleContent(articleParam.getArticleContent());
        article.setArticleStatus(articleParam.getArticleStatus());
        //填充分类
        List<Category> categoryList = new ArrayList<>();
        if (articleParam.getArticleChildCategoryId() != null) {
            categoryList.add(new Category(articleParam.getArticleParentCategoryId()));
        }
        if (articleParam.getArticleChildCategoryId() != null) {
            categoryList.add(new Category(articleParam.getArticleChildCategoryId()));
        }
        article.setCategoryList(categoryList);
        //填充标签
        List<Tag>tagList=new ArrayList<>();
        if(articleParam.getArticleTagIds()!=null){
            for(int i=0;i<articleParam.getArticleTagIds().size();i++){
                Tag tag = new Tag(articleParam.getArticleTagIds().get(i));
                tagList.add(tag);
            }
        }
        //将tag列表传入文章中 至此 article(文章)对象赋值完成
        article.setTagList(tagList);
        //将文章传入到数据库
        articleService.insertArticle(article);
        return "redirect:/admin";
    }

}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值