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

h) Controller

@Controller
@RequestMapping("/content/category")
public class ContentCategoryController {

    @Autowired
    private ContentCategoryService contentCategoryService;

    /**
     * 根据内容分类的父节点id,查询该节点的内容列表
     * @param parentId
     * @return
     */

    @RequestMapping("/list")
    @ResponseBody
    public List<EasyUITreeNode> getContentCategoryList(@RequestParam(value="id", defaultValue="0") Long parentId) {
        List<EasyUITreeNode> list = contentCategoryService.getContentCategoryList(parentId);
                return list;
    }
}
5.1.2、新增内容分类节点

功能分析:

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


请求的url:/content/category/create
请求的参数:
  Long parentId
  String name
响应的结果:
  json格式的数据,TaotaoResult,其中包含一个对象,对象有id属性,值是新添加的内容分类的id。
注意:
  插入新的叶子结点之后需要判断,
  如果在原结点是叶子节点的时候添加新的叶子节点,
  即需要将“原结点是叶子节点”更新为新的父节点,
  即将新的父节点的is_parent属性设置为“1”,
  因为它的下面有新的叶子节点了!!!

业务逻辑:
  1、接收两个参数:parentId、name。
  2、向tb_content_category表中插入数据。
    a) 创建一个TbContentCategory对象
    b) 补全TbContentCategory对象的其他属性
    c) 向tb_content_category表中插入数据
  3、判断父节点的isparent是否为true,不是true需要改为true。
  4、需要主键返回。
  5、返回TaotaoResult,其中包装TbContentCategory对象。

a) Dao
向tb_content_category表中插入数据,可以使用逆向工程生成的代码。
但是需要添加主键返回,mybatis提供的函数SELECT LAST_INSERT_ID();,该函数可以取到最后生成的主键id,这个方法是事务隔离的,不会出现冲突。
在我们插入记录之后使用该函数。
我们修改下逆向工程生成的代码:

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


注意:修改完代码后,需要向本地仓库安装taotao-manager-dao包。
注意:语句末尾去掉分号!!!

b) Service
参数:parentId、name
返回值:返回TaotaoResult,其中包装了TbContentCategory对象

    @Override
    public TaotaoResult addContentCategory(Long parentId, String name) {
        // 1、接收两个参数:parentId、name
        // 2、向tb_content_category表中插入数据。
        // a) 创建一个TbContentCategory对象
        TbContentCategory contentCategory = new TbContentCategory();
        // b) 补全TbContentCategory对象的其他属性
        contentCategory.setParentId(parentId);
        contentCategory.setName(name);
        // 状态。可选值:1(正常),2(删除)
        contentCategory.setStatus(1);
        // 排列序号,表示同级类目的展现次序,如数值相等则按名称次序排列。取值范围:大于零的整数
        contentCategory.setSortOrder(1);
        // 新增的节点一定是子节点
        contentCategory.setIsParent(false);
        // 新建时间和更新时间
        contentCategory.setCreated(new Date());
        contentCategory.setUpdated(contentCategory.getCreated());
        // c) 向tb_content_category表中插入数据
        contentCategoryMapper.insert(contentCategory);
        // 4、判断父节点的isParent是否为true,是false需要改为true
        // 插入新的叶子结点之后需要判断, 
        // 如果在原结点是叶子节点的时候添加新的叶子节点, 
        // 即需要将“原结点是叶子节点”更新为新的父节点, 
        // 即将新的父节点的is_parent属性设置为“1”, 
        // 因为它的下面有新的叶子节点了!!!
        TbContentCategory contentCategory2 = contentCategoryMapper.selectByPrimaryKey(parentId);
        if (contentCategory2.getIsParent() == false) { // 该类目是否为父类目,1为true,0为false
            contentCategory2.setIsParent(true);
            // 更新新的父节点
            contentCategoryMapper.updateByPrimaryKey(contentCategory2);
        }
        // 5、需要主键返回,返回新的内容分类的id,这里使用了mybatis提供的函数,已在Mapper文件中配置
        // 6、返回TaotaoResult,其中包装了TbContentCategory对象
        return TaotaoResult.ok(contentCategory);
    }

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

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