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、新增内容分类节点
功能分析:
请求的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,这个方法是事务隔离的,不会出现冲突。
在我们插入记录之后使用该函数。
我们修改下逆向工程生成的代码:
注意:修改完代码后,需要向本地仓库安装taotao-manager-dao包。
注意:语句末尾去掉分号!!!
b) Service
参数:parentId、name
返回值:返回TaotaoResult,其中包装了TbContentCategory对象
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);
}