day71_淘淘商城项目_04_门户网站介绍 + 商城首页搭建 + CMS内容管理系统的创建 + CMS内容管理系统的实现_匠心笔记 (13)

1、重命名
功能分析:

day71_淘淘商城项目_04_门户网站介绍 + 商城首页搭建 + CMS内容管理系统的创建 + CMS内容管理系统的实现_匠心笔记


请求的url:/content/category/update
参数:id,当前节点id。name,重命名后的名称。
业务逻辑:根据id更新记录。
返回值:返回TaotaoResult.ok()

a) Dao
向tb_content_category表中更新数据,可以使用逆向工程生成的代码。

b) Service
参数:id,当前节点id。name,重命名后的名称。
返回值:返回TaotaoResult.ok()

    @Override
    public TaotaoResult updateContentCategoryName(Long id, String name) {
        TbContentCategory contentCategory = contentCategoryMapper.selectByPrimaryKey(id);
        contentCategory.setName(name);
        // 更新内容分类数据
        contentCategoryMapper.updateByPrimaryKey(contentCategory);
        return TaotaoResult.ok();
    }

c) Controller
请求的url:/content/category/update
请求的参数:
  Long id
  String name
响应的结果:
  json格式的数据,TaotaoResult

    /**
     * 重命名内容分类名称
     * @param id 
     * @param name
     * @return
     */

    @RequestMapping("/update")
    @ResponseBody
    public TaotaoResult updateContentCategoryName(Long id, String name) {
        TaotaoResult result = contentCategoryService.updateContentCategoryName(id, name);
        return result;
    }

2、删除内容分类
功能分析:
我们需要稍微修改一下content-category.jsp,如下图:

day71_淘淘商城项目_04_门户网站介绍 + 商城首页搭建 + CMS内容管理系统的创建 + CMS内容管理系统的实现_匠心笔记


请求的url:/content/category/delete/
参数:id,当前节点的id。
响应的数据:json格式的数据。TaotaoResult。

业务逻辑:
  1、根据id删除记录。
  2、如果删除的节点是子节点,则直接删除;
  再查看删除节点的父节点下是否还有子节点,如果没有需要把删除节点的父节点的is_parent改为false。
  3、如果删除的节点是父节点,则子节点要级联删除。
  两种解决方案:
    方案1:如果判断是父节点则不允许删除。
    方案2:递归删除。(不推荐使用)

a) Dao
从tb_content_category表中删除数据,可以使用逆向工程生成的代码。

b) Service

    @Override
    public TaotaoResult deleteContentCategory(Long id) {
        // 获取删除节点的is_parent
        TbContentCategory contentCategory = contentCategoryMapper.selectByPrimaryKey(id);

        // 如果是父类节点,则递归删除子节点
        if (contentCategory.getIsParent()) { 
            /*
            // 方案二:递归删除子节点
            // 得到父节点下的所有子节点列表
            List<TbContentCategory> list = getContentCategoryListByParentId(id); 
            // 递归删除
            for (TbContentCategory tbContentCategory : list) {
                deleteContentCategory(tbContentCategory.getId()); // 删除当前子节点数据
            }
            */


            // 方案一:父节点不允许删除
            String msg = "请先删 "+ contentCategory.getName() +" 分类下的所有子分类,再删除 "+ contentCategory.getName()+ " 分类!";
            TaotaoResult result = TaotaoResult.build(500, msg, null);
            return result;
        }

        // 如果是子节点,则判断该子节点的父节点是否只有一个子节点
        if (getContentCategoryList(contentCategory.getParentId()).size() == 1) { // 通过该子节点的父节点id获取对应父节点的子节点列表的长度
            // 是单个子节点,获取单个子节点的父节点,把该父节点的is_parent改为false,更新数据
            TbContentCategory parentCategory = contentCategoryMapper.selectByPrimaryKey(contentCategory.getParentId());
            parentCategory.setIsParent(false); 
            contentCategoryMapper.updateByPrimaryKey(parentCategory); 
        }

        // 删除本节点
        contentCategoryMapper.deleteByPrimaryKey(id);
        return TaotaoResult.ok();
    }

    /**
     * 根据parentId查询子节点列表的方法
     * @param parentId
     * @return
     */

    private List<TbContentCategory> getContentCategoryListByParentId(long parentId){
        TbContentCategoryExample example = new TbContentCategoryExample();
        Criteria criteria = example.createCriteria();
        criteria.andParentIdEqualTo(parentId);
        List<TbContentCategory> list = contentCategoryMapper.selectByExample(example);
        return list;
    }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzzzsg.html