内容分类管理
需求
分析
- 内容分类管理相关代码片段在content-category.jsp中,类似商品类目管理。
- 内容管理使用easyui的tree组件,并使用弹出菜单进行增删改。
- 列表显示tree组件。
- 在鼠标移开之后,创建和重命名节点,url和参数为。
- 删除节点的url和参数。
总结
- 内容分类列表
- url:/content/category/list
- 请求参数:当前节点id(默认根节点0)
- 响应参数:子节点状态列表的json。
- 增加内容分类
- url:/content/category/create
- 请求参数:父节点id,当前节点名称
- 响应参数:TaotaoResult
- 重命名内容分类
- url:/content/category/update
- 请求参数:当前节点id,重命名后的名称
- 响应参数:TaotaoResult
- 删除节点
- url:/content/category/delete
- 请求参数:当前节点id
- 响应参数:TaotaoResult
开发
- 类似商品类目管理。
- 插入内容目录时,需要在TbContentCategoryMapper.xml的两条插入语句中使用selectKey标签,获取数据库自增主键,赋值给TbContentCategory的id域。
<selectKey keyProperty="id" resultType="long" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
- 增减内容目录结点时,需要考虑父节点是否还是叶节点。
public TaotaoResult addContentCategory(long parentId, String name) {
TbContentCategory contentCategory = new TbContentCategory();
contentCategory.setName(name);
contentCategory.setParentId(parentId);
contentCategory.setIsParent(false);
contentCategory.setSortOrder(1);
//状态值:1,正常;2,删除。用于逻辑删除,暂时不用
contentCategory.setStatus(1);
contentCategory.setCreated(new Date());
contentCategory.setUpdated(new Date());
contentCategoryMapper.insert(contentCategory);
//查看父节点,如果父节点是叶节点,则改为非叶节点
TbContentCategory parentCat = contentCategoryMapper.selectByPrimaryKey(parentId);
if (!parentCat.getIsParent()) {
parentCat.setIsParent(true);
contentCategoryMapper.updateByPrimaryKey(parentCat);
}
return TaotaoResult.ok(contentCategory);
}
public TaotaoResult deleteContentCategory(long id) {
//查询父节点
long parentId = contentCategoryMapper.selectByPrimaryKey(id).getParentId();
//删除节点
contentCategoryMapper.deleteByPrimaryKey(id);
//查看父节点是否还有其他子节点,如果没有则将parentId节点设为叶节点
TbContentCategoryExample example = new TbContentCategoryExample();
Criteria criteria = example.createCriteria();
criteria.andParentIdEqualTo(parentId);
List<TbContentCategory> list = contentCategoryMapper.selectByExample(example);
if (list.isEmpty()) {
TbContentCategory parentCat = contentCategoryMapper.selectByPrimaryKey(parentId);
parentCat.setIsParent(false);
contentCategoryMapper.updateByPrimaryKey(parentCat);
}
return TaotaoResult.ok();
}
- 删除结点不应携带parentId,只需要id。如果绕过前台发送和id 不匹配 的parentId,直接使用parentId会发生逻辑错误。如果在后台校验,则前台发送的这一字段多余。错误详情:https://blog.csdn.net/qq_40369829/article/details/79814514
内容管理
需求
分析
- 内容列表在content.jsp中。
- 内容列表使用easyui-datagrid组件,参考商品列表实现。
- 只有点击到内容分类的叶节点才更新categoryId参数,重新加载内容列表。
- 内容添加在content-add.jsp中。
- 内容添加需要使用kindeditor富文本编辑器,包括其中的图片上传组件,可参考添加商品和图片上传。
总结
- 内容列表
- url:/content/query/list
- 请求参数:内容分类id,分页参数page和rows
- 响应参数:datagrid组件需要的参数EasyUIDataGridResult
- 内容添加
- url:/content/save
- 请求参数:内容对象的json
- 响应参数:TaotaoResult
开发
- 类似添加商品。