欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【实战】6-1 分类管理模块

程序员文章站 2024-03-22 17:28:16
...

前言

跟用户模块一样,也是先给出这个模块的一些概况,主要是接口设计,定义好输入与返回值,然后在代码中按照相关定义进行操作。

功能介绍

主要会有以下几个功能:

  1. 获取节点
  2. 增加节点
  3. 修改名字
  4. 获取分类ID
  5. 递归子节点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": "无权限"
    }