【实战】6-1 分类管理模块
前言
跟用户模块一样,也是先给出这个模块的一些概况,主要是接口设计,定义好输入与返回值,然后在代码中按照相关定义进行操作。
功能介绍
主要会有以下几个功能:
- 获取节点
- 增加节点
- 修改名字
- 获取分类ID
- 递归子节点ID
学习目标
1、如何设计及封装无线层级的树状数据结构
这个还是要通过合理的DB设计,所以之前在数据表设计时每个类别都有一个父类别ID就是这个用的
2、递归算法的设计思想
这个学过算法的小伙伴都会了解的哈,这里看看老师有没有什么在生产实践中比较好的写法规范
3、如何处理复杂对象的排重
4、重写hashcode和equals的注意事项
这个不少面试都会有问的啊,重写equals就要重写hashcode,保证相同的对象hashcode也相同
数据表设计
ok,这个也在前面的章节讲到过了,大家自行回想就行,主要就是注意到设计了parent_id这一个字段,为的是可以设计出无限层级的分类表。sort_order是为了以后排序留的一个拓展。
接口设计
这里大概就是4个接口,没有用户模块那么多,这里把定义好的接口展示给大家。
1、获取品类子节点(平级)
/manage/category/get_category.do
/manage表示后台管理的,这个接口获取某一个类别的下一个级别的全部类别,注意只往下找一级,不会全部找出来
request
categoryId(default=0)通过SpringMVC的requestparam进行设置默认值
response
success
{
"status": 0,
"data":{
{
"id":2,
"parentId":1,
"name":"手机",
"status":true,
"sortOrder":3,
"createTime":1479622913000,
"updateTime":1479622913000
},
{
"id":4,
"parentId":1,
"name":"移动座机",
"status":true,
"sortOrder":5,
"createTime":1480059935000,
"updateTime":1480059935000
}
}
}
fail
{
"status": 10,
"msg": "用户未登录,请登录"
}
或
{
"status": 1,
"msg": "未找到该品类"
}
2、增加节点
/manage/category/add_category.do
request
parentId(default=0)
categoryName
response
success
{
"status": 0,
"msg": "添加品类成功"
}
fail
{
"status": 1,
"msg": "添加品类失败"
}
3、修改品类名字
/manage/category/set_category_name.do
request
categoryId
categoryName
response
success
{
"status": 0,
"msg": "更改品类名字成功"
}
fail
{
"status": 1,
"msg": "更改品类名字失败"
}
4、获取当前分类的id及递归子节点的categoryId
/manage/category/get_deep_category.do
这个跟第一个接口的区别好像是这个会返回所有,包括子节点的子节点一直下去,具体的看看代码怎么写的再做定论。
request
categoryId
response
success
{
"status": 0,
"data":{
100009,
100010,
100001,
100006,
100007,
100008
}
}
fail
{
"status": 1,
"msg": "无权限"
}
上一篇: 为什么重写equals方法时,必须重写hashcode方法
下一篇: 相关reactjs的相关知识