1、重命名
功能分析:
请求的url:/content/category/update
参数:id,当前节点id。name,重命名后的名称。
业务逻辑:根据id更新记录。
返回值:返回TaotaoResult.ok()
a) Dao
向tb_content_category表中更新数据,可以使用逆向工程生成的代码。
b) Service
参数:id,当前节点id。name,重命名后的名称。
返回值:返回TaotaoResult.ok()
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,如下图:
请求的url:/content/category/delete/
参数:id,当前节点的id。
响应的数据:json格式的数据。TaotaoResult。
业务逻辑:
1、根据id删除记录。
2、如果删除的节点是子节点,则直接删除;
再查看删除节点的父节点下是否还有子节点,如果没有需要把删除节点的父节点的is_parent改为false。
3、如果删除的节点是父节点,则子节点要级联删除。
两种解决方案:
方案1:如果判断是父节点则不允许删除。
方案2:递归删除。(不推荐使用)
a) Dao
从tb_content_category表中删除数据,可以使用逆向工程生成的代码。
b) Service
@Overridepublic 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;
}