文章

电商后台管理系统后端api接口文档


title: "电商管理后台 API 接口文档" date: "2022-02-01" categories:

  • "web" tags:
  • "vue"
  • "web"
  • "电商后台"

一、API V2 接口说明

  • 接口基准地址:http://www.tangxiaoyang.vip:8888/api/v2/

  • 服务端已开启 CORS 跨域支持

  • API V2 认证统一使用 Token 认证

  • 需要授权的 API ,必须在请求头中使用 Authorization 字段提供 token 令牌

  • 使用 HTTP Status Code 标识状态

  • 数据返回格式统一使用 JSON

1. 支持的请求方法

  • GET(SELECT):从服务器取出资源(一项或多项)。

  • POST(CREATE):在服务器新建一个资源。

  • PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。

  • PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。

  • DELETE(DELETE):从服务器删除资源。

  • HEAD:获取资源的元数据。

  • OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。

2. 通用返回状态说明

状态码含义说明
200OK请求成功
201CREATED创建成功
204DELETED删除成功
400BAD REQUEST请求的地址不存在或者包含不支持的参数
401UNAUTHORIZED未授权
403FORBIDDEN被禁止访问
404NOT FOUND请求的资源不存在
422Unprocesable entity[POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误
500INTERNAL SERVER ERROR内部错误

二、登录

1. 登录验证接口

  • 请求路径:login

  • 请求方法:post

  • 请求参数

参数名参数说明备注
username用户名不能为空
password密码不能为空
  • 响应参数
参数名参数说明备注
id用户 ID
rid用户角色 ID
username用户名
mobile手机号
email邮箱
token令牌基于 jwt 的令牌
  • 响应数据
{
    "data": {
        "id": 500,
        "rid": 0,
        "username": "admin",
        "mobile": "123",
        "email": "123@qq.com",
        "token": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjUwMCwicmlkIjowLCJpYXQiOjE1MTI1NDQyOTksImV4cCI6MTUxMjYzMDY5OX0.eGrsrvwHm-tPsO9r_pxHIQ5i5L1kX9RX444uwnRGaIM"
    },
    "meta": {
        "msg": "登录成功",
        "status": 200
    }
}

三、用户管理

1. 用户数据列表

  • 请求路径:users

  • 请求方法:get

  • 请求参数

参数名参数说明备注
query查询参数可以为空
pagenum当前页码不能为空
pagesize每页显示条数不能为空
  • 响应参数
参数名参数说明备注
total总记录数
pagenum当前页码
users用户数据集合
  • 响应数据
{
    "data": {
        "total": 5,
        "pagenum": 1,
        "users": [
            {
                "id": 25,
                "username": "tom",
                "mobile": "13951783475",
                "type": 1,
                "email": "1049901079@qq.com",
                "create_time": "2020-11-09T20:36:26.000Z",
                "mg_state": true, // 当前用户的状态
                "role_name": "超级管理员"
            }
        ]
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

2. 添加用户

  • 请求路径:users

  • 请求方法:post

  • 请求参数

参数名参数说明备注
username用户名称不能为空
password用户密码不能为空
email邮箱可以为空
mobile手机号可以为空
  • 响应参数
参数名参数说明备注
id用户 ID
rid用户角色 ID
username用户名
mobile手机号
email邮箱
  • 响应数据
{
    "data": {
        "id": 28,
        "username": "tom",
        "mobile": "test",
        "type": 1,
        "openid": "",
        "email": "test@test.com",
        "create_time": "2020-11-10T03:47:13.533Z",
        "modify_time": null,
        "is_delete": false,
        "is_active": false
    },
    "meta": {
        "msg": "用户创建成功",
        "status": 201
    }
}

3. 修改用户状态

  • 请求路径:users/:uId/state/:type

  • 请求方法:put

  • 请求参数

参数名参数说明备注
uId用户 ID不能为空携带在url中
type用户状态不能为空携带在url中,值为 true 或者 false
  • 响应数据
{
  "data": {
    "id": 566,
    "rid": 30,
    "username": "admin",
    "mobile": "123456",
    "email": "bb@itany.com",
    "mg_state": 0
  },
  "meta": {
    "msg": "设置状态成功",
    "status": 200
  }
}

4. 根据 ID 查询用户信息

  • 请求路径:users/:id

  • 请求方法:get

  • 请求参数

参数名参数说明备注
id用户 ID不能为空携带在url中
  • 响应参数
参数名参数说明备注
id用户 ID
role_id角色 ID
mobile手机号
email邮箱
  • 响应数据
{
    "data": {
        "id": 503,
        "username": "admin3",
        "role_id": 0,
        "mobile": "00000",
        "email": "new@new.com"
    },
    "meta": {
        "msg": "查询成功",
        "status": 200
    }
}

5. 编辑提交用户

  • 请求路径:users/:id

  • 请求方法:put

  • 请求参数

参数名参数说明备注
id用户 id不能为空 参数是url参数:id
email邮箱可以为空
mobile手机号可以为空
  • 响应参数
参数名参数说明备注
id用户 ID
role_id角色 ID
mobile手机号
email邮箱
  • 响应数据
/* 200表示成功,500表示失败 */
{
    "data": {
        "id": 503,
        "username": "admin3",
        "role_id": 0,
        "mobile": "111",
        "email": "123@123.com"
    },
    "meta": {
        "msg": "更新成功",
        "status": 200
    }
}

6. 删除单个用户

  • 请求路径:users/:id

  • 请求方法:delete

  • 请求参数

参数名参数说明备注
id用户 id不能为空参数是url参数:id
  • 响应参数

  • 响应数据

{
    "data": null,
    "meta": {
        "msg": "删除成功",
        "status": 200
    }
}

7. 分配用户角色

  • 请求路径:users/:id/role

  • 请求方法:put

  • 请求参数

参数名参数说明备注
id用户 ID不能为空参数是url参数:id
rid角色 id不能为空参数body参数
  • 响应参数
参数名参数说明备注
id用户 ID
role_id角色 ID
mobile手机号
email邮箱
  • 响应数据
{
    "data": {
        "id": 508,
        "rid": "30",
        "username": "asdf1",
        "mobile": "123123",
        "email": "adfsa@qq.com"
    },
    "meta": {
        "msg": "设置角色成功",
        "status": 200
    }
}

四、权限管理

1. 所有权限列表

  • 请求路径:rights/:type

  • 请求方法:get

  • 请求参数

参数名参数说明备注
type类型值 list 或 tree , list 列表显示权限, tree 树状显示权限,参数是url参数:type
  • 响应参数
参数名参数说明备注
id权限 ID
authName权限说明
level权限层级
pid权限父 ID
path对应访问路径
  • 响应数据 type=list
  {
    "data": [
        {
            "id": 101,
            "authName": "商品管理",
            "level": "0",
            "pid": 0,
            "path": null
        },
        {
            "id": 102,
            "authName": "订单管理",
            "level": "0",
            "pid": 0,
            "path": null
        }
    ],
    "meta": {
        "msg": "获取权限列表成功",
        "status": 200
    }
}

type=tree

  {
    data: [
      {
        id: 101,
        authName: '商品管理',
        path: null,
        pid: 0,
        children: [
          {
            id: 104,
            authName: '商品列表',
            path: null,
            pid: 101,
            children: [
              {
                id: 105,
                authName: '添加商品',
                path: null,
                pid: '104,101'
              }
            ]
          }
        ]
      }
    ],
    meta: {
      msg: '获取权限列表成功',
      status: 200
    }
  }

2. 左侧菜单权限

  • 请求路径:menus

  • 请求方法:get

  • 响应数据

{
    "data":
        {
            "id": 101,
            "authName": "商品管理",
            "path": null,
            "children": [
                {
                    "id": 104,
                    "authName": "商品列表",
                    "path": null,
                    "children": []
                }
            ]
        }
    "meta": {
        "msg": "获取菜单列表成功",
        "status": 200
    }
}

五、角色管理

1. 角色列表

  • 请求路径:roles

  • 请求方法:get

  • 响应数据说明

    • 第一层为角色信息

    • 第二层开始为权限说明,权限一共有 3 层权限

    • 最后一层权限,不包含 children 属性

  • 响应数据

{
    "data": [
        {
            "id": 30,
            "roleName": "主管",
            "roleDesc": "技术负责人",
            "children": [
                {
                    "id": 101,
                    "authName": "商品管理",
                    "path": null,
                    "children": [
                        {
                            "id": 104,
                            "authName": "商品列表",
                            "path": null,
                            "children": [
                                {
                                    "id": 105,
                                    "authName": "添加商品",
                                    "path": null
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ],
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

2. 添加角色

  • 请求路径:roles

  • 请求方法:post

  • 请求参数

参数名参数说明备注
roleName角色名称不能为空
roleDesc角色描述可以为空
  • 响应参数
参数名参数说明备注
roleId角色 ID
roleName角色名称
roleDesc角色描述
  • 响应数据
{
    "data": {
        "roleId": 40,
        "roleName": "admin2",
        "roleDesc": "admin2Desc"
    },
    "meta": {
        "msg": "创建成功",
        "status": 201
    }
}

3. 根据 ID 查询角色

  • 请求路径:roles/:id

  • 请求方法:get

  • 请求参数

参数名参数说明备注
:id角色 ID不能为空携带在url中
  • 响应参数
参数名参数说明备注
roleId角色 ID
roleName角色名称
roleDesc角色描述
  • 响应数据
{
    "data": {
        "roleId": 31,
        "roleName": "测试角色",
        "roleDesc": "测试负责人"
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

4. 编辑提交角色

  • 请求路径:roles/:id

  • 请求方法:put

  • 请求参数

参数名参数说明备注
:id角色 ID不能为空携带在url中
roleName角色名称不能为空
roleDesc角色描述可以为空
  • 响应数据
{
    "data": {
        "roleId": 31,
        "roleName": "测试角色",
        "roleDesc": "测试角色描述"
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

5. 删除角色

  • 请求路径:roles/:id

  • 请求方法:delete

  • 请求参数

参数名参数说明备注
:id角色 ID不能为空携带在url中
  • 响应数据
{
    "data": null,
    "meta": {
        "msg": "删除成功",
        "status": 200
    }
}

6. 角色授权

  • 请求路径:roles/:roleId/rights

  • 请求方法:post

  • 请求参数:通过 请求体 发送给后端

参数名参数说明备注
:roleId角色 ID不能为空携带在url中
rids权限 ID 列表(字符串), 分割的权限 ID 列表(获取所有被选中、叶子节点的key和半选中节点的key, 包括 1,2,3级节点)
  • 响应数据
{
    "data": null,
    "meta": {
        "msg": "更新成功",
        "status": 200
    }
}

7. 删除角色指定权限

  • 请求路径:roles/:roleId/rights/:rightId

  • 请求方法:delete

  • 请求参数 参数名 参数说明 备注 :roleId 角色 ID 不能为空携带在url中 :rightId 权限 ID 不能为空携带在url中

  • 响应数据说明

    • 返回的data, 是当前角色下最新的权限数据
  • 响应数据

  {
      "data": [
          {
              "id": 101,
              "authName": "商品管理",
              "path": null,
              "children": [
                  {
                      "id": 104,
                      "authName": "商品列表",
                      "path": null,
                      "children": [
                          {
                              "id": 105,
                              "authName": "添加商品",
                              "path": null
                          },
                          {
                              "id": 116,
                              "authName": "修改",
                              "path": null
                          }
                      ]
                  }
              ]
          }
      ],
      "meta": {
          "msg": "取消权限成功",
          "status": 200
      }
  }

六、商品分类管理

1. 商品分类数据列表

  • 请求路径:categories

  • 请求方法:get

  • 请求参数

参数名参数说明备注
type[1,2,3]值:1,2,3 分别表示显示一层二层三层分类列表
【可选参数】如果不传递,则默认获取所有级别的分类
pagenum当前页码值【可选参数】如果不传递,则默认获取所有分类
pagesize每页显示多少条数据【可选参数】如果不传递,则默认获取所有分类
  • 响应参数
参数名参数说明备注
cat_id分类 ID
cat_name分类名称
cat_pid分类父 ID
cat_level分类当前层级
  • 响应数据
{
    "data": [
        {
            "cat_id": 1,
            "cat_name": "大家电",
            "cat_pid": 0,
            "cat_level": 0,
            "cat_deleted": false,
            "children": [
                {
                    "cat_id": 3,
                    "cat_name": "电视",
                    "cat_pid": 1,
                    "cat_level": 1,
                    "cat_deleted": false,
                    "children": [
                        {
                            "cat_id": 6,
                            "cat_name": "曲面电视",
                            "cat_pid": 3,
                            "cat_level": 2,
                            "cat_deleted": false
                        },
                        {
                            "cat_id": 7,
                            "cat_name": "海信",
                            "cat_pid": 3,
                            "cat_level": 2,
                            "cat_deleted": false
                        }
                    ]
                }
            ]
        }
    ],
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

2. 添加分类

  • 请求路径:categories

  • 请求方法:post

  • 请求参数

参数名参数说明备注
cat_pid分类父 ID不能为空,如果要添加一级分类,则父分类Id应该设置为 0
cat_name分类名称不能为空
cat_level分类层级不能为空,0表示一级分类;1表示二级分类;2表示三级分类
  • 响应数据
{
    "data": {
        "cat_id": 62,
        "cat_name": "相框",
        "cat_pid": "1",
        "cat_level": "1"
    },
    "meta": {
        "msg": "创建成功",
        "status": 201
    }
}

3. 根据 id 查询分类

  • 请求路径:categories/:id

  • 请求方法:get

  • 请求参数

参数名参数说明备注
:id分类 ID不能为空携带在url中
  • 响应数据
{
    "data": {
        "cat_id": 3,
        "cat_name": "厨卫电器",
        "cat_pid": 0,
        "cat_level": 0
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

4. 编辑提交分类

  • 请求路径:categories/:id

  • 请求方法:put

  • 请求参数

参数名参数说明备注
:id分类 ID不能为空携带在url中
cat_name分类名称不能为空【此参数,放到请求体中】
  • 响应数据
{
    "data": {
        "cat_id": 22,
        "cat_name": "自拍杆",
        "cat_pid": 7,
        "cat_level": 2
    },
    "meta": {
        "msg": "更新成功",
        "status": 200
    }
}

5. 删除分类

  • 请求路径:categories/:id

  • 请求方法:delete

  • 请求参数

参数名参数说明备注
:id分类 ID不能为空携带在url中
  • 响应数据
{
    "data": null,
    "meta": {
        "msg": "删除成功",
        "status": 200
    }
}

七、分类参数管理

1. 参数列表

  • 请求路径:categories/:id/attributes

  • 请求方法:get

  • 请求参数

参数名参数说明备注
:id分类 ID不能为空携带在url中
selmany或only不能为空,many表示动态参数,only表示静态参数(也称为静态属性)
  • 响应参数
参数名参数说明备注
attr_id分类参数 ID
attr_name分类参数名称
cat_id分类参数所属分类
attr_sel分类参数的类型,many表示动态参数,only表示静态属性
attr_writelist表示从列表选择(动态参数),manual表示手工录入(静态属性)
attr_vals分类参数的明细,如果是动态参数,则该值是以空格分隔的字符串
  • 响应数据
{
    "data": [
        {
            "attr_id": 1,
            "attr_name": "cpu",
            "cat_id": 22,
            "attr_sel": "many",
            "attr_write": "list",
            "attr_vals": "4K高清 5K高清 6K高清"
        }
    ],
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

2. 添加动态参数或静态属性

  • 请求路径:categories/:id/attributes

  • 请求方法:post

  • 请求参数

参数名参数说明备注
:id分类 ID不能为空携带在url中
attr_name参数名称不能为空
attr_selmany或only不能为空
  • 响应数据
{
    "data": {
        "attr_id": 44,
        "attr_name": "测试参数",
        "cat_id": "1",
        "attr_sel": "many",
        "attr_write": "list",
        "attr_vals": "a,b,c"
    },
    "meta": {
        "msg": "创建成功",
        "status": 201
    }
}

3. 根据 ID 查询参数

  • 请求路径:categories/:id/attributes/:attrId

  • 请求方法:get

  • 请求参数

参数名参数说明备注
:id分类 ID不能为空携带在url中
:attrId属性 ID不能为空携带在url中
attr_selmany或only不能为空
  • 响应数据
{
    "data": {
        "attr_id": 1,
        "attr_name": "cpu",
        "cat_id": 22,
        "attr_sel": "only",
        "attr_write": "manual",
        "attr_vals": "ffff"
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

4. 更新参数及明细

  • 请求路径:categories/:id/attributes/:attrId

  • 请求方法:put

  • 请求参数

参数名参数说明备注
:id分类 ID不能为空携带在url中
:attrId参数 ID不能为空携带在url中
attr_name参数名称不能为空,携带在请求体
attr_selmany或only不能为空,携带在请求体
attr_vals参数的明细可选参数,携带在请求体
  • 响应数据
{
    "data": {
        "attr_id": 9,
        "attr_name": "测试更新",
        "cat_id": "43",
        "attr_sel": "only",
        "attr_write": "manual",
        "attr_vals": "abc"
    },
    "meta": {
        "msg": "更新成功",
        "status": 200
    }
}

5. 删除参数

  • 请求路径: categories/:id/attributes/:attrid

  • 请求方法:delete

  • 请求参数

参数名参数说明备注
:id分类 ID不能为空携带在url中
:attrid参数 ID不能为空携带在url中
  • 响应数据
{
    "data": null,
    "meta": {
        "msg": "删除成功",
        "status": 200
    }
}

八、商品管理

1. 商品列表数据

  • 请求路径:goods

  • 请求方法:get

  • 请求参数

参数名参数说明备注
query查询参数可以为空
pagenum当前页码不能为空
pagesize每页显示条数不能为空
  • 响应参数
参数名参数说明备注
total总共商品条数
pagenum当前商品页数
goods_id商品 ID
goods_name商品名称
goods_price价格
goods_number数量
goods_weight重量不能为空
goods_state商品状态商品状态 0: 未通过 1: 审核中 2: 已审核
add_time添加时间
upd_time更新时间
hot_mumber热销品数量
is_promote是否是热销品
  • 响应数据
{
    "data": {
        "total": 50,
        "pagenum": "1",
        "goods": [
            {
                "goods_id": 144,
                "goods_name": "iphone",
                "goods_price": 1,
                "goods_number": 1,
                "goods_weight": 1,
                "goods_state": null,
                "add_time": 1512954923,
                "upd_time": 1512954923,
                "hot_mumber": 0,
                "is_promote": false
            }
        ]
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

2. 添加商品

  • 请求路径:goods

  • 请求方法:post

  • 请求参数

参数名参数说明备注
goods_name商品名称不能为空
goods_cat,逗号分割的分类列表不能为空
goods_price价格不能为空
goods_number数量不能为空
goods_weight重量不能为空
goods_introduce介绍可以为空
pics上传的图片临时路径(对象)可以为空
attrs商品的参数(数组),包含 动态参数静态属性可以为空
  • 请求数据
{
  "goods_name":"test_goods_name2",
  "goods_cat": "1,2,3",
  "goods_price":20,
  "goods_number":30,
  "goods_weight":40,
  "goods_introduce":"abc",
  "pics":[
    {"pic":"/tmp_uploads/30f08d52c551ecb447277eae232304b8"}
    ],
  "attrs":[
    {
      "attr_id":15,
      "attr_value":"ddd"
    },
    {
      "attr_id":15,
      "attr_value":"eee"
    }
    ]
}
  • 响应参数
参数名参数说明备注
total总共商品条数
pagenum当前商品页数
goods_id商品 ID
goods_cat以为','分割的分类列表
goods_name商品名称
goods_price价格
goods_number数量
goods_weight重量不能为空
goods_state商品状态商品状态 0: 未通过 1: 审核中 2: 已审核
add_time添加时间
upd_time更新时间
hot_mumber热销品数量
is_promote是否是热销品
pics上传的图片临时路径(对象)pics_id:图片 ID,goods_id:商品 ID,pics_big:大图,pics_mid:中图,pics_sma:小图
attrs商品的参数(数组)goods_id:商品 ID,attr_value:当前商品的参数值,add_price:浮动价格,attr_vals:预定义的参数值,attr_sel:手动输入,还是单选
  • 响应数据
{
    "data": {
        "goods_id": 145,
        "goods_name": "test_goods_name2",
        "goods_price": 20,
        "cat_id": 1,
        "goods_number": 30,
        "goods_weight": 40,
        "goods_introduce": "abc",
        "goods_big_logo": "",
        "goods_small_logo": "",
        "goods_state": 1,
        "add_time": 1512962370,
        "upd_time": 1512962370,
        "hot_mumber": 0,
        "is_promote": false,
        "pics": [
            {
                "pics_id": 397,
                "goods_id": 145,
                "pics_big": "uploads/goodspics/big_30f08d52c551ecb447277eae232304b8",
                "pics_mid": "uploads/goodspics/mid_30f08d52c551ecb447277eae232304b8",
                "pics_sma": "uploads/goodspics/sma_30f08d52c551ecb447277eae232304b8"
            }
        ],
        "attrs": [
            {
                "goods_id": 145,
                "attr_id": 15,
                "attr_value": "ddd",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            },
            {
                "goods_id": 145,
                "attr_id": 15,
                "attr_value": "eee",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            }
        ]
    },
    "meta": {
        "msg": "创建商品成功",
        "status": 201
    }
}

3. 根据 ID 查询商品

  • 请求路径:goods/:id

  • 请求方法:get

  • 请求参数

参数名参数说明备注
id商品 ID不能为空携带在url中
  • 响应参数
参数名参数说明备注
goods_id商品 ID
goods_name商品名称
goods_price价格
goods_number数量
goods_weight重量不能为空
goods_state商品状态商品状态 0: 未通过 1: 审核中 2: 已审核
goods_introduce介绍
goods_cat以为','分割的分类列表
add_time添加时间
upd_time更新时间
hot_mumber热销品数量
is_promote是否是热销品
pics上传的图片临时路径(对象)pics_id:图片 ID,goods_id:商品 ID,pics_big:大图,pics_mid:中图,pics_sma:小图
attrs商品的参数(数组)goods_id:商品 ID,attr_value:当前商品的参数值,add_price:浮动价格,attr_vals:预定义的参数值,attr_sel:手动输入,还是单选
  • 响应数据
{
    "data": {
        "goods_id": 145,
        "goods_name": "test_goods_name2",
        "goods_price": 20,
        "goods_number": 30,
        "goods_weight": 40,
        "goods_introduce": "abc",
        "goods_big_logo": "",
        "goods_small_logo": "",
        "goods_state": 1,
        "add_time": 1512962370,
        "upd_time": 1512962370,
        "hot_mumber": 0,
        "is_promote": false,
        "pics": [
            {
                "pics_id": 397,
                "goods_id": 145,
                "pics_big": "uploads/goodspics/big_30f08d52c551ecb447277eae232304b8",
                "pics_mid": "uploads/goodspics/mid_30f08d52c551ecb447277eae232304b8",
                "pics_sma": "uploads/goodspics/sma_30f08d52c551ecb447277eae232304b8"
            }
        ],
        "attrs": [
            {
                "goods_id": 145,
                "attr_id": 15,
                "attr_value": "ddd",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            },
            {
                "goods_id": 145,
                "attr_id": 15,
                "attr_value": "eee",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            }
        ]
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

4. 编辑提交商品

  • 请求路径:goods/:id

  • 请求方法:put

  • 请求参数

参数名参数说明备注
id商品 ID不能为空携带在url中
goods_name商品名称不能为空
goods_cat以为','分割的分类列表不能为空
goods_price价格不能为空
goods_number数量不能为空
goods_weight重量不能为空
goods_introduce介绍可以为空
pics上传的图片临时路径(对象)可以为空
attrs商品的参数(数组)可以为空
  • 请求数据
{
  "goods_name":"test_goods_name2",
  "goods_price":20,
  "goods_number":30,
  "goods_weight":40,
  "goods_introduce":"abc",
  "pics":[
    {"pic":"/tmp_uploads/30f08d52c551ecb447277eae232304b8"}
    ],
  "attrs":[
    {
      "attr_id":15,
      "attr_value":"ddd"
    },
    {
      "attr_id":15,
      "attr_value":"eee"
    }
    ]
}
  • 响应参数
参数名参数说明备注
total总共商品条数
pagenum当前商品页数
goods_id商品 ID
goods_name商品名称
goods_price价格
goods_number数量
goods_weight重量不能为空
goods_state商品状态商品状态 0: 未通过 1: 审核中 2: 已审核
add_time添加时间
upd_time更新时间
hot_mumber热销品数量
is_promote是否是热销品
pics上传的图片临时路径(对象)pics_id:图片 ID,goods_id:商品 ID,pics_big:大图,pics_mid:中图,pics_sma:小图
attrs商品的参数(数组)goods_id:商品 ID,attr_value:当前商品的参数值,add_price:浮动价格,attr_vals:预定义的参数值,attr_sel:手动输入,还是单选,
  • 响应数据
{
    "data": {
        "goods_id": 145,
        "goods_name": "test_goods_name2",
        "goods_price": 20,
        "goods_number": 30,
        "goods_weight": 40,
        "goods_introduce": "abc",
        "goods_big_logo": "",
        "goods_small_logo": "",
        "goods_state": 1,
        "add_time": 1512962370,
        "upd_time": 1512962370,
        "hot_mumber": 0,
        "is_promote": false,
        "pics": [
            {
                "pics_id": 397,
                "goods_id": 145,
                "pics_big": "uploads/goodspics/big_30f08d52c551ecb447277eae232304b8",
                "pics_mid": "uploads/goodspics/mid_30f08d52c551ecb447277eae232304b8",
                "pics_sma": "uploads/goodspics/sma_30f08d52c551ecb447277eae232304b8"
            }
        ],
        "attrs": [
            {
                "goods_id": 145,
                "attr_id": 15,
                "attr_value": "ddd",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            },
            {
                "goods_id": 145,
                "attr_id": 15,
                "attr_value": "eee",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            }
        ]
    },
    "meta": {
        "msg": "更新商品成功",
        "status": 200
    }
}

5. 删除商品

  • 请求路径:goods/:id

  • 请求方法:delete

  • 请求参数

参数名参数说明备注
id商品 ID不能为空携带在url中
  • 响应数据
{
    "data": null,
    "meta": {
        "msg": "删除成功",
        "status": 200
    }
}

###同步商品图片

  • 请求路径:goods/:id/pics

  • 请求方法:put

  • 请求参数

参数名参数说明备注
id商品 ID不能为空携带在url中
pics商品图片集合如果有 pics_id 字段会保留该图片,如果没有 pics_id 但是有 pic 字段就会新生成图片数据
  • 请求数据
;[
  { pic: 'tmp_uploads/db28f6316835836e97653b5c75e418be.png' },
  {
    pics_id: 397,
    goods_id: 145,
    pics_big: 'uploads/goodspics/big_30f08d52c551ecb447277eae232304b8',
    pics_mid: 'uploads/goodspics/mid_30f08d52c551ecb447277eae232304b8',
    pics_sma: 'uploads/goodspics/sma_30f08d52c551ecb447277eae232304b8'
  }
]
  • 响应数据
{
    "data": {
        "goods_id": 96,
        "goods_name": "iphoneXX",
        "goods_price": 2,
        "goods_number": 22,
        "goods_weight": 22,
        "goods_introduce": null,
        "goods_big_logo": "./uploads/goods/20201113/483a3b8e99e534ec3e4312dbbaee7c9d.jpg",
        "goods_small_logo": "./uploads/goods/20201113/small_483a3b8e99e534ec3e4312dbbaee7c9d.jpg",
        "goods_state": 0,
        "is_del": "1",
        "add_time": 1510045904,
        "upd_time": 1512635159,
        "delete_time": 1512635159,
        "hot_mumber": 0,
        "is_promote": false,
        "pics": [
            {
                "pics_id": 383,
                "goods_id": 96,
                "pics_big": "uploads/goodspics/big_6f5750132abd3f5b2b93dd722fcde653.jpg",
                "pics_mid": "uploads/goodspics/mid_6f5750132abd3f5b2b93dd722fcde653.jpg",
                "pics_sma": "uploads/goodspics/sma_6f5750132abd3f5b2b93dd722fcde653.jpg"
            }
        ],
        "attrs": [
            {
                "goods_id": 96,
                "attr_id": 15,
                "attr_value": "eee",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            },
            {
                "goods_id": 96,
                "attr_id": 15,
                "attr_value": "ddd",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            }
        ]
    },
    "meta": {
        "msg": "更新成功",
        "status": 200
    }
}

###同步商品属性

  • 请求路径:goods/:id/attributes

  • 请求方法:put

  • 请求参数

参数名参数说明备注
id商品 ID不能为空携带在url中
  • 请求数据
;[
  {
    attr_id: 15,
    attr_value: 'ddd'
  },
  {
    attr_id: 15,
    attr_value: 'eee'
  }
]
  • 响应数据
{
    "data": {
        "goods_id": 96,
        "goods_name": "iphoneXX",
        "goods_price": 2,
        "goods_number": 22,
        "goods_weight": 22,
        "goods_introduce": null,
        "goods_big_logo": "./uploads/goods/20201113/483a3b8e99e534ec3e4312dbbaee7c9d.jpg",
        "goods_small_logo": "./uploads/goods/20201113/small_483a3b8e99e534ec3e4312dbbaee7c9d.jpg",
        "goods_state": 0,
        "is_del": "1",
        "add_time": 1510045904,
        "upd_time": 1512635159,
        "delete_time": 1512635159,
        "hot_mumber": 0,
        "is_promote": false,
        "pics": [
            {
                "pics_id": 383,
                "goods_id": 96,
                "pics_big": "uploads/goodspics/big_6f5750132abd3f5b2b93dd722fcde653.jpg",
                "pics_mid": "uploads/goodspics/mid_6f5750132abd3f5b2b93dd722fcde653.jpg",
                "pics_sma": "uploads/goodspics/sma_6f5750132abd3f5b2b93dd722fcde653.jpg"
            }
        ],
        "attrs": [
            {
                "goods_id": 96,
                "attr_id": 15,
                "attr_value": "eee",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            },
            {
                "goods_id": 96,
                "attr_id": 15,
                "attr_value": "ddd",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            }
        ]
    },
    "meta": {
        "msg": "更新成功",
        "status": 200
    }
}

###商品图片处理必须安装 GraphicsMagick

  • linux
apt-get install GraphicsMagick
  • Mac OS X
brew install GraphicsMagick

6. 图片上传

  • 请求路径:upload

  • 请求方法:post

  • 请求参数

参数名参数说明备注
file上传文件
  • 响应数据
{
    "data": {
        "tmp_path": "tmp_uploads/ccfc5179a914e94506bcbb7377e8985f.png",
        "url": "http://127.0.0.1:8888tmp_uploads/ccfc5179a914e94506bcbb7377e8985f.png"
    },
    "meta": {
        "msg": "上传成功",
        "status": 200
    }
}

九、订单管理

1. 订单数据列表

  • 请求路径:orders

  • 请求方法:get

  • 请求参数

参数名参数说明备注
query查询参数可以为空
pagenum当前页码可以为空,默认为1
pagesize每页显示条数可以为空,省略时返回所有订单
user_id用户 ID可以为空
pay_status支付状态可以为空
is_send是否发货可以为空
order_fapiao_title['个人','公司']可以为空
order_fapiao_company公司名称可以为空
order_fapiao_content发票内容可以为空
consignee_addr收货地址可以为空
  • 响应数据
{
    "data": {
        "total": 1,
        "pagenum": "1",
        "goods": [
            {
                "order_id": 47,
                "user_id": 133,
                "order_number": "59e7502d7993d",
                "order_price": 322,
                "order_pay": "1",
                "is_send": "是",
                "trade_no": "",
                "order_fapiao_title": "个人",
                "order_fapiao_company": "",
                "order_fapiao_content": "办公用品",
                "consignee_addr": "江苏省南京市秦淮区龙蟠中路666号",
                "pay_status": "1",
                "create_time": 1508331565,
                "update_time": 1508331565
            }
        ]
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

2. 修改订单状态

  • 请求路径:orders/:id

  • 请求方法:put

  • 请求参数

参数名参数说明备注
id订单 ID不能为空携带在url中
is_send订单是否发货1:已经发货,0:未发货
order_pay订单支付支付方式 0 未支付 1 支付宝 2 微信 3 银行卡
order_price订单价格
order_number订单数量
pay_status支付状态订单状态: 0 未付款、1 已付款
  • 请求数据说明

    • 所有请求数据都是增量更新,如果参数不填写,就不会更新该字段
  • 响应数据

{
    "data": {
        "order_id": 67,
        "user_id": 1,
        "order_number": "itany-g7kmck71vjaujfgoi",
        "order_price": 20,
        "order_pay": "0",
        "is_send": "否",
        "trade_no": "",
        "order_fapiao_title": "个人",
        "order_fapiao_company": "",
        "order_fapiao_content": "",
        "consignee_addr": "",
        "pay_status": "0",
        "create_time": 1512533560,
        "update_time": 1512533560,
        "goods": [
            {
                "id": 82,
                "order_id": 67,
                "goods_id": 96,
                "goods_price": 333,
                "goods_number": 2,
                "goods_total_price": 999
            },
            {
                "id": 83,
                "order_id": 67,
                "goods_id": 95,
                "goods_price": 666,
                "goods_number": 5,
                "goods_total_price": 999
            }
        ]
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

3. 查看订单详情

  • 请求路径:orders/:id

  • 请求方法:get

  • 请求参数

参数名参数说明备注
id订单 ID不能为空携带在url中
  • 响应数据
{
    "data": {
        "order_id": 67,
        "user_id": 1,
        "order_number": "itany-g7kmck71vjaujfgoi",
        "order_price": 20,
        "order_pay": "0",
        "is_send": "否",
        "trade_no": "",
        "order_fapiao_title": "个人",
        "order_fapiao_company": "",
        "order_fapiao_content": "",
        "consignee_addr": "",
        "pay_status": "0",
        "create_time": 1512533560,
        "update_time": 1512533560,
        "goods": [
            {
                "id": 82,
                "order_id": 67,
                "goods_id": 96,
                "goods_price": 333,
                "goods_number": 2,
                "goods_total_price": 999
            },
            {
                "id": 83,
                "order_id": 67,
                "goods_id": 95,
                "goods_price": 666,
                "goods_number": 5,
                "goods_total_price": 999
            }
        ]
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

4. 修改地址

  • 请求路径:orders/:id/address

  • 请求方法:put

  • 请求参数

参数名参数说明备注
id订单 ID不能为空携带在url中
consignee_addr收货地址可以为空
  • 响应数据
{
    "data": {},
    "meta": {
        "msg": "修改地址成功",
        "status": 200
    }
}

5. 查看物流信息

  • 请求路径:/kuaidi/:id

  • 请求方法:get

  • 物流单号:815294206237577

  • 响应数据:

  {
      "meta":{
          "status":200,
          "message":"获取物流信息成功!"
      },
      "data":[
          {
              "time":"2020-11-15 12:39:56",
              "ftime":"2020-11-15 12:39:56",
              "context":"已签收,签收人是 汤小洋 先生/女士,如有疑问请联系派件员阿奇(13805148888),如您未收到此快递,请拨打投诉电话:15294207777,感谢使用申通快递,期待再次为您服务",
              "location":null
          },
          {
              "time":"2020-11-15 08:46:54",
              "ftime":"2020-11-15 08:46:54",
              "context":"上海浦东寒亭营业厅-寒亭阿奇(13805148888)-派件中",
              "location":null
          },
          {
              "time":"2020-11-15 08:38:57",
              "ftime":"2020-11-15 08:38:57",
              "context":"已到达-上海浦东寒亭营业厅",
              "location":null
          },
          {
              "time":"2020-11-15 06:38:13",
              "ftime":"2020-11-15 06:38:13",
              "context":"已到达-上海浦东寒亭营业厅",
              "location":null
          },
          {
              "time":"2020-11-14 20:56:45",
              "ftime":"2020-11-14 20:56:45",
              "context":"上海浦东转运中心-已发往-上海浦东寒亭公司",
              "location":null
          },
          {
              "time":"2020-11-14 20:52:44",
              "ftime":"2020-11-14 20:52:44",
              "context":"已到达-上海浦东转运中心",
              "location":null
          },
          {
              "time":"2020-11-14 17:43:48",
              "ftime":"2020-11-14 17:43:48",
              "context":"已到达-上海浦东转运中心",
              "location":null
          },
          {
              "time":"2020-11-14 10:53:46",
              "ftime":"2020-11-14 10:53:46",
              "context":"上海浦东转运中心-已发往-上海浦东转运中心",
              "location":null
          },
          {
              "time":"2020-11-14 10:43:31",
              "ftime":"2020-11-14 10:43:31",
              "context":"已到达-上海浦东转运中心",
              "location":null
          },
          {
              "time":"2020-11-14 02:43:20",
              "ftime":"2020-11-14 02:43:20",
              "context":"江苏苏州转运中心-已发往-上海浦东转运中心",
              "location":null
          },
          {
              "time":"2020-11-14 02:41:40",
              "ftime":"2020-11-14 02:41:40",
              "context":"已到达-江苏苏州转运中心",
              "location":null
          },
          {
              "time":"2020-11-13 16:28:13",
              "ftime":"2020-11-13 16:28:13",
              "context":"江苏南京转运中心-已发往-江苏苏州转运中心",
              "location":null
          },
          {
              "time":"2020-11-13 15:03:30",
              "ftime":"2020-11-13 15:03:30",
              "context":"南京IT教育公司-已发往-江苏南京转运中心",
              "location":null
          },
          {
              "time":"2020-11-13 14:47:56",
              "ftime":"2020-11-13 14:47:56",
              "context":"南京IT教育公司-已发往-江苏南京转运中心",
              "location":null
          },
          {
              "time":"2020-11-13 14:37:06",
              "ftime":"2020-11-13 14:37:06",
              "context":"南京IT教育公司-城东汪小主宠物店-已收件",
              "location":null
          }
      ]
  }

一、API V2 接口说明

  • 接口基准地址:http://www.tangxiaoyang.vip:8888/api/v2/

  • 服务端已开启 CORS 跨域支持

  • API V2 认证统一使用 Token 认证

  • 需要授权的 API ,必须在请求头中使用 Authorization 字段提供 token 令牌

  • 使用 HTTP Status Code 标识状态

  • 数据返回格式统一使用 JSON

1. 支持的请求方法

  • GET(SELECT):从服务器取出资源(一项或多项)。

  • POST(CREATE):在服务器新建一个资源。

  • PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。

  • PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。

  • DELETE(DELETE):从服务器删除资源。

  • HEAD:获取资源的元数据。

  • OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。

2. 通用返回状态说明

状态码含义说明
200OK请求成功
201CREATED创建成功
204DELETED删除成功
400BAD REQUEST请求的地址不存在或者包含不支持的参数
401UNAUTHORIZED未授权
403FORBIDDEN被禁止访问
404NOT FOUND请求的资源不存在
422Unprocesable entity[POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误
500INTERNAL SERVER ERROR内部错误

二、登录

1. 登录验证接口

  • 请求路径:login

  • 请求方法:post

  • 请求参数

参数名参数说明备注
username用户名不能为空
password密码不能为空
  • 响应参数
参数名参数说明备注
id用户 ID
rid用户角色 ID
username用户名
mobile手机号
email邮箱
token令牌基于 jwt 的令牌
  • 响应数据
{
    "data": {
        "id": 500,
        "rid": 0,
        "username": "admin",
        "mobile": "123",
        "email": "123@qq.com",
        "token": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjUwMCwicmlkIjowLCJpYXQiOjE1MTI1NDQyOTksImV4cCI6MTUxMjYzMDY5OX0.eGrsrvwHm-tPsO9r_pxHIQ5i5L1kX9RX444uwnRGaIM"
    },
    "meta": {
        "msg": "登录成功",
        "status": 200
    }
}

三、用户管理

1. 用户数据列表

  • 请求路径:users

  • 请求方法:get

  • 请求参数

参数名参数说明备注
query查询参数可以为空
pagenum当前页码不能为空
pagesize每页显示条数不能为空
  • 响应参数
参数名参数说明备注
total总记录数
pagenum当前页码
users用户数据集合
  • 响应数据
{
    "data": {
        "total": 5,
        "pagenum": 1,
        "users": [
            {
                "id": 25,
                "username": "tom",
                "mobile": "13951783475",
                "type": 1,
                "email": "1049901079@qq.com",
                "create_time": "2020-11-09T20:36:26.000Z",
                "mg_state": true, // 当前用户的状态
                "role_name": "超级管理员"
            }
        ]
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

2. 添加用户

  • 请求路径:users

  • 请求方法:post

  • 请求参数

参数名参数说明备注
username用户名称不能为空
password用户密码不能为空
email邮箱可以为空
mobile手机号可以为空
  • 响应参数
参数名参数说明备注
id用户 ID
rid用户角色 ID
username用户名
mobile手机号
email邮箱
  • 响应数据
{
    "data": {
        "id": 28,
        "username": "tom",
        "mobile": "test",
        "type": 1,
        "openid": "",
        "email": "test@test.com",
        "create_time": "2020-11-10T03:47:13.533Z",
        "modify_time": null,
        "is_delete": false,
        "is_active": false
    },
    "meta": {
        "msg": "用户创建成功",
        "status": 201
    }
}

3. 修改用户状态

  • 请求路径:users/:uId/state/:type

  • 请求方法:put

  • 请求参数

参数名参数说明备注
uId用户 ID不能为空携带在url中
type用户状态不能为空携带在url中,值为 true 或者 false
  • 响应数据
{
  "data": {
    "id": 566,
    "rid": 30,
    "username": "admin",
    "mobile": "123456",
    "email": "bb@itany.com",
    "mg_state": 0
  },
  "meta": {
    "msg": "设置状态成功",
    "status": 200
  }
}

4. 根据 ID 查询用户信息

  • 请求路径:users/:id

  • 请求方法:get

  • 请求参数

参数名参数说明备注
id用户 ID不能为空携带在url中
  • 响应参数
参数名参数说明备注
id用户 ID
role_id角色 ID
mobile手机号
email邮箱
  • 响应数据
{
    "data": {
        "id": 503,
        "username": "admin3",
        "role_id": 0,
        "mobile": "00000",
        "email": "new@new.com"
    },
    "meta": {
        "msg": "查询成功",
        "status": 200
    }
}

5. 编辑提交用户

  • 请求路径:users/:id

  • 请求方法:put

  • 请求参数

参数名参数说明备注
id用户 id不能为空 参数是url参数:id
email邮箱可以为空
mobile手机号可以为空
  • 响应参数
参数名参数说明备注
id用户 ID
role_id角色 ID
mobile手机号
email邮箱
  • 响应数据
/* 200表示成功,500表示失败 */
{
    "data": {
        "id": 503,
        "username": "admin3",
        "role_id": 0,
        "mobile": "111",
        "email": "123@123.com"
    },
    "meta": {
        "msg": "更新成功",
        "status": 200
    }
}

6. 删除单个用户

  • 请求路径:users/:id

  • 请求方法:delete

  • 请求参数

参数名参数说明备注
id用户 id不能为空参数是url参数:id
  • 响应参数

  • 响应数据

{
    "data": null,
    "meta": {
        "msg": "删除成功",
        "status": 200
    }
}

7. 分配用户角色

  • 请求路径:users/:id/role

  • 请求方法:put

  • 请求参数

参数名参数说明备注
id用户 ID不能为空参数是url参数:id
rid角色 id不能为空参数body参数
  • 响应参数
参数名参数说明备注
id用户 ID
role_id角色 ID
mobile手机号
email邮箱
  • 响应数据
{
    "data": {
        "id": 508,
        "rid": "30",
        "username": "asdf1",
        "mobile": "123123",
        "email": "adfsa@qq.com"
    },
    "meta": {
        "msg": "设置角色成功",
        "status": 200
    }
}

四、权限管理

1. 所有权限列表

  • 请求路径:rights/:type

  • 请求方法:get

  • 请求参数

参数名参数说明备注
type类型值 list 或 tree , list 列表显示权限, tree 树状显示权限,参数是url参数:type
  • 响应参数
参数名参数说明备注
id权限 ID
authName权限说明
level权限层级
pid权限父 ID
path对应访问路径
  • 响应数据 type=list
  {
    "data": [
        {
            "id": 101,
            "authName": "商品管理",
            "level": "0",
            "pid": 0,
            "path": null
        },
        {
            "id": 102,
            "authName": "订单管理",
            "level": "0",
            "pid": 0,
            "path": null
        }
    ],
    "meta": {
        "msg": "获取权限列表成功",
        "status": 200
    }
}

type=tree

  {
    data: [
      {
        id: 101,
        authName: '商品管理',
        path: null,
        pid: 0,
        children: [
          {
            id: 104,
            authName: '商品列表',
            path: null,
            pid: 101,
            children: [
              {
                id: 105,
                authName: '添加商品',
                path: null,
                pid: '104,101'
              }
            ]
          }
        ]
      }
    ],
    meta: {
      msg: '获取权限列表成功',
      status: 200
    }
  }

2. 左侧菜单权限

  • 请求路径:menus

  • 请求方法:get

  • 响应数据

{
    "data":
        {
            "id": 101,
            "authName": "商品管理",
            "path": null,
            "children": [
                {
                    "id": 104,
                    "authName": "商品列表",
                    "path": null,
                    "children": []
                }
            ]
        }
    "meta": {
        "msg": "获取菜单列表成功",
        "status": 200
    }
}

五、角色管理

1. 角色列表

  • 请求路径:roles

  • 请求方法:get

  • 响应数据说明

    • 第一层为角色信息

    • 第二层开始为权限说明,权限一共有 3 层权限

    • 最后一层权限,不包含 children 属性

  • 响应数据

{
    "data": [
        {
            "id": 30,
            "roleName": "主管",
            "roleDesc": "技术负责人",
            "children": [
                {
                    "id": 101,
                    "authName": "商品管理",
                    "path": null,
                    "children": [
                        {
                            "id": 104,
                            "authName": "商品列表",
                            "path": null,
                            "children": [
                                {
                                    "id": 105,
                                    "authName": "添加商品",
                                    "path": null
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ],
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

2. 添加角色

  • 请求路径:roles

  • 请求方法:post

  • 请求参数

参数名参数说明备注
roleName角色名称不能为空
roleDesc角色描述可以为空
  • 响应参数
参数名参数说明备注
roleId角色 ID
roleName角色名称
roleDesc角色描述
  • 响应数据
{
    "data": {
        "roleId": 40,
        "roleName": "admin2",
        "roleDesc": "admin2Desc"
    },
    "meta": {
        "msg": "创建成功",
        "status": 201
    }
}

3. 根据 ID 查询角色

  • 请求路径:roles/:id

  • 请求方法:get

  • 请求参数

参数名参数说明备注
:id角色 ID不能为空携带在url中
  • 响应参数
参数名参数说明备注
roleId角色 ID
roleName角色名称
roleDesc角色描述
  • 响应数据
{
    "data": {
        "roleId": 31,
        "roleName": "测试角色",
        "roleDesc": "测试负责人"
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

4. 编辑提交角色

  • 请求路径:roles/:id

  • 请求方法:put

  • 请求参数

参数名参数说明备注
:id角色 ID不能为空携带在url中
roleName角色名称不能为空
roleDesc角色描述可以为空
  • 响应数据
{
    "data": {
        "roleId": 31,
        "roleName": "测试角色",
        "roleDesc": "测试角色描述"
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

5. 删除角色

  • 请求路径:roles/:id

  • 请求方法:delete

  • 请求参数

参数名参数说明备注
:id角色 ID不能为空携带在url中
  • 响应数据
{
    "data": null,
    "meta": {
        "msg": "删除成功",
        "status": 200
    }
}

6. 角色授权

  • 请求路径:roles/:roleId/rights

  • 请求方法:post

  • 请求参数:通过 请求体 发送给后端

参数名参数说明备注
:roleId角色 ID不能为空携带在url中
rids权限 ID 列表(字符串), 分割的权限 ID 列表(获取所有被选中、叶子节点的key和半选中节点的key, 包括 1,2,3级节点)
  • 响应数据
{
    "data": null,
    "meta": {
        "msg": "更新成功",
        "status": 200
    }
}

7. 删除角色指定权限

  • 请求路径:roles/:roleId/rights/:rightId

  • 请求方法:delete

  • 请求参数 参数名 参数说明 备注 :roleId 角色 ID 不能为空携带在url中 :rightId 权限 ID 不能为空携带在url中

  • 响应数据说明

    • 返回的data, 是当前角色下最新的权限数据
  • 响应数据

  {
      "data": [
          {
              "id": 101,
              "authName": "商品管理",
              "path": null,
              "children": [
                  {
                      "id": 104,
                      "authName": "商品列表",
                      "path": null,
                      "children": [
                          {
                              "id": 105,
                              "authName": "添加商品",
                              "path": null
                          },
                          {
                              "id": 116,
                              "authName": "修改",
                              "path": null
                          }
                      ]
                  }
              ]
          }
      ],
      "meta": {
          "msg": "取消权限成功",
          "status": 200
      }
  }

六、商品分类管理

1. 商品分类数据列表

  • 请求路径:categories

  • 请求方法:get

  • 请求参数

参数名参数说明备注
type[1,2,3]值:1,2,3 分别表示显示一层二层三层分类列表
【可选参数】如果不传递,则默认获取所有级别的分类
pagenum当前页码值【可选参数】如果不传递,则默认获取所有分类
pagesize每页显示多少条数据【可选参数】如果不传递,则默认获取所有分类
  • 响应参数
参数名参数说明备注
cat_id分类 ID
cat_name分类名称
cat_pid分类父 ID
cat_level分类当前层级
  • 响应数据
{
    "data": [
        {
            "cat_id": 1,
            "cat_name": "大家电",
            "cat_pid": 0,
            "cat_level": 0,
            "cat_deleted": false,
            "children": [
                {
                    "cat_id": 3,
                    "cat_name": "电视",
                    "cat_pid": 1,
                    "cat_level": 1,
                    "cat_deleted": false,
                    "children": [
                        {
                            "cat_id": 6,
                            "cat_name": "曲面电视",
                            "cat_pid": 3,
                            "cat_level": 2,
                            "cat_deleted": false
                        },
                        {
                            "cat_id": 7,
                            "cat_name": "海信",
                            "cat_pid": 3,
                            "cat_level": 2,
                            "cat_deleted": false
                        }
                    ]
                }
            ]
        }
    ],
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

2. 添加分类

  • 请求路径:categories

  • 请求方法:post

  • 请求参数

参数名参数说明备注
cat_pid分类父 ID不能为空,如果要添加一级分类,则父分类Id应该设置为 0
cat_name分类名称不能为空
cat_level分类层级不能为空,0表示一级分类;1表示二级分类;2表示三级分类
  • 响应数据
{
    "data": {
        "cat_id": 62,
        "cat_name": "相框",
        "cat_pid": "1",
        "cat_level": "1"
    },
    "meta": {
        "msg": "创建成功",
        "status": 201
    }
}

3. 根据 id 查询分类

  • 请求路径:categories/:id

  • 请求方法:get

  • 请求参数

参数名参数说明备注
:id分类 ID不能为空携带在url中
  • 响应数据
{
    "data": {
        "cat_id": 3,
        "cat_name": "厨卫电器",
        "cat_pid": 0,
        "cat_level": 0
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

4. 编辑提交分类

  • 请求路径:categories/:id

  • 请求方法:put

  • 请求参数

参数名参数说明备注
:id分类 ID不能为空携带在url中
cat_name分类名称不能为空【此参数,放到请求体中】
  • 响应数据
{
    "data": {
        "cat_id": 22,
        "cat_name": "自拍杆",
        "cat_pid": 7,
        "cat_level": 2
    },
    "meta": {
        "msg": "更新成功",
        "status": 200
    }
}

5. 删除分类

  • 请求路径:categories/:id

  • 请求方法:delete

  • 请求参数

参数名参数说明备注
:id分类 ID不能为空携带在url中
  • 响应数据
{
    "data": null,
    "meta": {
        "msg": "删除成功",
        "status": 200
    }
}

七、分类参数管理

1. 参数列表

  • 请求路径:categories/:id/attributes

  • 请求方法:get

  • 请求参数

参数名参数说明备注
:id分类 ID不能为空携带在url中
selmany或only不能为空,many表示动态参数,only表示静态参数(也称为静态属性)
  • 响应参数
参数名参数说明备注
attr_id分类参数 ID
attr_name分类参数名称
cat_id分类参数所属分类
attr_sel分类参数的类型,many表示动态参数,only表示静态属性
attr_writelist表示从列表选择(动态参数),manual表示手工录入(静态属性)
attr_vals分类参数的明细,如果是动态参数,则该值是以空格分隔的字符串
  • 响应数据
{
    "data": [
        {
            "attr_id": 1,
            "attr_name": "cpu",
            "cat_id": 22,
            "attr_sel": "many",
            "attr_write": "list",
            "attr_vals": "4K高清 5K高清 6K高清"
        }
    ],
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

2. 添加动态参数或静态属性

  • 请求路径:categories/:id/attributes

  • 请求方法:post

  • 请求参数

参数名参数说明备注
:id分类 ID不能为空携带在url中
attr_name参数名称不能为空
attr_selmany或only不能为空
  • 响应数据
{
    "data": {
        "attr_id": 44,
        "attr_name": "测试参数",
        "cat_id": "1",
        "attr_sel": "many",
        "attr_write": "list",
        "attr_vals": "a,b,c"
    },
    "meta": {
        "msg": "创建成功",
        "status": 201
    }
}

3. 根据 ID 查询参数

  • 请求路径:categories/:id/attributes/:attrId

  • 请求方法:get

  • 请求参数

参数名参数说明备注
:id分类 ID不能为空携带在url中
:attrId属性 ID不能为空携带在url中
attr_selmany或only不能为空
  • 响应数据
{
    "data": {
        "attr_id": 1,
        "attr_name": "cpu",
        "cat_id": 22,
        "attr_sel": "only",
        "attr_write": "manual",
        "attr_vals": "ffff"
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

4. 更新参数及明细

  • 请求路径:categories/:id/attributes/:attrId

  • 请求方法:put

  • 请求参数

参数名参数说明备注
:id分类 ID不能为空携带在url中
:attrId参数 ID不能为空携带在url中
attr_name参数名称不能为空,携带在请求体
attr_selmany或only不能为空,携带在请求体
attr_vals参数的明细可选参数,携带在请求体
  • 响应数据
{
    "data": {
        "attr_id": 9,
        "attr_name": "测试更新",
        "cat_id": "43",
        "attr_sel": "only",
        "attr_write": "manual",
        "attr_vals": "abc"
    },
    "meta": {
        "msg": "更新成功",
        "status": 200
    }
}

5. 删除参数

  • 请求路径: categories/:id/attributes/:attrid

  • 请求方法:delete

  • 请求参数

参数名参数说明备注
:id分类 ID不能为空携带在url中
:attrid参数 ID不能为空携带在url中
  • 响应数据
{
    "data": null,
    "meta": {
        "msg": "删除成功",
        "status": 200
    }
}

八、商品管理

1. 商品列表数据

  • 请求路径:goods

  • 请求方法:get

  • 请求参数

参数名参数说明备注
query查询参数可以为空
pagenum当前页码不能为空
pagesize每页显示条数不能为空
  • 响应参数
参数名参数说明备注
total总共商品条数
pagenum当前商品页数
goods_id商品 ID
goods_name商品名称
goods_price价格
goods_number数量
goods_weight重量不能为空
goods_state商品状态商品状态 0: 未通过 1: 审核中 2: 已审核
add_time添加时间
upd_time更新时间
hot_mumber热销品数量
is_promote是否是热销品
  • 响应数据
{
    "data": {
        "total": 50,
        "pagenum": "1",
        "goods": [
            {
                "goods_id": 144,
                "goods_name": "iphone",
                "goods_price": 1,
                "goods_number": 1,
                "goods_weight": 1,
                "goods_state": null,
                "add_time": 1512954923,
                "upd_time": 1512954923,
                "hot_mumber": 0,
                "is_promote": false
            }
        ]
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

2. 添加商品

  • 请求路径:goods

  • 请求方法:post

  • 请求参数

参数名参数说明备注
goods_name商品名称不能为空
goods_cat,逗号分割的分类列表不能为空
goods_price价格不能为空
goods_number数量不能为空
goods_weight重量不能为空
goods_introduce介绍可以为空
pics上传的图片临时路径(对象)可以为空
attrs商品的参数(数组),包含 动态参数静态属性可以为空
  • 请求数据
{
  "goods_name":"test_goods_name2",
  "goods_cat": "1,2,3",
  "goods_price":20,
  "goods_number":30,
  "goods_weight":40,
  "goods_introduce":"abc",
  "pics":[
    {"pic":"/tmp_uploads/30f08d52c551ecb447277eae232304b8"}
    ],
  "attrs":[
    {
      "attr_id":15,
      "attr_value":"ddd"
    },
    {
      "attr_id":15,
      "attr_value":"eee"
    }
    ]
}
  • 响应参数
参数名参数说明备注
total总共商品条数
pagenum当前商品页数
goods_id商品 ID
goods_cat以为','分割的分类列表
goods_name商品名称
goods_price价格
goods_number数量
goods_weight重量不能为空
goods_state商品状态商品状态 0: 未通过 1: 审核中 2: 已审核
add_time添加时间
upd_time更新时间
hot_mumber热销品数量
is_promote是否是热销品
pics上传的图片临时路径(对象)pics_id:图片 ID,goods_id:商品 ID,pics_big:大图,pics_mid:中图,pics_sma:小图
attrs商品的参数(数组)goods_id:商品 ID,attr_value:当前商品的参数值,add_price:浮动价格,attr_vals:预定义的参数值,attr_sel:手动输入,还是单选
  • 响应数据
{
    "data": {
        "goods_id": 145,
        "goods_name": "test_goods_name2",
        "goods_price": 20,
        "cat_id": 1,
        "goods_number": 30,
        "goods_weight": 40,
        "goods_introduce": "abc",
        "goods_big_logo": "",
        "goods_small_logo": "",
        "goods_state": 1,
        "add_time": 1512962370,
        "upd_time": 1512962370,
        "hot_mumber": 0,
        "is_promote": false,
        "pics": [
            {
                "pics_id": 397,
                "goods_id": 145,
                "pics_big": "uploads/goodspics/big_30f08d52c551ecb447277eae232304b8",
                "pics_mid": "uploads/goodspics/mid_30f08d52c551ecb447277eae232304b8",
                "pics_sma": "uploads/goodspics/sma_30f08d52c551ecb447277eae232304b8"
            }
        ],
        "attrs": [
            {
                "goods_id": 145,
                "attr_id": 15,
                "attr_value": "ddd",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            },
            {
                "goods_id": 145,
                "attr_id": 15,
                "attr_value": "eee",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            }
        ]
    },
    "meta": {
        "msg": "创建商品成功",
        "status": 201
    }
}

3. 根据 ID 查询商品

  • 请求路径:goods/:id

  • 请求方法:get

  • 请求参数

参数名参数说明备注
id商品 ID不能为空携带在url中
  • 响应参数
参数名参数说明备注
goods_id商品 ID
goods_name商品名称
goods_price价格
goods_number数量
goods_weight重量不能为空
goods_state商品状态商品状态 0: 未通过 1: 审核中 2: 已审核
goods_introduce介绍
goods_cat以为','分割的分类列表
add_time添加时间
upd_time更新时间
hot_mumber热销品数量
is_promote是否是热销品
pics上传的图片临时路径(对象)pics_id:图片 ID,goods_id:商品 ID,pics_big:大图,pics_mid:中图,pics_sma:小图
attrs商品的参数(数组)goods_id:商品 ID,attr_value:当前商品的参数值,add_price:浮动价格,attr_vals:预定义的参数值,attr_sel:手动输入,还是单选
  • 响应数据
{
    "data": {
        "goods_id": 145,
        "goods_name": "test_goods_name2",
        "goods_price": 20,
        "goods_number": 30,
        "goods_weight": 40,
        "goods_introduce": "abc",
        "goods_big_logo": "",
        "goods_small_logo": "",
        "goods_state": 1,
        "add_time": 1512962370,
        "upd_time": 1512962370,
        "hot_mumber": 0,
        "is_promote": false,
        "pics": [
            {
                "pics_id": 397,
                "goods_id": 145,
                "pics_big": "uploads/goodspics/big_30f08d52c551ecb447277eae232304b8",
                "pics_mid": "uploads/goodspics/mid_30f08d52c551ecb447277eae232304b8",
                "pics_sma": "uploads/goodspics/sma_30f08d52c551ecb447277eae232304b8"
            }
        ],
        "attrs": [
            {
                "goods_id": 145,
                "attr_id": 15,
                "attr_value": "ddd",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            },
            {
                "goods_id": 145,
                "attr_id": 15,
                "attr_value": "eee",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            }
        ]
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

4. 编辑提交商品

  • 请求路径:goods/:id

  • 请求方法:put

  • 请求参数

参数名参数说明备注
id商品 ID不能为空携带在url中
goods_name商品名称不能为空
goods_cat以为','分割的分类列表不能为空
goods_price价格不能为空
goods_number数量不能为空
goods_weight重量不能为空
goods_introduce介绍可以为空
pics上传的图片临时路径(对象)可以为空
attrs商品的参数(数组)可以为空
  • 请求数据
{
  "goods_name":"test_goods_name2",
  "goods_price":20,
  "goods_number":30,
  "goods_weight":40,
  "goods_introduce":"abc",
  "pics":[
    {"pic":"/tmp_uploads/30f08d52c551ecb447277eae232304b8"}
    ],
  "attrs":[
    {
      "attr_id":15,
      "attr_value":"ddd"
    },
    {
      "attr_id":15,
      "attr_value":"eee"
    }
    ]
}
  • 响应参数
参数名参数说明备注
total总共商品条数
pagenum当前商品页数
goods_id商品 ID
goods_name商品名称
goods_price价格
goods_number数量
goods_weight重量不能为空
goods_state商品状态商品状态 0: 未通过 1: 审核中 2: 已审核
add_time添加时间
upd_time更新时间
hot_mumber热销品数量
is_promote是否是热销品
pics上传的图片临时路径(对象)pics_id:图片 ID,goods_id:商品 ID,pics_big:大图,pics_mid:中图,pics_sma:小图
attrs商品的参数(数组)goods_id:商品 ID,attr_value:当前商品的参数值,add_price:浮动价格,attr_vals:预定义的参数值,attr_sel:手动输入,还是单选,
  • 响应数据
{
    "data": {
        "goods_id": 145,
        "goods_name": "test_goods_name2",
        "goods_price": 20,
        "goods_number": 30,
        "goods_weight": 40,
        "goods_introduce": "abc",
        "goods_big_logo": "",
        "goods_small_logo": "",
        "goods_state": 1,
        "add_time": 1512962370,
        "upd_time": 1512962370,
        "hot_mumber": 0,
        "is_promote": false,
        "pics": [
            {
                "pics_id": 397,
                "goods_id": 145,
                "pics_big": "uploads/goodspics/big_30f08d52c551ecb447277eae232304b8",
                "pics_mid": "uploads/goodspics/mid_30f08d52c551ecb447277eae232304b8",
                "pics_sma": "uploads/goodspics/sma_30f08d52c551ecb447277eae232304b8"
            }
        ],
        "attrs": [
            {
                "goods_id": 145,
                "attr_id": 15,
                "attr_value": "ddd",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            },
            {
                "goods_id": 145,
                "attr_id": 15,
                "attr_value": "eee",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            }
        ]
    },
    "meta": {
        "msg": "更新商品成功",
        "status": 200
    }
}

5. 删除商品

  • 请求路径:goods/:id

  • 请求方法:delete

  • 请求参数

参数名参数说明备注
id商品 ID不能为空携带在url中
  • 响应数据
{
    "data": null,
    "meta": {
        "msg": "删除成功",
        "status": 200
    }
}

###同步商品图片

  • 请求路径:goods/:id/pics

  • 请求方法:put

  • 请求参数

参数名参数说明备注
id商品 ID不能为空携带在url中
pics商品图片集合如果有 pics_id 字段会保留该图片,如果没有 pics_id 但是有 pic 字段就会新生成图片数据
  • 请求数据
;[
  { pic: 'tmp_uploads/db28f6316835836e97653b5c75e418be.png' },
  {
    pics_id: 397,
    goods_id: 145,
    pics_big: 'uploads/goodspics/big_30f08d52c551ecb447277eae232304b8',
    pics_mid: 'uploads/goodspics/mid_30f08d52c551ecb447277eae232304b8',
    pics_sma: 'uploads/goodspics/sma_30f08d52c551ecb447277eae232304b8'
  }
]
  • 响应数据
{
    "data": {
        "goods_id": 96,
        "goods_name": "iphoneXX",
        "goods_price": 2,
        "goods_number": 22,
        "goods_weight": 22,
        "goods_introduce": null,
        "goods_big_logo": "./uploads/goods/20201113/483a3b8e99e534ec3e4312dbbaee7c9d.jpg",
        "goods_small_logo": "./uploads/goods/20201113/small_483a3b8e99e534ec3e4312dbbaee7c9d.jpg",
        "goods_state": 0,
        "is_del": "1",
        "add_time": 1510045904,
        "upd_time": 1512635159,
        "delete_time": 1512635159,
        "hot_mumber": 0,
        "is_promote": false,
        "pics": [
            {
                "pics_id": 383,
                "goods_id": 96,
                "pics_big": "uploads/goodspics/big_6f5750132abd3f5b2b93dd722fcde653.jpg",
                "pics_mid": "uploads/goodspics/mid_6f5750132abd3f5b2b93dd722fcde653.jpg",
                "pics_sma": "uploads/goodspics/sma_6f5750132abd3f5b2b93dd722fcde653.jpg"
            }
        ],
        "attrs": [
            {
                "goods_id": 96,
                "attr_id": 15,
                "attr_value": "eee",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            },
            {
                "goods_id": 96,
                "attr_id": 15,
                "attr_value": "ddd",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            }
        ]
    },
    "meta": {
        "msg": "更新成功",
        "status": 200
    }
}

###同步商品属性

  • 请求路径:goods/:id/attributes

  • 请求方法:put

  • 请求参数

参数名参数说明备注
id商品 ID不能为空携带在url中
  • 请求数据
;[
  {
    attr_id: 15,
    attr_value: 'ddd'
  },
  {
    attr_id: 15,
    attr_value: 'eee'
  }
]
  • 响应数据
{
    "data": {
        "goods_id": 96,
        "goods_name": "iphoneXX",
        "goods_price": 2,
        "goods_number": 22,
        "goods_weight": 22,
        "goods_introduce": null,
        "goods_big_logo": "./uploads/goods/20201113/483a3b8e99e534ec3e4312dbbaee7c9d.jpg",
        "goods_small_logo": "./uploads/goods/20201113/small_483a3b8e99e534ec3e4312dbbaee7c9d.jpg",
        "goods_state": 0,
        "is_del": "1",
        "add_time": 1510045904,
        "upd_time": 1512635159,
        "delete_time": 1512635159,
        "hot_mumber": 0,
        "is_promote": false,
        "pics": [
            {
                "pics_id": 383,
                "goods_id": 96,
                "pics_big": "uploads/goodspics/big_6f5750132abd3f5b2b93dd722fcde653.jpg",
                "pics_mid": "uploads/goodspics/mid_6f5750132abd3f5b2b93dd722fcde653.jpg",
                "pics_sma": "uploads/goodspics/sma_6f5750132abd3f5b2b93dd722fcde653.jpg"
            }
        ],
        "attrs": [
            {
                "goods_id": 96,
                "attr_id": 15,
                "attr_value": "eee",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            },
            {
                "goods_id": 96,
                "attr_id": 15,
                "attr_value": "ddd",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            }
        ]
    },
    "meta": {
        "msg": "更新成功",
        "status": 200
    }
}

###商品图片处理必须安装 GraphicsMagick

  • linux
apt-get install GraphicsMagick
  • Mac OS X
brew install GraphicsMagick

6. 图片上传

  • 请求路径:upload

  • 请求方法:post

  • 请求参数

参数名参数说明备注
file上传文件
  • 响应数据
{
    "data": {
        "tmp_path": "tmp_uploads/ccfc5179a914e94506bcbb7377e8985f.png",
        "url": "http://127.0.0.1:8888tmp_uploads/ccfc5179a914e94506bcbb7377e8985f.png"
    },
    "meta": {
        "msg": "上传成功",
        "status": 200
    }
}

九、订单管理

1. 订单数据列表

  • 请求路径:orders

  • 请求方法:get

  • 请求参数

参数名参数说明备注
query查询参数可以为空
pagenum当前页码可以为空,默认为1
pagesize每页显示条数可以为空,省略时返回所有订单
user_id用户 ID可以为空
pay_status支付状态可以为空
is_send是否发货可以为空
order_fapiao_title['个人','公司']可以为空
order_fapiao_company公司名称可以为空
order_fapiao_content发票内容可以为空
consignee_addr收货地址可以为空
  • 响应数据
{
    "data": {
        "total": 1,
        "pagenum": "1",
        "goods": [
            {
                "order_id": 47,
                "user_id": 133,
                "order_number": "59e7502d7993d",
                "order_price": 322,
                "order_pay": "1",
                "is_send": "是",
                "trade_no": "",
                "order_fapiao_title": "个人",
                "order_fapiao_company": "",
                "order_fapiao_content": "办公用品",
                "consignee_addr": "江苏省南京市秦淮区龙蟠中路666号",
                "pay_status": "1",
                "create_time": 1508331565,
                "update_time": 1508331565
            }
        ]
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

2. 修改订单状态

  • 请求路径:orders/:id

  • 请求方法:put

  • 请求参数

参数名参数说明备注
id订单 ID不能为空携带在url中
is_send订单是否发货1:已经发货,0:未发货
order_pay订单支付支付方式 0 未支付 1 支付宝 2 微信 3 银行卡
order_price订单价格
order_number订单数量
pay_status支付状态订单状态: 0 未付款、1 已付款
  • 请求数据说明

    • 所有请求数据都是增量更新,如果参数不填写,就不会更新该字段
  • 响应数据

{
    "data": {
        "order_id": 67,
        "user_id": 1,
        "order_number": "itany-g7kmck71vjaujfgoi",
        "order_price": 20,
        "order_pay": "0",
        "is_send": "否",
        "trade_no": "",
        "order_fapiao_title": "个人",
        "order_fapiao_company": "",
        "order_fapiao_content": "",
        "consignee_addr": "",
        "pay_status": "0",
        "create_time": 1512533560,
        "update_time": 1512533560,
        "goods": [
            {
                "id": 82,
                "order_id": 67,
                "goods_id": 96,
                "goods_price": 333,
                "goods_number": 2,
                "goods_total_price": 999
            },
            {
                "id": 83,
                "order_id": 67,
                "goods_id": 95,
                "goods_price": 666,
                "goods_number": 5,
                "goods_total_price": 999
            }
        ]
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

3. 查看订单详情

  • 请求路径:orders/:id

  • 请求方法:get

  • 请求参数

参数名参数说明备注
id订单 ID不能为空携带在url中
  • 响应数据
{
    "data": {
        "order_id": 67,
        "user_id": 1,
        "order_number": "itany-g7kmck71vjaujfgoi",
        "order_price": 20,
        "order_pay": "0",
        "is_send": "否",
        "trade_no": "",
        "order_fapiao_title": "个人",
        "order_fapiao_company": "",
        "order_fapiao_content": "",
        "consignee_addr": "",
        "pay_status": "0",
        "create_time": 1512533560,
        "update_time": 1512533560,
        "goods": [
            {
                "id": 82,
                "order_id": 67,
                "goods_id": 96,
                "goods_price": 333,
                "goods_number": 2,
                "goods_total_price": 999
            },
            {
                "id": 83,
                "order_id": 67,
                "goods_id": 95,
                "goods_price": 666,
                "goods_number": 5,
                "goods_total_price": 999
            }
        ]
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

4. 修改地址

  • 请求路径:orders/:id/address

  • 请求方法:put

  • 请求参数

参数名参数说明备注
id订单 ID不能为空携带在url中
consignee_addr收货地址可以为空
  • 响应数据
{
    "data": {},
    "meta": {
        "msg": "修改地址成功",
        "status": 200
    }
}

5. 查看物流信息

  • 请求路径:/kuaidi/:id

  • 请求方法:get

  • 物流单号:815294206237577

  • 响应数据:

  {
      "meta":{
          "status":200,
          "message":"获取物流信息成功!"
      },
      "data":[
          {
              "time":"2020-11-15 12:39:56",
              "ftime":"2020-11-15 12:39:56",
              "context":"已签收,签收人是 汤小洋 先生/女士,如有疑问请联系派件员阿奇(13805148888),如您未收到此快递,请拨打投诉电话:15294207777,感谢使用申通快递,期待再次为您服务",
              "location":null
          },
          {
              "time":"2020-11-15 08:46:54",
              "ftime":"2020-11-15 08:46:54",
              "context":"上海浦东寒亭营业厅-寒亭阿奇(13805148888)-派件中",
              "location":null
          },
          {
              "time":"2020-11-15 08:38:57",
              "ftime":"2020-11-15 08:38:57",
              "context":"已到达-上海浦东寒亭营业厅",
              "location":null
          },
          {
              "time":"2020-11-15 06:38:13",
              "ftime":"2020-11-15 06:38:13",
              "context":"已到达-上海浦东寒亭营业厅",
              "location":null
          },
          {
              "time":"2020-11-14 20:56:45",
              "ftime":"2020-11-14 20:56:45",
              "context":"上海浦东转运中心-已发往-上海浦东寒亭公司",
              "location":null
          },
          {
              "time":"2020-11-14 20:52:44",
              "ftime":"2020-11-14 20:52:44",
              "context":"已到达-上海浦东转运中心",
              "location":null
          },
          {
              "time":"2020-11-14 17:43:48",
              "ftime":"2020-11-14 17:43:48",
              "context":"已到达-上海浦东转运中心",
              "location":null
          },
          {
              "time":"2020-11-14 10:53:46",
              "ftime":"2020-11-14 10:53:46",
              "context":"上海浦东转运中心-已发往-上海浦东转运中心",
              "location":null
          },
          {
              "time":"2020-11-14 10:43:31",
              "ftime":"2020-11-14 10:43:31",
              "context":"已到达-上海浦东转运中心",
              "location":null
          },
          {
              "time":"2020-11-14 02:43:20",
              "ftime":"2020-11-14 02:43:20",
              "context":"江苏苏州转运中心-已发往-上海浦东转运中心",
              "location":null
          },
          {
              "time":"2020-11-14 02:41:40",
              "ftime":"2020-11-14 02:41:40",
              "context":"已到达-江苏苏州转运中心",
              "location":null
          },
          {
              "time":"2020-11-13 16:28:13",
              "ftime":"2020-11-13 16:28:13",
              "context":"江苏南京转运中心-已发往-江苏苏州转运中心",
              "location":null
          },
          {
              "time":"2020-11-13 15:03:30",
              "ftime":"2020-11-13 15:03:30",
              "context":"南京IT教育公司-已发往-江苏南京转运中心",
              "location":null
          },
          {
              "time":"2020-11-13 14:47:56",
              "ftime":"2020-11-13 14:47:56",
              "context":"南京IT教育公司-已发往-江苏南京转运中心",
              "location":null
          },
          {
              "time":"2020-11-13 14:37:06",
              "ftime":"2020-11-13 14:37:06",
              "context":"南京IT教育公司-城东汪小主宠物店-已收件",
              "location":null
          }
      ]
  }

一、API V2 接口说明

  • 接口基准地址:http://www.tangxiaoyang.vip:8888/api/v2/

  • 服务端已开启 CORS 跨域支持

  • API V2 认证统一使用 Token 认证

  • 需要授权的 API ,必须在请求头中使用 Authorization 字段提供 token 令牌

  • 使用 HTTP Status Code 标识状态

  • 数据返回格式统一使用 JSON

1. 支持的请求方法

  • GET(SELECT):从服务器取出资源(一项或多项)。

  • POST(CREATE):在服务器新建一个资源。

  • PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。

  • PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。

  • DELETE(DELETE):从服务器删除资源。

  • HEAD:获取资源的元数据。

  • OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。

2. 通用返回状态说明

状态码含义说明
200OK请求成功
201CREATED创建成功
204DELETED删除成功
400BAD REQUEST请求的地址不存在或者包含不支持的参数
401UNAUTHORIZED未授权
403FORBIDDEN被禁止访问
404NOT FOUND请求的资源不存在
422Unprocesable entity[POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误
500INTERNAL SERVER ERROR内部错误

二、登录

1. 登录验证接口

  • 请求路径:login

  • 请求方法:post

  • 请求参数

参数名参数说明备注
username用户名不能为空
password密码不能为空
  • 响应参数
参数名参数说明备注
id用户 ID
rid用户角色 ID
username用户名
mobile手机号
email邮箱
token令牌基于 jwt 的令牌
  • 响应数据
{
    "data": {
        "id": 500,
        "rid": 0,
        "username": "admin",
        "mobile": "123",
        "email": "123@qq.com",
        "token": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjUwMCwicmlkIjowLCJpYXQiOjE1MTI1NDQyOTksImV4cCI6MTUxMjYzMDY5OX0.eGrsrvwHm-tPsO9r_pxHIQ5i5L1kX9RX444uwnRGaIM"
    },
    "meta": {
        "msg": "登录成功",
        "status": 200
    }
}

三、用户管理

1. 用户数据列表

  • 请求路径:users

  • 请求方法:get

  • 请求参数

参数名参数说明备注
query查询参数可以为空
pagenum当前页码不能为空
pagesize每页显示条数不能为空
  • 响应参数
参数名参数说明备注
total总记录数
pagenum当前页码
users用户数据集合
  • 响应数据
{
    "data": {
        "total": 5,
        "pagenum": 1,
        "users": [
            {
                "id": 25,
                "username": "tom",
                "mobile": "13951783475",
                "type": 1,
                "email": "1049901079@qq.com",
                "create_time": "2020-11-09T20:36:26.000Z",
                "mg_state": true, // 当前用户的状态
                "role_name": "超级管理员"
            }
        ]
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

2. 添加用户

  • 请求路径:users

  • 请求方法:post

  • 请求参数

参数名参数说明备注
username用户名称不能为空
password用户密码不能为空
email邮箱可以为空
mobile手机号可以为空
  • 响应参数
参数名参数说明备注
id用户 ID
rid用户角色 ID
username用户名
mobile手机号
email邮箱
  • 响应数据
{
    "data": {
        "id": 28,
        "username": "tom",
        "mobile": "test",
        "type": 1,
        "openid": "",
        "email": "test@test.com",
        "create_time": "2020-11-10T03:47:13.533Z",
        "modify_time": null,
        "is_delete": false,
        "is_active": false
    },
    "meta": {
        "msg": "用户创建成功",
        "status": 201
    }
}

3. 修改用户状态

  • 请求路径:users/:uId/state/:type

  • 请求方法:put

  • 请求参数

参数名参数说明备注
uId用户 ID不能为空携带在url中
type用户状态不能为空携带在url中,值为 true 或者 false
  • 响应数据
{
  "data": {
    "id": 566,
    "rid": 30,
    "username": "admin",
    "mobile": "123456",
    "email": "bb@itany.com",
    "mg_state": 0
  },
  "meta": {
    "msg": "设置状态成功",
    "status": 200
  }
}

4. 根据 ID 查询用户信息

  • 请求路径:users/:id

  • 请求方法:get

  • 请求参数

参数名参数说明备注
id用户 ID不能为空携带在url中
  • 响应参数
参数名参数说明备注
id用户 ID
role_id角色 ID
mobile手机号
email邮箱
  • 响应数据
{
    "data": {
        "id": 503,
        "username": "admin3",
        "role_id": 0,
        "mobile": "00000",
        "email": "new@new.com"
    },
    "meta": {
        "msg": "查询成功",
        "status": 200
    }
}

5. 编辑提交用户

  • 请求路径:users/:id

  • 请求方法:put

  • 请求参数

参数名参数说明备注
id用户 id不能为空 参数是url参数:id
email邮箱可以为空
mobile手机号可以为空
  • 响应参数
参数名参数说明备注
id用户 ID
role_id角色 ID
mobile手机号
email邮箱
  • 响应数据
/* 200表示成功,500表示失败 */
{
    "data": {
        "id": 503,
        "username": "admin3",
        "role_id": 0,
        "mobile": "111",
        "email": "123@123.com"
    },
    "meta": {
        "msg": "更新成功",
        "status": 200
    }
}

6. 删除单个用户

  • 请求路径:users/:id

  • 请求方法:delete

  • 请求参数

参数名参数说明备注
id用户 id不能为空参数是url参数:id
  • 响应参数

  • 响应数据

{
    "data": null,
    "meta": {
        "msg": "删除成功",
        "status": 200
    }
}

7. 分配用户角色

  • 请求路径:users/:id/role

  • 请求方法:put

  • 请求参数

参数名参数说明备注
id用户 ID不能为空参数是url参数:id
rid角色 id不能为空参数body参数
  • 响应参数
参数名参数说明备注
id用户 ID
role_id角色 ID
mobile手机号
email邮箱
  • 响应数据
{
    "data": {
        "id": 508,
        "rid": "30",
        "username": "asdf1",
        "mobile": "123123",
        "email": "adfsa@qq.com"
    },
    "meta": {
        "msg": "设置角色成功",
        "status": 200
    }
}

四、权限管理

1. 所有权限列表

  • 请求路径:rights/:type

  • 请求方法:get

  • 请求参数

参数名参数说明备注
type类型值 list 或 tree , list 列表显示权限, tree 树状显示权限,参数是url参数:type
  • 响应参数
参数名参数说明备注
id权限 ID
authName权限说明
level权限层级
pid权限父 ID
path对应访问路径
  • 响应数据 type=list
  {
    "data": [
        {
            "id": 101,
            "authName": "商品管理",
            "level": "0",
            "pid": 0,
            "path": null
        },
        {
            "id": 102,
            "authName": "订单管理",
            "level": "0",
            "pid": 0,
            "path": null
        }
    ],
    "meta": {
        "msg": "获取权限列表成功",
        "status": 200
    }
}

type=tree

  {
    data: [
      {
        id: 101,
        authName: '商品管理',
        path: null,
        pid: 0,
        children: [
          {
            id: 104,
            authName: '商品列表',
            path: null,
            pid: 101,
            children: [
              {
                id: 105,
                authName: '添加商品',
                path: null,
                pid: '104,101'
              }
            ]
          }
        ]
      }
    ],
    meta: {
      msg: '获取权限列表成功',
      status: 200
    }
  }

2. 左侧菜单权限

  • 请求路径:menus

  • 请求方法:get

  • 响应数据

{
    "data":
        {
            "id": 101,
            "authName": "商品管理",
            "path": null,
            "children": [
                {
                    "id": 104,
                    "authName": "商品列表",
                    "path": null,
                    "children": []
                }
            ]
        }
    "meta": {
        "msg": "获取菜单列表成功",
        "status": 200
    }
}

五、角色管理

1. 角色列表

  • 请求路径:roles

  • 请求方法:get

  • 响应数据说明

    • 第一层为角色信息

    • 第二层开始为权限说明,权限一共有 3 层权限

    • 最后一层权限,不包含 children 属性

  • 响应数据

{
    "data": [
        {
            "id": 30,
            "roleName": "主管",
            "roleDesc": "技术负责人",
            "children": [
                {
                    "id": 101,
                    "authName": "商品管理",
                    "path": null,
                    "children": [
                        {
                            "id": 104,
                            "authName": "商品列表",
                            "path": null,
                            "children": [
                                {
                                    "id": 105,
                                    "authName": "添加商品",
                                    "path": null
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ],
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

2. 添加角色

  • 请求路径:roles

  • 请求方法:post

  • 请求参数

参数名参数说明备注
roleName角色名称不能为空
roleDesc角色描述可以为空
  • 响应参数
参数名参数说明备注
roleId角色 ID
roleName角色名称
roleDesc角色描述
  • 响应数据
{
    "data": {
        "roleId": 40,
        "roleName": "admin2",
        "roleDesc": "admin2Desc"
    },
    "meta": {
        "msg": "创建成功",
        "status": 201
    }
}

3. 根据 ID 查询角色

  • 请求路径:roles/:id

  • 请求方法:get

  • 请求参数

参数名参数说明备注
:id角色 ID不能为空携带在url中
  • 响应参数
参数名参数说明备注
roleId角色 ID
roleName角色名称
roleDesc角色描述
  • 响应数据
{
    "data": {
        "roleId": 31,
        "roleName": "测试角色",
        "roleDesc": "测试负责人"
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

4. 编辑提交角色

  • 请求路径:roles/:id

  • 请求方法:put

  • 请求参数

参数名参数说明备注
:id角色 ID不能为空携带在url中
roleName角色名称不能为空
roleDesc角色描述可以为空
  • 响应数据
{
    "data": {
        "roleId": 31,
        "roleName": "测试角色",
        "roleDesc": "测试角色描述"
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

5. 删除角色

  • 请求路径:roles/:id

  • 请求方法:delete

  • 请求参数

参数名参数说明备注
:id角色 ID不能为空携带在url中
  • 响应数据
{
    "data": null,
    "meta": {
        "msg": "删除成功",
        "status": 200
    }
}

6. 角色授权

  • 请求路径:roles/:roleId/rights

  • 请求方法:post

  • 请求参数:通过 请求体 发送给后端

参数名参数说明备注
:roleId角色 ID不能为空携带在url中
rids权限 ID 列表(字符串), 分割的权限 ID 列表(获取所有被选中、叶子节点的key和半选中节点的key, 包括 1,2,3级节点)
  • 响应数据
{
    "data": null,
    "meta": {
        "msg": "更新成功",
        "status": 200
    }
}

7. 删除角色指定权限

  • 请求路径:roles/:roleId/rights/:rightId

  • 请求方法:delete

  • 请求参数 参数名 参数说明 备注 :roleId 角色 ID 不能为空携带在url中 :rightId 权限 ID 不能为空携带在url中

  • 响应数据说明

    • 返回的data, 是当前角色下最新的权限数据
  • 响应数据

  {
      "data": [
          {
              "id": 101,
              "authName": "商品管理",
              "path": null,
              "children": [
                  {
                      "id": 104,
                      "authName": "商品列表",
                      "path": null,
                      "children": [
                          {
                              "id": 105,
                              "authName": "添加商品",
                              "path": null
                          },
                          {
                              "id": 116,
                              "authName": "修改",
                              "path": null
                          }
                      ]
                  }
              ]
          }
      ],
      "meta": {
          "msg": "取消权限成功",
          "status": 200
      }
  }

六、商品分类管理

1. 商品分类数据列表

  • 请求路径:categories

  • 请求方法:get

  • 请求参数

参数名参数说明备注
type[1,2,3]值:1,2,3 分别表示显示一层二层三层分类列表
【可选参数】如果不传递,则默认获取所有级别的分类
pagenum当前页码值【可选参数】如果不传递,则默认获取所有分类
pagesize每页显示多少条数据【可选参数】如果不传递,则默认获取所有分类
  • 响应参数
参数名参数说明备注
cat_id分类 ID
cat_name分类名称
cat_pid分类父 ID
cat_level分类当前层级
  • 响应数据
{
    "data": [
        {
            "cat_id": 1,
            "cat_name": "大家电",
            "cat_pid": 0,
            "cat_level": 0,
            "cat_deleted": false,
            "children": [
                {
                    "cat_id": 3,
                    "cat_name": "电视",
                    "cat_pid": 1,
                    "cat_level": 1,
                    "cat_deleted": false,
                    "children": [
                        {
                            "cat_id": 6,
                            "cat_name": "曲面电视",
                            "cat_pid": 3,
                            "cat_level": 2,
                            "cat_deleted": false
                        },
                        {
                            "cat_id": 7,
                            "cat_name": "海信",
                            "cat_pid": 3,
                            "cat_level": 2,
                            "cat_deleted": false
                        }
                    ]
                }
            ]
        }
    ],
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

2. 添加分类

  • 请求路径:categories

  • 请求方法:post

  • 请求参数

参数名参数说明备注
cat_pid分类父 ID不能为空,如果要添加一级分类,则父分类Id应该设置为 0
cat_name分类名称不能为空
cat_level分类层级不能为空,0表示一级分类;1表示二级分类;2表示三级分类
  • 响应数据
{
    "data": {
        "cat_id": 62,
        "cat_name": "相框",
        "cat_pid": "1",
        "cat_level": "1"
    },
    "meta": {
        "msg": "创建成功",
        "status": 201
    }
}

3. 根据 id 查询分类

  • 请求路径:categories/:id

  • 请求方法:get

  • 请求参数

参数名参数说明备注
:id分类 ID不能为空携带在url中
  • 响应数据
{
    "data": {
        "cat_id": 3,
        "cat_name": "厨卫电器",
        "cat_pid": 0,
        "cat_level": 0
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

4. 编辑提交分类

  • 请求路径:categories/:id

  • 请求方法:put

  • 请求参数

参数名参数说明备注
:id分类 ID不能为空携带在url中
cat_name分类名称不能为空【此参数,放到请求体中】
  • 响应数据
{
    "data": {
        "cat_id": 22,
        "cat_name": "自拍杆",
        "cat_pid": 7,
        "cat_level": 2
    },
    "meta": {
        "msg": "更新成功",
        "status": 200
    }
}

5. 删除分类

  • 请求路径:categories/:id

  • 请求方法:delete

  • 请求参数

参数名参数说明备注
:id分类 ID不能为空携带在url中
  • 响应数据
{
    "data": null,
    "meta": {
        "msg": "删除成功",
        "status": 200
    }
}

七、分类参数管理

1. 参数列表

  • 请求路径:categories/:id/attributes

  • 请求方法:get

  • 请求参数

参数名参数说明备注
:id分类 ID不能为空携带在url中
selmany或only不能为空,many表示动态参数,only表示静态参数(也称为静态属性)
  • 响应参数
参数名参数说明备注
attr_id分类参数 ID
attr_name分类参数名称
cat_id分类参数所属分类
attr_sel分类参数的类型,many表示动态参数,only表示静态属性
attr_writelist表示从列表选择(动态参数),manual表示手工录入(静态属性)
attr_vals分类参数的明细,如果是动态参数,则该值是以空格分隔的字符串
  • 响应数据
{
    "data": [
        {
            "attr_id": 1,
            "attr_name": "cpu",
            "cat_id": 22,
            "attr_sel": "many",
            "attr_write": "list",
            "attr_vals": "4K高清 5K高清 6K高清"
        }
    ],
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

2. 添加动态参数或静态属性

  • 请求路径:categories/:id/attributes

  • 请求方法:post

  • 请求参数

参数名参数说明备注
:id分类 ID不能为空携带在url中
attr_name参数名称不能为空
attr_selmany或only不能为空
  • 响应数据
{
    "data": {
        "attr_id": 44,
        "attr_name": "测试参数",
        "cat_id": "1",
        "attr_sel": "many",
        "attr_write": "list",
        "attr_vals": "a,b,c"
    },
    "meta": {
        "msg": "创建成功",
        "status": 201
    }
}

3. 根据 ID 查询参数

  • 请求路径:categories/:id/attributes/:attrId

  • 请求方法:get

  • 请求参数

参数名参数说明备注
:id分类 ID不能为空携带在url中
:attrId属性 ID不能为空携带在url中
attr_selmany或only不能为空
  • 响应数据
{
    "data": {
        "attr_id": 1,
        "attr_name": "cpu",
        "cat_id": 22,
        "attr_sel": "only",
        "attr_write": "manual",
        "attr_vals": "ffff"
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

4. 更新参数及明细

  • 请求路径:categories/:id/attributes/:attrId

  • 请求方法:put

  • 请求参数

参数名参数说明备注
:id分类 ID不能为空携带在url中
:attrId参数 ID不能为空携带在url中
attr_name参数名称不能为空,携带在请求体
attr_selmany或only不能为空,携带在请求体
attr_vals参数的明细可选参数,携带在请求体
  • 响应数据
{
    "data": {
        "attr_id": 9,
        "attr_name": "测试更新",
        "cat_id": "43",
        "attr_sel": "only",
        "attr_write": "manual",
        "attr_vals": "abc"
    },
    "meta": {
        "msg": "更新成功",
        "status": 200
    }
}

5. 删除参数

  • 请求路径: categories/:id/attributes/:attrid

  • 请求方法:delete

  • 请求参数

参数名参数说明备注
:id分类 ID不能为空携带在url中
:attrid参数 ID不能为空携带在url中
  • 响应数据
{
    "data": null,
    "meta": {
        "msg": "删除成功",
        "status": 200
    }
}

八、商品管理

1. 商品列表数据

  • 请求路径:goods

  • 请求方法:get

  • 请求参数

参数名参数说明备注
query查询参数可以为空
pagenum当前页码不能为空
pagesize每页显示条数不能为空
  • 响应参数
参数名参数说明备注
total总共商品条数
pagenum当前商品页数
goods_id商品 ID
goods_name商品名称
goods_price价格
goods_number数量
goods_weight重量不能为空
goods_state商品状态商品状态 0: 未通过 1: 审核中 2: 已审核
add_time添加时间
upd_time更新时间
hot_mumber热销品数量
is_promote是否是热销品
  • 响应数据
{
    "data": {
        "total": 50,
        "pagenum": "1",
        "goods": [
            {
                "goods_id": 144,
                "goods_name": "iphone",
                "goods_price": 1,
                "goods_number": 1,
                "goods_weight": 1,
                "goods_state": null,
                "add_time": 1512954923,
                "upd_time": 1512954923,
                "hot_mumber": 0,
                "is_promote": false
            }
        ]
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

2. 添加商品

  • 请求路径:goods

  • 请求方法:post

  • 请求参数

参数名参数说明备注
goods_name商品名称不能为空
goods_cat,逗号分割的分类列表不能为空
goods_price价格不能为空
goods_number数量不能为空
goods_weight重量不能为空
goods_introduce介绍可以为空
pics上传的图片临时路径(对象)可以为空
attrs商品的参数(数组),包含 动态参数静态属性可以为空
  • 请求数据
{
  "goods_name":"test_goods_name2",
  "goods_cat": "1,2,3",
  "goods_price":20,
  "goods_number":30,
  "goods_weight":40,
  "goods_introduce":"abc",
  "pics":[
    {"pic":"/tmp_uploads/30f08d52c551ecb447277eae232304b8"}
    ],
  "attrs":[
    {
      "attr_id":15,
      "attr_value":"ddd"
    },
    {
      "attr_id":15,
      "attr_value":"eee"
    }
    ]
}
  • 响应参数
参数名参数说明备注
total总共商品条数
pagenum当前商品页数
goods_id商品 ID
goods_cat以为','分割的分类列表
goods_name商品名称
goods_price价格
goods_number数量
goods_weight重量不能为空
goods_state商品状态商品状态 0: 未通过 1: 审核中 2: 已审核
add_time添加时间
upd_time更新时间
hot_mumber热销品数量
is_promote是否是热销品
pics上传的图片临时路径(对象)pics_id:图片 ID,goods_id:商品 ID,pics_big:大图,pics_mid:中图,pics_sma:小图
attrs商品的参数(数组)goods_id:商品 ID,attr_value:当前商品的参数值,add_price:浮动价格,attr_vals:预定义的参数值,attr_sel:手动输入,还是单选
  • 响应数据
{
    "data": {
        "goods_id": 145,
        "goods_name": "test_goods_name2",
        "goods_price": 20,
        "cat_id": 1,
        "goods_number": 30,
        "goods_weight": 40,
        "goods_introduce": "abc",
        "goods_big_logo": "",
        "goods_small_logo": "",
        "goods_state": 1,
        "add_time": 1512962370,
        "upd_time": 1512962370,
        "hot_mumber": 0,
        "is_promote": false,
        "pics": [
            {
                "pics_id": 397,
                "goods_id": 145,
                "pics_big": "uploads/goodspics/big_30f08d52c551ecb447277eae232304b8",
                "pics_mid": "uploads/goodspics/mid_30f08d52c551ecb447277eae232304b8",
                "pics_sma": "uploads/goodspics/sma_30f08d52c551ecb447277eae232304b8"
            }
        ],
        "attrs": [
            {
                "goods_id": 145,
                "attr_id": 15,
                "attr_value": "ddd",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            },
            {
                "goods_id": 145,
                "attr_id": 15,
                "attr_value": "eee",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            }
        ]
    },
    "meta": {
        "msg": "创建商品成功",
        "status": 201
    }
}

3. 根据 ID 查询商品

  • 请求路径:goods/:id

  • 请求方法:get

  • 请求参数

参数名参数说明备注
id商品 ID不能为空携带在url中
  • 响应参数
参数名参数说明备注
goods_id商品 ID
goods_name商品名称
goods_price价格
goods_number数量
goods_weight重量不能为空
goods_state商品状态商品状态 0: 未通过 1: 审核中 2: 已审核
goods_introduce介绍
goods_cat以为','分割的分类列表
add_time添加时间
upd_time更新时间
hot_mumber热销品数量
is_promote是否是热销品
pics上传的图片临时路径(对象)pics_id:图片 ID,goods_id:商品 ID,pics_big:大图,pics_mid:中图,pics_sma:小图
attrs商品的参数(数组)goods_id:商品 ID,attr_value:当前商品的参数值,add_price:浮动价格,attr_vals:预定义的参数值,attr_sel:手动输入,还是单选
  • 响应数据
{
    "data": {
        "goods_id": 145,
        "goods_name": "test_goods_name2",
        "goods_price": 20,
        "goods_number": 30,
        "goods_weight": 40,
        "goods_introduce": "abc",
        "goods_big_logo": "",
        "goods_small_logo": "",
        "goods_state": 1,
        "add_time": 1512962370,
        "upd_time": 1512962370,
        "hot_mumber": 0,
        "is_promote": false,
        "pics": [
            {
                "pics_id": 397,
                "goods_id": 145,
                "pics_big": "uploads/goodspics/big_30f08d52c551ecb447277eae232304b8",
                "pics_mid": "uploads/goodspics/mid_30f08d52c551ecb447277eae232304b8",
                "pics_sma": "uploads/goodspics/sma_30f08d52c551ecb447277eae232304b8"
            }
        ],
        "attrs": [
            {
                "goods_id": 145,
                "attr_id": 15,
                "attr_value": "ddd",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            },
            {
                "goods_id": 145,
                "attr_id": 15,
                "attr_value": "eee",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            }
        ]
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

4. 编辑提交商品

  • 请求路径:goods/:id

  • 请求方法:put

  • 请求参数

参数名参数说明备注
id商品 ID不能为空携带在url中
goods_name商品名称不能为空
goods_cat以为','分割的分类列表不能为空
goods_price价格不能为空
goods_number数量不能为空
goods_weight重量不能为空
goods_introduce介绍可以为空
pics上传的图片临时路径(对象)可以为空
attrs商品的参数(数组)可以为空
  • 请求数据
{
  "goods_name":"test_goods_name2",
  "goods_price":20,
  "goods_number":30,
  "goods_weight":40,
  "goods_introduce":"abc",
  "pics":[
    {"pic":"/tmp_uploads/30f08d52c551ecb447277eae232304b8"}
    ],
  "attrs":[
    {
      "attr_id":15,
      "attr_value":"ddd"
    },
    {
      "attr_id":15,
      "attr_value":"eee"
    }
    ]
}
  • 响应参数
参数名参数说明备注
total总共商品条数
pagenum当前商品页数
goods_id商品 ID
goods_name商品名称
goods_price价格
goods_number数量
goods_weight重量不能为空
goods_state商品状态商品状态 0: 未通过 1: 审核中 2: 已审核
add_time添加时间
upd_time更新时间
hot_mumber热销品数量
is_promote是否是热销品
pics上传的图片临时路径(对象)pics_id:图片 ID,goods_id:商品 ID,pics_big:大图,pics_mid:中图,pics_sma:小图
attrs商品的参数(数组)goods_id:商品 ID,attr_value:当前商品的参数值,add_price:浮动价格,attr_vals:预定义的参数值,attr_sel:手动输入,还是单选,
  • 响应数据
{
    "data": {
        "goods_id": 145,
        "goods_name": "test_goods_name2",
        "goods_price": 20,
        "goods_number": 30,
        "goods_weight": 40,
        "goods_introduce": "abc",
        "goods_big_logo": "",
        "goods_small_logo": "",
        "goods_state": 1,
        "add_time": 1512962370,
        "upd_time": 1512962370,
        "hot_mumber": 0,
        "is_promote": false,
        "pics": [
            {
                "pics_id": 397,
                "goods_id": 145,
                "pics_big": "uploads/goodspics/big_30f08d52c551ecb447277eae232304b8",
                "pics_mid": "uploads/goodspics/mid_30f08d52c551ecb447277eae232304b8",
                "pics_sma": "uploads/goodspics/sma_30f08d52c551ecb447277eae232304b8"
            }
        ],
        "attrs": [
            {
                "goods_id": 145,
                "attr_id": 15,
                "attr_value": "ddd",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            },
            {
                "goods_id": 145,
                "attr_id": 15,
                "attr_value": "eee",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            }
        ]
    },
    "meta": {
        "msg": "更新商品成功",
        "status": 200
    }
}

5. 删除商品

  • 请求路径:goods/:id

  • 请求方法:delete

  • 请求参数

参数名参数说明备注
id商品 ID不能为空携带在url中
  • 响应数据
{
    "data": null,
    "meta": {
        "msg": "删除成功",
        "status": 200
    }
}

###同步商品图片

  • 请求路径:goods/:id/pics

  • 请求方法:put

  • 请求参数

参数名参数说明备注
id商品 ID不能为空携带在url中
pics商品图片集合如果有 pics_id 字段会保留该图片,如果没有 pics_id 但是有 pic 字段就会新生成图片数据
  • 请求数据
;[
  { pic: 'tmp_uploads/db28f6316835836e97653b5c75e418be.png' },
  {
    pics_id: 397,
    goods_id: 145,
    pics_big: 'uploads/goodspics/big_30f08d52c551ecb447277eae232304b8',
    pics_mid: 'uploads/goodspics/mid_30f08d52c551ecb447277eae232304b8',
    pics_sma: 'uploads/goodspics/sma_30f08d52c551ecb447277eae232304b8'
  }
]
  • 响应数据
{
    "data": {
        "goods_id": 96,
        "goods_name": "iphoneXX",
        "goods_price": 2,
        "goods_number": 22,
        "goods_weight": 22,
        "goods_introduce": null,
        "goods_big_logo": "./uploads/goods/20201113/483a3b8e99e534ec3e4312dbbaee7c9d.jpg",
        "goods_small_logo": "./uploads/goods/20201113/small_483a3b8e99e534ec3e4312dbbaee7c9d.jpg",
        "goods_state": 0,
        "is_del": "1",
        "add_time": 1510045904,
        "upd_time": 1512635159,
        "delete_time": 1512635159,
        "hot_mumber": 0,
        "is_promote": false,
        "pics": [
            {
                "pics_id": 383,
                "goods_id": 96,
                "pics_big": "uploads/goodspics/big_6f5750132abd3f5b2b93dd722fcde653.jpg",
                "pics_mid": "uploads/goodspics/mid_6f5750132abd3f5b2b93dd722fcde653.jpg",
                "pics_sma": "uploads/goodspics/sma_6f5750132abd3f5b2b93dd722fcde653.jpg"
            }
        ],
        "attrs": [
            {
                "goods_id": 96,
                "attr_id": 15,
                "attr_value": "eee",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            },
            {
                "goods_id": 96,
                "attr_id": 15,
                "attr_value": "ddd",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            }
        ]
    },
    "meta": {
        "msg": "更新成功",
        "status": 200
    }
}

###同步商品属性

  • 请求路径:goods/:id/attributes

  • 请求方法:put

  • 请求参数

参数名参数说明备注
id商品 ID不能为空携带在url中
  • 请求数据
;[
  {
    attr_id: 15,
    attr_value: 'ddd'
  },
  {
    attr_id: 15,
    attr_value: 'eee'
  }
]
  • 响应数据
{
    "data": {
        "goods_id": 96,
        "goods_name": "iphoneXX",
        "goods_price": 2,
        "goods_number": 22,
        "goods_weight": 22,
        "goods_introduce": null,
        "goods_big_logo": "./uploads/goods/20201113/483a3b8e99e534ec3e4312dbbaee7c9d.jpg",
        "goods_small_logo": "./uploads/goods/20201113/small_483a3b8e99e534ec3e4312dbbaee7c9d.jpg",
        "goods_state": 0,
        "is_del": "1",
        "add_time": 1510045904,
        "upd_time": 1512635159,
        "delete_time": 1512635159,
        "hot_mumber": 0,
        "is_promote": false,
        "pics": [
            {
                "pics_id": 383,
                "goods_id": 96,
                "pics_big": "uploads/goodspics/big_6f5750132abd3f5b2b93dd722fcde653.jpg",
                "pics_mid": "uploads/goodspics/mid_6f5750132abd3f5b2b93dd722fcde653.jpg",
                "pics_sma": "uploads/goodspics/sma_6f5750132abd3f5b2b93dd722fcde653.jpg"
            }
        ],
        "attrs": [
            {
                "goods_id": 96,
                "attr_id": 15,
                "attr_value": "eee",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            },
            {
                "goods_id": 96,
                "attr_id": 15,
                "attr_value": "ddd",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            }
        ]
    },
    "meta": {
        "msg": "更新成功",
        "status": 200
    }
}

###商品图片处理必须安装 GraphicsMagick

  • linux
apt-get install GraphicsMagick
  • Mac OS X
brew install GraphicsMagick

6. 图片上传

  • 请求路径:upload

  • 请求方法:post

  • 请求参数

参数名参数说明备注
file上传文件
  • 响应数据
{
    "data": {
        "tmp_path": "tmp_uploads/ccfc5179a914e94506bcbb7377e8985f.png",
        "url": "http://127.0.0.1:8888tmp_uploads/ccfc5179a914e94506bcbb7377e8985f.png"
    },
    "meta": {
        "msg": "上传成功",
        "status": 200
    }
}

九、订单管理

1. 订单数据列表

  • 请求路径:orders

  • 请求方法:get

  • 请求参数

参数名参数说明备注
query查询参数可以为空
pagenum当前页码可以为空,默认为1
pagesize每页显示条数可以为空,省略时返回所有订单
user_id用户 ID可以为空
pay_status支付状态可以为空
is_send是否发货可以为空
order_fapiao_title['个人','公司']可以为空
order_fapiao_company公司名称可以为空
order_fapiao_content发票内容可以为空
consignee_addr收货地址可以为空
  • 响应数据
{
    "data": {
        "total": 1,
        "pagenum": "1",
        "goods": [
            {
                "order_id": 47,
                "user_id": 133,
                "order_number": "59e7502d7993d",
                "order_price": 322,
                "order_pay": "1",
                "is_send": "是",
                "trade_no": "",
                "order_fapiao_title": "个人",
                "order_fapiao_company": "",
                "order_fapiao_content": "办公用品",
                "consignee_addr": "江苏省南京市秦淮区龙蟠中路666号",
                "pay_status": "1",
                "create_time": 1508331565,
                "update_time": 1508331565
            }
        ]
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

2. 修改订单状态

  • 请求路径:orders/:id

  • 请求方法:put

  • 请求参数

参数名参数说明备注
id订单 ID不能为空携带在url中
is_send订单是否发货1:已经发货,0:未发货
order_pay订单支付支付方式 0 未支付 1 支付宝 2 微信 3 银行卡
order_price订单价格
order_number订单数量
pay_status支付状态订单状态: 0 未付款、1 已付款
  • 请求数据说明

    • 所有请求数据都是增量更新,如果参数不填写,就不会更新该字段
  • 响应数据

{
    "data": {
        "order_id": 67,
        "user_id": 1,
        "order_number": "itany-g7kmck71vjaujfgoi",
        "order_price": 20,
        "order_pay": "0",
        "is_send": "否",
        "trade_no": "",
        "order_fapiao_title": "个人",
        "order_fapiao_company": "",
        "order_fapiao_content": "",
        "consignee_addr": "",
        "pay_status": "0",
        "create_time": 1512533560,
        "update_time": 1512533560,
        "goods": [
            {
                "id": 82,
                "order_id": 67,
                "goods_id": 96,
                "goods_price": 333,
                "goods_number": 2,
                "goods_total_price": 999
            },
            {
                "id": 83,
                "order_id": 67,
                "goods_id": 95,
                "goods_price": 666,
                "goods_number": 5,
                "goods_total_price": 999
            }
        ]
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

3. 查看订单详情

  • 请求路径:orders/:id

  • 请求方法:get

  • 请求参数

参数名参数说明备注
id订单 ID不能为空携带在url中
  • 响应数据
{
    "data": {
        "order_id": 67,
        "user_id": 1,
        "order_number": "itany-g7kmck71vjaujfgoi",
        "order_price": 20,
        "order_pay": "0",
        "is_send": "否",
        "trade_no": "",
        "order_fapiao_title": "个人",
        "order_fapiao_company": "",
        "order_fapiao_content": "",
        "consignee_addr": "",
        "pay_status": "0",
        "create_time": 1512533560,
        "update_time": 1512533560,
        "goods": [
            {
                "id": 82,
                "order_id": 67,
                "goods_id": 96,
                "goods_price": 333,
                "goods_number": 2,
                "goods_total_price": 999
            },
            {
                "id": 83,
                "order_id": 67,
                "goods_id": 95,
                "goods_price": 666,
                "goods_number": 5,
                "goods_total_price": 999
            }
        ]
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

4. 修改地址

  • 请求路径:orders/:id/address

  • 请求方法:put

  • 请求参数

参数名参数说明备注
id订单 ID不能为空携带在url中
consignee_addr收货地址可以为空
  • 响应数据
{
    "data": {},
    "meta": {
        "msg": "修改地址成功",
        "status": 200
    }
}

5. 查看物流信息

  • 请求路径:/kuaidi/:id

  • 请求方法:get

  • 物流单号:815294206237577

  • 响应数据:

  {
      "meta":{
          "status":200,
          "message":"获取物流信息成功!"
      },
      "data":[
          {
              "time":"2020-11-15 12:39:56",
              "ftime":"2020-11-15 12:39:56",
              "context":"已签收,签收人是 汤小洋 先生/女士,如有疑问请联系派件员阿奇(13805148888),如您未收到此快递,请拨打投诉电话:15294207777,感谢使用申通快递,期待再次为您服务",
              "location":null
          },
          {
              "time":"2020-11-15 08:46:54",
              "ftime":"2020-11-15 08:46:54",
              "context":"上海浦东寒亭营业厅-寒亭阿奇(13805148888)-派件中",
              "location":null
          },
          {
              "time":"2020-11-15 08:38:57",
              "ftime":"2020-11-15 08:38:57",
              "context":"已到达-上海浦东寒亭营业厅",
              "location":null
          },
          {
              "time":"2020-11-15 06:38:13",
              "ftime":"2020-11-15 06:38:13",
              "context":"已到达-上海浦东寒亭营业厅",
              "location":null
          },
          {
              "time":"2020-11-14 20:56:45",
              "ftime":"2020-11-14 20:56:45",
              "context":"上海浦东转运中心-已发往-上海浦东寒亭公司",
              "location":null
          },
          {
              "time":"2020-11-14 20:52:44",
              "ftime":"2020-11-14 20:52:44",
              "context":"已到达-上海浦东转运中心",
              "location":null
          },
          {
              "time":"2020-11-14 17:43:48",
              "ftime":"2020-11-14 17:43:48",
              "context":"已到达-上海浦东转运中心",
              "location":null
          },
          {
              "time":"2020-11-14 10:53:46",
              "ftime":"2020-11-14 10:53:46",
              "context":"上海浦东转运中心-已发往-上海浦东转运中心",
              "location":null
          },
          {
              "time":"2020-11-14 10:43:31",
              "ftime":"2020-11-14 10:43:31",
              "context":"已到达-上海浦东转运中心",
              "location":null
          },
          {
              "time":"2020-11-14 02:43:20",
              "ftime":"2020-11-14 02:43:20",
              "context":"江苏苏州转运中心-已发往-上海浦东转运中心",
              "location":null
          },
          {
              "time":"2020-11-14 02:41:40",
              "ftime":"2020-11-14 02:41:40",
              "context":"已到达-江苏苏州转运中心",
              "location":null
          },
          {
              "time":"2020-11-13 16:28:13",
              "ftime":"2020-11-13 16:28:13",
              "context":"江苏南京转运中心-已发往-江苏苏州转运中心",
              "location":null
          },
          {
              "time":"2020-11-13 15:03:30",
              "ftime":"2020-11-13 15:03:30",
              "context":"南京IT教育公司-已发往-江苏南京转运中心",
              "location":null
          },
          {
              "time":"2020-11-13 14:47:56",
              "ftime":"2020-11-13 14:47:56",
              "context":"南京IT教育公司-已发往-江苏南京转运中心",
              "location":null
          },
          {
              "time":"2020-11-13 14:37:06",
              "ftime":"2020-11-13 14:37:06",
              "context":"南京IT教育公司-城东汪小主宠物店-已收件",
              "location":null
          }
      ]
  }

一、API V2 接口说明

  • 接口基准地址:http://www.tangxiaoyang.vip:8888/api/v2/

  • 服务端已开启 CORS 跨域支持

  • API V2 认证统一使用 Token 认证

  • 需要授权的 API ,必须在请求头中使用 Authorization 字段提供 token 令牌

  • 使用 HTTP Status Code 标识状态

  • 数据返回格式统一使用 JSON

1. 支持的请求方法

  • GET(SELECT):从服务器取出资源(一项或多项)。

  • POST(CREATE):在服务器新建一个资源。

  • PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。

  • PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。

  • DELETE(DELETE):从服务器删除资源。

  • HEAD:获取资源的元数据。

  • OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。

2. 通用返回状态说明

状态码含义说明
200OK请求成功
201CREATED创建成功
204DELETED删除成功
400BAD REQUEST请求的地址不存在或者包含不支持的参数
401UNAUTHORIZED未授权
403FORBIDDEN被禁止访问
404NOT FOUND请求的资源不存在
422Unprocesable entity[POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误
500INTERNAL SERVER ERROR内部错误

二、登录

1. 登录验证接口

  • 请求路径:login

  • 请求方法:post

  • 请求参数

参数名参数说明备注
username用户名不能为空
password密码不能为空
  • 响应参数
参数名参数说明备注
id用户 ID
rid用户角色 ID
username用户名
mobile手机号
email邮箱
token令牌基于 jwt 的令牌
  • 响应数据
{
    "data": {
        "id": 500,
        "rid": 0,
        "username": "admin",
        "mobile": "123",
        "email": "123@qq.com",
        "token": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjUwMCwicmlkIjowLCJpYXQiOjE1MTI1NDQyOTksImV4cCI6MTUxMjYzMDY5OX0.eGrsrvwHm-tPsO9r_pxHIQ5i5L1kX9RX444uwnRGaIM"
    },
    "meta": {
        "msg": "登录成功",
        "status": 200
    }
}

三、用户管理

1. 用户数据列表

  • 请求路径:users

  • 请求方法:get

  • 请求参数

参数名参数说明备注
query查询参数可以为空
pagenum当前页码不能为空
pagesize每页显示条数不能为空
  • 响应参数
参数名参数说明备注
total总记录数
pagenum当前页码
users用户数据集合
  • 响应数据
{
    "data": {
        "total": 5,
        "pagenum": 1,
        "users": [
            {
                "id": 25,
                "username": "tom",
                "mobile": "13951783475",
                "type": 1,
                "email": "1049901079@qq.com",
                "create_time": "2020-11-09T20:36:26.000Z",
                "mg_state": true, // 当前用户的状态
                "role_name": "超级管理员"
            }
        ]
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

2. 添加用户

  • 请求路径:users

  • 请求方法:post

  • 请求参数

参数名参数说明备注
username用户名称不能为空
password用户密码不能为空
email邮箱可以为空
mobile手机号可以为空
  • 响应参数
参数名参数说明备注
id用户 ID
rid用户角色 ID
username用户名
mobile手机号
email邮箱
  • 响应数据
{
    "data": {
        "id": 28,
        "username": "tom",
        "mobile": "test",
        "type": 1,
        "openid": "",
        "email": "test@test.com",
        "create_time": "2020-11-10T03:47:13.533Z",
        "modify_time": null,
        "is_delete": false,
        "is_active": false
    },
    "meta": {
        "msg": "用户创建成功",
        "status": 201
    }
}

3. 修改用户状态

  • 请求路径:users/:uId/state/:type

  • 请求方法:put

  • 请求参数

参数名参数说明备注
uId用户 ID不能为空携带在url中
type用户状态不能为空携带在url中,值为 true 或者 false
  • 响应数据
{
  "data": {
    "id": 566,
    "rid": 30,
    "username": "admin",
    "mobile": "123456",
    "email": "bb@itany.com",
    "mg_state": 0
  },
  "meta": {
    "msg": "设置状态成功",
    "status": 200
  }
}

4. 根据 ID 查询用户信息

  • 请求路径:users/:id

  • 请求方法:get

  • 请求参数

参数名参数说明备注
id用户 ID不能为空携带在url中
  • 响应参数
参数名参数说明备注
id用户 ID
role_id角色 ID
mobile手机号
email邮箱
  • 响应数据
{
    "data": {
        "id": 503,
        "username": "admin3",
        "role_id": 0,
        "mobile": "00000",
        "email": "new@new.com"
    },
    "meta": {
        "msg": "查询成功",
        "status": 200
    }
}

5. 编辑提交用户

  • 请求路径:users/:id

  • 请求方法:put

  • 请求参数

参数名参数说明备注
id用户 id不能为空 参数是url参数:id
email邮箱可以为空
mobile手机号可以为空
  • 响应参数
参数名参数说明备注
id用户 ID
role_id角色 ID
mobile手机号
email邮箱
  • 响应数据
/* 200表示成功,500表示失败 */
{
    "data": {
        "id": 503,
        "username": "admin3",
        "role_id": 0,
        "mobile": "111",
        "email": "123@123.com"
    },
    "meta": {
        "msg": "更新成功",
        "status": 200
    }
}

6. 删除单个用户

  • 请求路径:users/:id

  • 请求方法:delete

  • 请求参数

参数名参数说明备注
id用户 id不能为空参数是url参数:id
  • 响应参数

  • 响应数据

{
    "data": null,
    "meta": {
        "msg": "删除成功",
        "status": 200
    }
}

7. 分配用户角色

  • 请求路径:users/:id/role

  • 请求方法:put

  • 请求参数

参数名参数说明备注
id用户 ID不能为空参数是url参数:id
rid角色 id不能为空参数body参数
  • 响应参数
参数名参数说明备注
id用户 ID
role_id角色 ID
mobile手机号
email邮箱
  • 响应数据
{
    "data": {
        "id": 508,
        "rid": "30",
        "username": "asdf1",
        "mobile": "123123",
        "email": "adfsa@qq.com"
    },
    "meta": {
        "msg": "设置角色成功",
        "status": 200
    }
}

四、权限管理

1. 所有权限列表

  • 请求路径:rights/:type

  • 请求方法:get

  • 请求参数

参数名参数说明备注
type类型值 list 或 tree , list 列表显示权限, tree 树状显示权限,参数是url参数:type
  • 响应参数
参数名参数说明备注
id权限 ID
authName权限说明
level权限层级
pid权限父 ID
path对应访问路径
  • 响应数据 type=list
  {
    "data": [
        {
            "id": 101,
            "authName": "商品管理",
            "level": "0",
            "pid": 0,
            "path": null
        },
        {
            "id": 102,
            "authName": "订单管理",
            "level": "0",
            "pid": 0,
            "path": null
        }
    ],
    "meta": {
        "msg": "获取权限列表成功",
        "status": 200
    }
}

type=tree

  {
    data: [
      {
        id: 101,
        authName: '商品管理',
        path: null,
        pid: 0,
        children: [
          {
            id: 104,
            authName: '商品列表',
            path: null,
            pid: 101,
            children: [
              {
                id: 105,
                authName: '添加商品',
                path: null,
                pid: '104,101'
              }
            ]
          }
        ]
      }
    ],
    meta: {
      msg: '获取权限列表成功',
      status: 200
    }
  }

2. 左侧菜单权限

  • 请求路径:menus

  • 请求方法:get

  • 响应数据

{
    "data":
        {
            "id": 101,
            "authName": "商品管理",
            "path": null,
            "children": [
                {
                    "id": 104,
                    "authName": "商品列表",
                    "path": null,
                    "children": []
                }
            ]
        }
    "meta": {
        "msg": "获取菜单列表成功",
        "status": 200
    }
}

五、角色管理

1. 角色列表

  • 请求路径:roles

  • 请求方法:get

  • 响应数据说明

    • 第一层为角色信息

    • 第二层开始为权限说明,权限一共有 3 层权限

    • 最后一层权限,不包含 children 属性

  • 响应数据

{
    "data": [
        {
            "id": 30,
            "roleName": "主管",
            "roleDesc": "技术负责人",
            "children": [
                {
                    "id": 101,
                    "authName": "商品管理",
                    "path": null,
                    "children": [
                        {
                            "id": 104,
                            "authName": "商品列表",
                            "path": null,
                            "children": [
                                {
                                    "id": 105,
                                    "authName": "添加商品",
                                    "path": null
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ],
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

2. 添加角色

  • 请求路径:roles

  • 请求方法:post

  • 请求参数

参数名参数说明备注
roleName角色名称不能为空
roleDesc角色描述可以为空
  • 响应参数
参数名参数说明备注
roleId角色 ID
roleName角色名称
roleDesc角色描述
  • 响应数据
{
    "data": {
        "roleId": 40,
        "roleName": "admin2",
        "roleDesc": "admin2Desc"
    },
    "meta": {
        "msg": "创建成功",
        "status": 201
    }
}

3. 根据 ID 查询角色

  • 请求路径:roles/:id

  • 请求方法:get

  • 请求参数

参数名参数说明备注
:id角色 ID不能为空携带在url中
  • 响应参数
参数名参数说明备注
roleId角色 ID
roleName角色名称
roleDesc角色描述
  • 响应数据
{
    "data": {
        "roleId": 31,
        "roleName": "测试角色",
        "roleDesc": "测试负责人"
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

4. 编辑提交角色

  • 请求路径:roles/:id

  • 请求方法:put

  • 请求参数

参数名参数说明备注
:id角色 ID不能为空携带在url中
roleName角色名称不能为空
roleDesc角色描述可以为空
  • 响应数据
{
    "data": {
        "roleId": 31,
        "roleName": "测试角色",
        "roleDesc": "测试角色描述"
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

5. 删除角色

  • 请求路径:roles/:id

  • 请求方法:delete

  • 请求参数

参数名参数说明备注
:id角色 ID不能为空携带在url中
  • 响应数据
{
    "data": null,
    "meta": {
        "msg": "删除成功",
        "status": 200
    }
}

6. 角色授权

  • 请求路径:roles/:roleId/rights

  • 请求方法:post

  • 请求参数:通过 请求体 发送给后端

参数名参数说明备注
:roleId角色 ID不能为空携带在url中
rids权限 ID 列表(字符串), 分割的权限 ID 列表(获取所有被选中、叶子节点的key和半选中节点的key, 包括 1,2,3级节点)
  • 响应数据
{
    "data": null,
    "meta": {
        "msg": "更新成功",
        "status": 200
    }
}

7. 删除角色指定权限

  • 请求路径:roles/:roleId/rights/:rightId

  • 请求方法:delete

  • 请求参数 参数名 参数说明 备注 :roleId 角色 ID 不能为空携带在url中 :rightId 权限 ID 不能为空携带在url中

  • 响应数据说明

    • 返回的data, 是当前角色下最新的权限数据
  • 响应数据

  {
      "data": [
          {
              "id": 101,
              "authName": "商品管理",
              "path": null,
              "children": [
                  {
                      "id": 104,
                      "authName": "商品列表",
                      "path": null,
                      "children": [
                          {
                              "id": 105,
                              "authName": "添加商品",
                              "path": null
                          },
                          {
                              "id": 116,
                              "authName": "修改",
                              "path": null
                          }
                      ]
                  }
              ]
          }
      ],
      "meta": {
          "msg": "取消权限成功",
          "status": 200
      }
  }

六、商品分类管理

1. 商品分类数据列表

  • 请求路径:categories

  • 请求方法:get

  • 请求参数

参数名参数说明备注
type[1,2,3]值:1,2,3 分别表示显示一层二层三层分类列表
【可选参数】如果不传递,则默认获取所有级别的分类
pagenum当前页码值【可选参数】如果不传递,则默认获取所有分类
pagesize每页显示多少条数据【可选参数】如果不传递,则默认获取所有分类
  • 响应参数
参数名参数说明备注
cat_id分类 ID
cat_name分类名称
cat_pid分类父 ID
cat_level分类当前层级
  • 响应数据
{
    "data": [
        {
            "cat_id": 1,
            "cat_name": "大家电",
            "cat_pid": 0,
            "cat_level": 0,
            "cat_deleted": false,
            "children": [
                {
                    "cat_id": 3,
                    "cat_name": "电视",
                    "cat_pid": 1,
                    "cat_level": 1,
                    "cat_deleted": false,
                    "children": [
                        {
                            "cat_id": 6,
                            "cat_name": "曲面电视",
                            "cat_pid": 3,
                            "cat_level": 2,
                            "cat_deleted": false
                        },
                        {
                            "cat_id": 7,
                            "cat_name": "海信",
                            "cat_pid": 3,
                            "cat_level": 2,
                            "cat_deleted": false
                        }
                    ]
                }
            ]
        }
    ],
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

2. 添加分类

  • 请求路径:categories

  • 请求方法:post

  • 请求参数

参数名参数说明备注
cat_pid分类父 ID不能为空,如果要添加一级分类,则父分类Id应该设置为 0
cat_name分类名称不能为空
cat_level分类层级不能为空,0表示一级分类;1表示二级分类;2表示三级分类
  • 响应数据
{
    "data": {
        "cat_id": 62,
        "cat_name": "相框",
        "cat_pid": "1",
        "cat_level": "1"
    },
    "meta": {
        "msg": "创建成功",
        "status": 201
    }
}

3. 根据 id 查询分类

  • 请求路径:categories/:id

  • 请求方法:get

  • 请求参数

参数名参数说明备注
:id分类 ID不能为空携带在url中
  • 响应数据
{
    "data": {
        "cat_id": 3,
        "cat_name": "厨卫电器",
        "cat_pid": 0,
        "cat_level": 0
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

4. 编辑提交分类

  • 请求路径:categories/:id

  • 请求方法:put

  • 请求参数

参数名参数说明备注
:id分类 ID不能为空携带在url中
cat_name分类名称不能为空【此参数,放到请求体中】
  • 响应数据
{
    "data": {
        "cat_id": 22,
        "cat_name": "自拍杆",
        "cat_pid": 7,
        "cat_level": 2
    },
    "meta": {
        "msg": "更新成功",
        "status": 200
    }
}

5. 删除分类

  • 请求路径:categories/:id

  • 请求方法:delete

  • 请求参数

参数名参数说明备注
:id分类 ID不能为空携带在url中
  • 响应数据
{
    "data": null,
    "meta": {
        "msg": "删除成功",
        "status": 200
    }
}

七、分类参数管理

1. 参数列表

  • 请求路径:categories/:id/attributes

  • 请求方法:get

  • 请求参数

参数名参数说明备注
:id分类 ID不能为空携带在url中
selmany或only不能为空,many表示动态参数,only表示静态参数(也称为静态属性)
  • 响应参数
参数名参数说明备注
attr_id分类参数 ID
attr_name分类参数名称
cat_id分类参数所属分类
attr_sel分类参数的类型,many表示动态参数,only表示静态属性
attr_writelist表示从列表选择(动态参数),manual表示手工录入(静态属性)
attr_vals分类参数的明细,如果是动态参数,则该值是以空格分隔的字符串
  • 响应数据
{
    "data": [
        {
            "attr_id": 1,
            "attr_name": "cpu",
            "cat_id": 22,
            "attr_sel": "many",
            "attr_write": "list",
            "attr_vals": "4K高清 5K高清 6K高清"
        }
    ],
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

2. 添加动态参数或静态属性

  • 请求路径:categories/:id/attributes

  • 请求方法:post

  • 请求参数

参数名参数说明备注
:id分类 ID不能为空携带在url中
attr_name参数名称不能为空
attr_selmany或only不能为空
  • 响应数据
{
    "data": {
        "attr_id": 44,
        "attr_name": "测试参数",
        "cat_id": "1",
        "attr_sel": "many",
        "attr_write": "list",
        "attr_vals": "a,b,c"
    },
    "meta": {
        "msg": "创建成功",
        "status": 201
    }
}

3. 根据 ID 查询参数

  • 请求路径:categories/:id/attributes/:attrId

  • 请求方法:get

  • 请求参数

参数名参数说明备注
:id分类 ID不能为空携带在url中
:attrId属性 ID不能为空携带在url中
attr_selmany或only不能为空
  • 响应数据
{
    "data": {
        "attr_id": 1,
        "attr_name": "cpu",
        "cat_id": 22,
        "attr_sel": "only",
        "attr_write": "manual",
        "attr_vals": "ffff"
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

4. 更新参数及明细

  • 请求路径:categories/:id/attributes/:attrId

  • 请求方法:put

  • 请求参数

参数名参数说明备注
:id分类 ID不能为空携带在url中
:attrId参数 ID不能为空携带在url中
attr_name参数名称不能为空,携带在请求体
attr_selmany或only不能为空,携带在请求体
attr_vals参数的明细可选参数,携带在请求体
  • 响应数据
{
    "data": {
        "attr_id": 9,
        "attr_name": "测试更新",
        "cat_id": "43",
        "attr_sel": "only",
        "attr_write": "manual",
        "attr_vals": "abc"
    },
    "meta": {
        "msg": "更新成功",
        "status": 200
    }
}

5. 删除参数

  • 请求路径: categories/:id/attributes/:attrid

  • 请求方法:delete

  • 请求参数

参数名参数说明备注
:id分类 ID不能为空携带在url中
:attrid参数 ID不能为空携带在url中
  • 响应数据
{
    "data": null,
    "meta": {
        "msg": "删除成功",
        "status": 200
    }
}

八、商品管理

1. 商品列表数据

  • 请求路径:goods

  • 请求方法:get

  • 请求参数

参数名参数说明备注
query查询参数可以为空
pagenum当前页码不能为空
pagesize每页显示条数不能为空
  • 响应参数
参数名参数说明备注
total总共商品条数
pagenum当前商品页数
goods_id商品 ID
goods_name商品名称
goods_price价格
goods_number数量
goods_weight重量不能为空
goods_state商品状态商品状态 0: 未通过 1: 审核中 2: 已审核
add_time添加时间
upd_time更新时间
hot_mumber热销品数量
is_promote是否是热销品
  • 响应数据
{
    "data": {
        "total": 50,
        "pagenum": "1",
        "goods": [
            {
                "goods_id": 144,
                "goods_name": "iphone",
                "goods_price": 1,
                "goods_number": 1,
                "goods_weight": 1,
                "goods_state": null,
                "add_time": 1512954923,
                "upd_time": 1512954923,
                "hot_mumber": 0,
                "is_promote": false
            }
        ]
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

2. 添加商品

  • 请求路径:goods

  • 请求方法:post

  • 请求参数

参数名参数说明备注
goods_name商品名称不能为空
goods_cat,逗号分割的分类列表不能为空
goods_price价格不能为空
goods_number数量不能为空
goods_weight重量不能为空
goods_introduce介绍可以为空
pics上传的图片临时路径(对象)可以为空
attrs商品的参数(数组),包含 动态参数静态属性可以为空
  • 请求数据
{
  "goods_name":"test_goods_name2",
  "goods_cat": "1,2,3",
  "goods_price":20,
  "goods_number":30,
  "goods_weight":40,
  "goods_introduce":"abc",
  "pics":[
    {"pic":"/tmp_uploads/30f08d52c551ecb447277eae232304b8"}
    ],
  "attrs":[
    {
      "attr_id":15,
      "attr_value":"ddd"
    },
    {
      "attr_id":15,
      "attr_value":"eee"
    }
    ]
}
  • 响应参数
参数名参数说明备注
total总共商品条数
pagenum当前商品页数
goods_id商品 ID
goods_cat以为','分割的分类列表
goods_name商品名称
goods_price价格
goods_number数量
goods_weight重量不能为空
goods_state商品状态商品状态 0: 未通过 1: 审核中 2: 已审核
add_time添加时间
upd_time更新时间
hot_mumber热销品数量
is_promote是否是热销品
pics上传的图片临时路径(对象)pics_id:图片 ID,goods_id:商品 ID,pics_big:大图,pics_mid:中图,pics_sma:小图
attrs商品的参数(数组)goods_id:商品 ID,attr_value:当前商品的参数值,add_price:浮动价格,attr_vals:预定义的参数值,attr_sel:手动输入,还是单选
  • 响应数据
{
    "data": {
        "goods_id": 145,
        "goods_name": "test_goods_name2",
        "goods_price": 20,
        "cat_id": 1,
        "goods_number": 30,
        "goods_weight": 40,
        "goods_introduce": "abc",
        "goods_big_logo": "",
        "goods_small_logo": "",
        "goods_state": 1,
        "add_time": 1512962370,
        "upd_time": 1512962370,
        "hot_mumber": 0,
        "is_promote": false,
        "pics": [
            {
                "pics_id": 397,
                "goods_id": 145,
                "pics_big": "uploads/goodspics/big_30f08d52c551ecb447277eae232304b8",
                "pics_mid": "uploads/goodspics/mid_30f08d52c551ecb447277eae232304b8",
                "pics_sma": "uploads/goodspics/sma_30f08d52c551ecb447277eae232304b8"
            }
        ],
        "attrs": [
            {
                "goods_id": 145,
                "attr_id": 15,
                "attr_value": "ddd",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            },
            {
                "goods_id": 145,
                "attr_id": 15,
                "attr_value": "eee",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            }
        ]
    },
    "meta": {
        "msg": "创建商品成功",
        "status": 201
    }
}

3. 根据 ID 查询商品

  • 请求路径:goods/:id

  • 请求方法:get

  • 请求参数

参数名参数说明备注
id商品 ID不能为空携带在url中
  • 响应参数
参数名参数说明备注
goods_id商品 ID
goods_name商品名称
goods_price价格
goods_number数量
goods_weight重量不能为空
goods_state商品状态商品状态 0: 未通过 1: 审核中 2: 已审核
goods_introduce介绍
goods_cat以为','分割的分类列表
add_time添加时间
upd_time更新时间
hot_mumber热销品数量
is_promote是否是热销品
pics上传的图片临时路径(对象)pics_id:图片 ID,goods_id:商品 ID,pics_big:大图,pics_mid:中图,pics_sma:小图
attrs商品的参数(数组)goods_id:商品 ID,attr_value:当前商品的参数值,add_price:浮动价格,attr_vals:预定义的参数值,attr_sel:手动输入,还是单选
  • 响应数据
{
    "data": {
        "goods_id": 145,
        "goods_name": "test_goods_name2",
        "goods_price": 20,
        "goods_number": 30,
        "goods_weight": 40,
        "goods_introduce": "abc",
        "goods_big_logo": "",
        "goods_small_logo": "",
        "goods_state": 1,
        "add_time": 1512962370,
        "upd_time": 1512962370,
        "hot_mumber": 0,
        "is_promote": false,
        "pics": [
            {
                "pics_id": 397,
                "goods_id": 145,
                "pics_big": "uploads/goodspics/big_30f08d52c551ecb447277eae232304b8",
                "pics_mid": "uploads/goodspics/mid_30f08d52c551ecb447277eae232304b8",
                "pics_sma": "uploads/goodspics/sma_30f08d52c551ecb447277eae232304b8"
            }
        ],
        "attrs": [
            {
                "goods_id": 145,
                "attr_id": 15,
                "attr_value": "ddd",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            },
            {
                "goods_id": 145,
                "attr_id": 15,
                "attr_value": "eee",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            }
        ]
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

4. 编辑提交商品

  • 请求路径:goods/:id

  • 请求方法:put

  • 请求参数

参数名参数说明备注
id商品 ID不能为空携带在url中
goods_name商品名称不能为空
goods_cat以为','分割的分类列表不能为空
goods_price价格不能为空
goods_number数量不能为空
goods_weight重量不能为空
goods_introduce介绍可以为空
pics上传的图片临时路径(对象)可以为空
attrs商品的参数(数组)可以为空
  • 请求数据
{
  "goods_name":"test_goods_name2",
  "goods_price":20,
  "goods_number":30,
  "goods_weight":40,
  "goods_introduce":"abc",
  "pics":[
    {"pic":"/tmp_uploads/30f08d52c551ecb447277eae232304b8"}
    ],
  "attrs":[
    {
      "attr_id":15,
      "attr_value":"ddd"
    },
    {
      "attr_id":15,
      "attr_value":"eee"
    }
    ]
}
  • 响应参数
参数名参数说明备注
total总共商品条数
pagenum当前商品页数
goods_id商品 ID
goods_name商品名称
goods_price价格
goods_number数量
goods_weight重量不能为空
goods_state商品状态商品状态 0: 未通过 1: 审核中 2: 已审核
add_time添加时间
upd_time更新时间
hot_mumber热销品数量
is_promote是否是热销品
pics上传的图片临时路径(对象)pics_id:图片 ID,goods_id:商品 ID,pics_big:大图,pics_mid:中图,pics_sma:小图
attrs商品的参数(数组)goods_id:商品 ID,attr_value:当前商品的参数值,add_price:浮动价格,attr_vals:预定义的参数值,attr_sel:手动输入,还是单选,
  • 响应数据
{
    "data": {
        "goods_id": 145,
        "goods_name": "test_goods_name2",
        "goods_price": 20,
        "goods_number": 30,
        "goods_weight": 40,
        "goods_introduce": "abc",
        "goods_big_logo": "",
        "goods_small_logo": "",
        "goods_state": 1,
        "add_time": 1512962370,
        "upd_time": 1512962370,
        "hot_mumber": 0,
        "is_promote": false,
        "pics": [
            {
                "pics_id": 397,
                "goods_id": 145,
                "pics_big": "uploads/goodspics/big_30f08d52c551ecb447277eae232304b8",
                "pics_mid": "uploads/goodspics/mid_30f08d52c551ecb447277eae232304b8",
                "pics_sma": "uploads/goodspics/sma_30f08d52c551ecb447277eae232304b8"
            }
        ],
        "attrs": [
            {
                "goods_id": 145,
                "attr_id": 15,
                "attr_value": "ddd",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            },
            {
                "goods_id": 145,
                "attr_id": 15,
                "attr_value": "eee",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            }
        ]
    },
    "meta": {
        "msg": "更新商品成功",
        "status": 200
    }
}

5. 删除商品

  • 请求路径:goods/:id

  • 请求方法:delete

  • 请求参数

参数名参数说明备注
id商品 ID不能为空携带在url中
  • 响应数据
{
    "data": null,
    "meta": {
        "msg": "删除成功",
        "status": 200
    }
}

###同步商品图片

  • 请求路径:goods/:id/pics

  • 请求方法:put

  • 请求参数

参数名参数说明备注
id商品 ID不能为空携带在url中
pics商品图片集合如果有 pics_id 字段会保留该图片,如果没有 pics_id 但是有 pic 字段就会新生成图片数据
  • 请求数据
;[
  { pic: 'tmp_uploads/db28f6316835836e97653b5c75e418be.png' },
  {
    pics_id: 397,
    goods_id: 145,
    pics_big: 'uploads/goodspics/big_30f08d52c551ecb447277eae232304b8',
    pics_mid: 'uploads/goodspics/mid_30f08d52c551ecb447277eae232304b8',
    pics_sma: 'uploads/goodspics/sma_30f08d52c551ecb447277eae232304b8'
  }
]
  • 响应数据
{
    "data": {
        "goods_id": 96,
        "goods_name": "iphoneXX",
        "goods_price": 2,
        "goods_number": 22,
        "goods_weight": 22,
        "goods_introduce": null,
        "goods_big_logo": "./uploads/goods/20201113/483a3b8e99e534ec3e4312dbbaee7c9d.jpg",
        "goods_small_logo": "./uploads/goods/20201113/small_483a3b8e99e534ec3e4312dbbaee7c9d.jpg",
        "goods_state": 0,
        "is_del": "1",
        "add_time": 1510045904,
        "upd_time": 1512635159,
        "delete_time": 1512635159,
        "hot_mumber": 0,
        "is_promote": false,
        "pics": [
            {
                "pics_id": 383,
                "goods_id": 96,
                "pics_big": "uploads/goodspics/big_6f5750132abd3f5b2b93dd722fcde653.jpg",
                "pics_mid": "uploads/goodspics/mid_6f5750132abd3f5b2b93dd722fcde653.jpg",
                "pics_sma": "uploads/goodspics/sma_6f5750132abd3f5b2b93dd722fcde653.jpg"
            }
        ],
        "attrs": [
            {
                "goods_id": 96,
                "attr_id": 15,
                "attr_value": "eee",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            },
            {
                "goods_id": 96,
                "attr_id": 15,
                "attr_value": "ddd",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            }
        ]
    },
    "meta": {
        "msg": "更新成功",
        "status": 200
    }
}

###同步商品属性

  • 请求路径:goods/:id/attributes

  • 请求方法:put

  • 请求参数

参数名参数说明备注
id商品 ID不能为空携带在url中
  • 请求数据
;[
  {
    attr_id: 15,
    attr_value: 'ddd'
  },
  {
    attr_id: 15,
    attr_value: 'eee'
  }
]
  • 响应数据
{
    "data": {
        "goods_id": 96,
        "goods_name": "iphoneXX",
        "goods_price": 2,
        "goods_number": 22,
        "goods_weight": 22,
        "goods_introduce": null,
        "goods_big_logo": "./uploads/goods/20201113/483a3b8e99e534ec3e4312dbbaee7c9d.jpg",
        "goods_small_logo": "./uploads/goods/20201113/small_483a3b8e99e534ec3e4312dbbaee7c9d.jpg",
        "goods_state": 0,
        "is_del": "1",
        "add_time": 1510045904,
        "upd_time": 1512635159,
        "delete_time": 1512635159,
        "hot_mumber": 0,
        "is_promote": false,
        "pics": [
            {
                "pics_id": 383,
                "goods_id": 96,
                "pics_big": "uploads/goodspics/big_6f5750132abd3f5b2b93dd722fcde653.jpg",
                "pics_mid": "uploads/goodspics/mid_6f5750132abd3f5b2b93dd722fcde653.jpg",
                "pics_sma": "uploads/goodspics/sma_6f5750132abd3f5b2b93dd722fcde653.jpg"
            }
        ],
        "attrs": [
            {
                "goods_id": 96,
                "attr_id": 15,
                "attr_value": "eee",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            },
            {
                "goods_id": 96,
                "attr_id": 15,
                "attr_value": "ddd",
                "add_price": null,
                "attr_name": "fffffff",
                "attr_sel": "many",
                "attr_write": "list",
                "attr_vals": ""
            }
        ]
    },
    "meta": {
        "msg": "更新成功",
        "status": 200
    }
}

###商品图片处理必须安装 GraphicsMagick

  • linux
apt-get install GraphicsMagick
  • Mac OS X
brew install GraphicsMagick

6. 图片上传

  • 请求路径:upload

  • 请求方法:post

  • 请求参数

参数名参数说明备注
file上传文件
  • 响应数据
{
    "data": {
        "tmp_path": "tmp_uploads/ccfc5179a914e94506bcbb7377e8985f.png",
        "url": "http://127.0.0.1:8888tmp_uploads/ccfc5179a914e94506bcbb7377e8985f.png"
    },
    "meta": {
        "msg": "上传成功",
        "status": 200
    }
}

九、订单管理

1. 订单数据列表

  • 请求路径:orders

  • 请求方法:get

  • 请求参数

参数名参数说明备注
query查询参数可以为空
pagenum当前页码可以为空,默认为1
pagesize每页显示条数可以为空,省略时返回所有订单
user_id用户 ID可以为空
pay_status支付状态可以为空
is_send是否发货可以为空
order_fapiao_title['个人','公司']可以为空
order_fapiao_company公司名称可以为空
order_fapiao_content发票内容可以为空
consignee_addr收货地址可以为空
  • 响应数据
{
    "data": {
        "total": 1,
        "pagenum": "1",
        "goods": [
            {
                "order_id": 47,
                "user_id": 133,
                "order_number": "59e7502d7993d",
                "order_price": 322,
                "order_pay": "1",
                "is_send": "是",
                "trade_no": "",
                "order_fapiao_title": "个人",
                "order_fapiao_company": "",
                "order_fapiao_content": "办公用品",
                "consignee_addr": "江苏省南京市秦淮区龙蟠中路666号",
                "pay_status": "1",
                "create_time": 1508331565,
                "update_time": 1508331565
            }
        ]
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

2. 修改订单状态

  • 请求路径:orders/:id

  • 请求方法:put

  • 请求参数

参数名参数说明备注
id订单 ID不能为空携带在url中
is_send订单是否发货1:已经发货,0:未发货
order_pay订单支付支付方式 0 未支付 1 支付宝 2 微信 3 银行卡
order_price订单价格
order_number订单数量
pay_status支付状态订单状态: 0 未付款、1 已付款
  • 请求数据说明

    • 所有请求数据都是增量更新,如果参数不填写,就不会更新该字段
  • 响应数据

{
    "data": {
        "order_id": 67,
        "user_id": 1,
        "order_number": "itany-g7kmck71vjaujfgoi",
        "order_price": 20,
        "order_pay": "0",
        "is_send": "否",
        "trade_no": "",
        "order_fapiao_title": "个人",
        "order_fapiao_company": "",
        "order_fapiao_content": "",
        "consignee_addr": "",
        "pay_status": "0",
        "create_time": 1512533560,
        "update_time": 1512533560,
        "goods": [
            {
                "id": 82,
                "order_id": 67,
                "goods_id": 96,
                "goods_price": 333,
                "goods_number": 2,
                "goods_total_price": 999
            },
            {
                "id": 83,
                "order_id": 67,
                "goods_id": 95,
                "goods_price": 666,
                "goods_number": 5,
                "goods_total_price": 999
            }
        ]
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

3. 查看订单详情

  • 请求路径:orders/:id

  • 请求方法:get

  • 请求参数

参数名参数说明备注
id订单 ID不能为空携带在url中
  • 响应数据
{
    "data": {
        "order_id": 67,
        "user_id": 1,
        "order_number": "itany-g7kmck71vjaujfgoi",
        "order_price": 20,
        "order_pay": "0",
        "is_send": "否",
        "trade_no": "",
        "order_fapiao_title": "个人",
        "order_fapiao_company": "",
        "order_fapiao_content": "",
        "consignee_addr": "",
        "pay_status": "0",
        "create_time": 1512533560,
        "update_time": 1512533560,
        "goods": [
            {
                "id": 82,
                "order_id": 67,
                "goods_id": 96,
                "goods_price": 333,
                "goods_number": 2,
                "goods_total_price": 999
            },
            {
                "id": 83,
                "order_id": 67,
                "goods_id": 95,
                "goods_price": 666,
                "goods_number": 5,
                "goods_total_price": 999
            }
        ]
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}

4. 修改地址

  • 请求路径:orders/:id/address

  • 请求方法:put

  • 请求参数

参数名参数说明备注
id订单 ID不能为空携带在url中
consignee_addr收货地址可以为空
  • 响应数据
{
    "data": {},
    "meta": {
        "msg": "修改地址成功",
        "status": 200
    }
}

5. 查看物流信息

  • 请求路径:/kuaidi/:id

  • 请求方法:get

  • 物流单号:815294206237577

  • 响应数据:

  {
      "meta":{
          "status":200,
          "message":"获取物流信息成功!"
      },
      "data":[
          {
              "time":"2020-11-15 12:39:56",
              "ftime":"2020-11-15 12:39:56",
              "context":"已签收,签收人是 汤小洋 先生/女士,如有疑问请联系派件员阿奇(13805148888),如您未收到此快递,请拨打投诉电话:15294207777,感谢使用申通快递,期待再次为您服务",
              "location":null
          },
          {
              "time":"2020-11-15 08:46:54",
              "ftime":"2020-11-15 08:46:54",
              "context":"上海浦东寒亭营业厅-寒亭阿奇(13805148888)-派件中",
              "location":null
          },
          {
              "time":"2020-11-15 08:38:57",
              "ftime":"2020-11-15 08:38:57",
              "context":"已到达-上海浦东寒亭营业厅",
              "location":null
          },
          {
              "time":"2020-11-15 06:38:13",
              "ftime":"2020-11-15 06:38:13",
              "context":"已到达-上海浦东寒亭营业厅",
              "location":null
          },
          {
              "time":"2020-11-14 20:56:45",
              "ftime":"2020-11-14 20:56:45",
              "context":"上海浦东转运中心-已发往-上海浦东寒亭公司",
              "location":null
          },
          {
              "time":"2020-11-14 20:52:44",
              "ftime":"2020-11-14 20:52:44",
              "context":"已到达-上海浦东转运中心",
              "location":null
          },
          {
              "time":"2020-11-14 17:43:48",
              "ftime":"2020-11-14 17:43:48",
              "context":"已到达-上海浦东转运中心",
              "location":null
          },
          {
              "time":"2020-11-14 10:53:46",
              "ftime":"2020-11-14 10:53:46",
              "context":"上海浦东转运中心-已发往-上海浦东转运中心",
              "location":null
          },
          {
              "time":"2020-11-14 10:43:31",
              "ftime":"2020-11-14 10:43:31",
              "context":"已到达-上海浦东转运中心",
              "location":null
          },
          {
              "time":"2020-11-14 02:43:20",
              "ftime":"2020-11-14 02:43:20",
              "context":"江苏苏州转运中心-已发往-上海浦东转运中心",
              "location":null
          },
          {
              "time":"2020-11-14 02:41:40",
              "ftime":"2020-11-14 02:41:40",
              "context":"已到达-江苏苏州转运中心",
              "location":null
          },
          {
              "time":"2020-11-13 16:28:13",
              "ftime":"2020-11-13 16:28:13",
              "context":"江苏南京转运中心-已发往-江苏苏州转运中心",
              "location":null
          },
          {
              "time":"2020-11-13 15:03:30",
              "ftime":"2020-11-13 15:03:30",
              "context":"南京IT教育公司-已发往-江苏南京转运中心",
              "location":null
          },
          {
              "time":"2020-11-13 14:47:56",
              "ftime":"2020-11-13 14:47:56",
              "context":"南京IT教育公司-已发往-江苏南京转运中心",
              "location":null
          },
          {
              "time":"2020-11-13 14:37:06",
              "ftime":"2020-11-13 14:37:06",
              "context":"南京IT教育公司-城东汪小主宠物店-已收件",
              "location":null
          }
      ]
  }
License:  CC BY 4.0