• 完成后台管理系统功能(十二)Cms系统中内容分类的增删改查


    1.jingxi首页大广告位的实现

    抽取首页展示内容的共性:

    1、有一张图片

    2、有一个连接

    3、有一个标题

    4、有链接的提示

    5、价格

    需要把内容进行分类,分类应该是一个树形结构。在展示首页时,可以根据分类取内容信息,把内容展示到页面。

    在后台管理内容及内容分类的系统就叫做cms系统。

    2.Cms系统实现

    2.1 列表显示功能需求分析

    初始化树形视图的url:/content/category/list

    参数是id,当前节点id属性,应该根据此id查询子节点列表。

    返回值:包含id、text、state三个属性的json数据列表

    内容分类的表对应的是数据库中tb_content_category

    2.2 dao层

    Sql语句:

    根据parentid查询节点列表

    SELECT * FROM `tb_content_category` WHERE parent_id = 30;

    单表查询可以实现逆向工程生成的代码。

    2.3 service层

    @Service
    public class ContentCategoryServiceImpl implements ContentCategoryService {
        
        List<Long> list=new ArrayList<Long>();
        @Autowired
        private TbContentCategoryMapper tbContentCategoryMapper;
        
        @Override
        public List<EUTreeNode> getCategoryList(long parentId) {
            //通过查询后返回一个list 
            TbContentCategoryExample  example =new TbContentCategoryExample();
            Criteria critria =example.createCriteria();
            critria.andParentIdEqualTo(parentId);
            List<TbContentCategory> list=tbContentCategoryMapper.selectByExample(example);
            //循环这个list后将数据赋值给node对象后再将node对象放进 resultlist中
            List<EUTreeNode> resultlist=new ArrayList<EUTreeNode>();
            for(TbContentCategory a:list){
                EUTreeNode node= new EUTreeNode();
                node.setId(a.getId());
                node.setText(a.getName());
                node.setState(a.getIsParent()? "closed":"open");
                resultlist.add(node);
            }
            return resultlist;
        }

    2.4 controller层

    @Controller
    public class ContentCategoryController {
        
        @Autowired
        private ContentCategoryService contentCategoryService;
        
        @RequestMapping("/content/category/list")
        @ResponseBody
        public List<EUTreeNode> getCatList(@RequestParam(value ="id",defaultValue="0")long parentId){
            List<EUTreeNode> list= contentCategoryService.getCategoryList(parentId);
            return list;
            
        }

    3 增加修改删除功能的实现

    3.1 各自的链接

    3.2 dao层

    单表操作,所以使用mapper反向工程生成的代码

    3.3 service层

    @Override
        public JingXiResult insertCategory(long parentId, String name) {
            TbContentCategory tbContentCategory =new TbContentCategory();
            tbContentCategory.setName(name);
            tbContentCategory.setIsParent(false);
            tbContentCategory.setParentId(parentId);
            tbContentCategory.setSortOrder(1);
            tbContentCategory.setStatus(1);
            tbContentCategory.setCreated(new Date());
            tbContentCategory.setUpdated(new Date());
            //给自增长的id赋值  前提是赋值必须比前面的id大  所以这里截取了一段时间码的中间部分
            long id=IDUtil.genItemId();
            String ids=id+"";
            String idd=ids.substring(5,9);
            long idds=Long.parseLong(idd);
            tbContentCategory.setId(idds);
            //添加记录
            tbContentCategoryMapper.insert(tbContentCategory);
            //查看父节点的isparent是否为true ,若不是 则改成true
            TbContentCategory parentCat =tbContentCategoryMapper.selectByPrimaryKey(parentId);
            if(!parentCat.getIsParent()){
                parentCat.setIsParent(true);
                //更新父节点
                tbContentCategoryMapper.updateByPrimaryKey(parentCat);
            }
            return JingXiResult.ok(tbContentCategory);
        }
    
        @Override
        public JingXiResult rename(long id, String name) {
            TbContentCategory tbContentCategory=tbContentCategoryMapper.selectByPrimaryKey(id);
            TbContentCategory a=new TbContentCategory();
            a.setName(name);
            a.setUpdated(new Date());
            a.setId(tbContentCategory.getId());
            a.setIsParent(tbContentCategory.getIsParent());
            a.setCreated(tbContentCategory.getCreated());
            a.setParentId(tbContentCategory.getParentId());
            a.setSortOrder(tbContentCategory.getSortOrder());
            a.setStatus(tbContentCategory.getStatus());
            tbContentCategoryMapper.updateByPrimaryKey(a);
            return JingXiResult.ok();
        }
    
        @Override
        public JingXiResult delete(long id) {
            
            TbContentCategory Category=tbContentCategoryMapper.selectByPrimaryKey(id);
            tbContentCategoryMapper.deleteByPrimaryKey(id);
            long parentId=Category.getParentId();
            TbContentCategoryExample example=new TbContentCategoryExample();
            Criteria critria=example.createCriteria();
            critria.andParentIdEqualTo(parentId);
            List<TbContentCategory> a =tbContentCategoryMapper.selectByExample(example);
            if(a.size()== 0){
                TbContentCategory Category1=tbContentCategoryMapper.selectByPrimaryKey(parentId);
                Category1.setIsParent(false);
                tbContentCategoryMapper.updateByPrimaryKeySelective(Category1);
            }
            
            isNode(id);
            return JingXiResult.ok();
        }
        private void isNode(long parentId){
            TbContentCategoryExample example=new TbContentCategoryExample();
            Criteria critria=example.createCriteria();
            critria.andParentIdEqualTo(parentId);
            List<TbContentCategory> Category =tbContentCategoryMapper.selectByExample(example);
            if(Category.size()>0){
                for(TbContentCategory a:Category){
                    list.add(a.getId());
                    this.isNode(a.getId());
                }
            }else{
                for(long a:list){
                    tbContentCategoryMapper.deleteByPrimaryKey(a);
                }
            }
        }

    3.4 controller层

    @Controller
    public class ContentCategoryController {
        
        @Autowired
        private ContentCategoryService contentCategoryService;
        
        @RequestMapping("/content/category/list")
        @ResponseBody
        public List<EUTreeNode> getCatList(@RequestParam(value ="id",defaultValue="0")long parentId){
            List<EUTreeNode> list= contentCategoryService.getCategoryList(parentId);
            return list;
            
        }
        
        @RequestMapping("/content/category/create")
        @ResponseBody
        public JingXiResult create(long parentId,String name) throws Exception{
            JingXiResult result=contentCategoryService.insertCategory(parentId, name);
            return result;
        }
        
        @RequestMapping("/content/category/update")
        @ResponseBody
        public JingXiResult update(long id,String name) throws Exception{
            JingXiResult result=contentCategoryService.rename(id, name);
            return result;
        }
        
        @RequestMapping("/content/category/delete/")
        @ResponseBody
        public JingXiResult delete(long id)throws Exception{
            JingXiResult result=contentCategoryService.delete(id);
            return result;
        }
         

    至此~ cms系统的内容分类的增删改查功能实现。

  • 相关阅读:
    问题解决:在js中绑定onclick事件为什么不加括号,在html代码中必须要加?(转载)
    web前端学习(四)JavaScript学习笔记部分(4)-- JavaScriptDOM对象
    web前端学习(四)JavaScript学习笔记部分(3)-- JavaScript函数+异常处理+事件处理
    web前端学习(四)JavaScript学习笔记部分(2)-- JavaScript语法详解
    web前端学习(四)JavaScript学习笔记部分(1)-- JavaScript基础教程
    web前端学习(三)css学习笔记部分(10)-- 初级开发工程师面试题
    web前端学习(三)css学习笔记部分(9)-- 初级开发工程师实战
    web前端学习(三)css学习笔记部分(8)-- SVN的介绍和应用、CSS动画效果、CSS3布局属性全接触
    关于rss的内容(转载)
    Django框架简介及模板Template,filter
  • 原文地址:https://www.cnblogs.com/mumudechengzhang/p/7701960.html
Copyright © 2020-2023  润新知