• 接口文档格式


    # 1. 电商管理后台 API 接口文档
    
    ## 1.1. API V1 接口说明
    
    - 接口基准地址:`http://127.0.0.1:8888/api/private/v1/`
    - 服务端已开启 CORS 跨域支持
    - API V1 认证统一使用 Token 认证
    - 需要授权的 API ,必须在请求头中使用 `Authorization` 字段提供 `token` 令牌
    - 使用 HTTP Status Code 标识状态
    - 数据返回格式统一使用 JSON
    
    ### 1.1.1. 支持的请求方法
    
    - GET(SELECT):从服务器取出资源(一项或多项)。
    - POST(CREATE):在服务器新建一个资源。
    - PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
    - PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
    - DELETE(DELETE):从服务器删除资源。
    - HEAD:获取资源的元数据。
    - OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。
    
    ### 1.1.2. 通用返回状态说明
    
    | *状态码* | *含义*                | *说明*                                              |
    | -------- | --------------------- | --------------------------------------------------- |
    | 200      | OK                    | 请求成功                                            |
    | 201      | CREATED               | 创建成功                                            |
    | 204      | DELETED               | 删除成功                                            |
    | 400      | BAD REQUEST           | 请求的地址不存在或者包含不支持的参数                |
    | 401      | UNAUTHORIZED          | 未授权                                              |
    | 403      | FORBIDDEN             | 被禁止访问                                          |
    | 404      | NOT FOUND             | 请求的资源不存在                                    |
    | 422      | Unprocesable entity   | [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误 |
    | 500      | INTERNAL SERVER ERROR | 内部错误                                            |
    |          |                       |                                                     |
    
    ------
    
    ## 1.2. 登录
    
    ### 1.2.1. 登录验证接口
    
    - 请求路径:login
    - 请求方法:post
    - 请求参数
    
    | 参数名   | 参数说明 | 备注     |
    | -------- | -------- | -------- |
    | username | 用户名   | 不能为空 |
    | password | 密码     | 不能为空 |
    
    - 响应参数
    
    | 参数名   | 参数说明    | 备注            |
    | -------- | ----------- | --------------- |
    | id       | 用户 ID     |                 |
    | rid      | 用户角色 ID |                 |
    | username | 用户名      |                 |
    | mobile   | 手机号      |                 |
    | email    | 邮箱        |                 |
    | token    | 令牌        | 基于 jwt 的令牌 |
    
    - 响应数据
    
    ```json
    {
        "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.3. 用户管理
    
    ### 1.3.1. 用户数据列表
    
    - 请求路径:users
    - 请求方法:get
    - 请求参数
    
    | 参数名   | 参数说明     | 备注     |
    | -------- | ------------ | -------- |
    | query    | 查询参数     | 可以为空 |
    | pagenum  | 当前页码     | 不能为空 |
    | pagesize | 每页显示条数 | 不能为空 |
    
    - 响应参数
    
    | 参数名    | 参数说明     | 备注 |
    | --------- | ------------ | ---- |
    | totalpage | 总记录数     |      |
    | pagenum   | 当前页码     |      |
    | users     | 用户数据集合 |      |
    
    - 响应数据
    
    ```json
    {
        "data": {
            "totalpage": 5,
            "pagenum": 4,
            "users": [
                {
                    "id": 25,
                    "username": "tige117",
                    "mobile": "18616358651",
                    "type": 1,
                    "email": "tige112@163.com",
                    "create_time": "2017-11-09T20:36:26.000Z",
                    "mg_state": true, // 当前用户的状态
                    "role_name": "炒鸡管理员"
                }
            ]
        },
        "meta": {
            "msg": "获取成功",
            "status": 200
        }
    }
    ```
    
    ### 1.3.2. 添加用户
    
    - 请求路径:users
    - 请求方法:post
    - 请求参数
    
    | 参数名   | 参数说明 | 备注     |
    | -------- | -------- | -------- |
    | username | 用户名称 | 不能为空 |
    | password | 用户密码 | 不能为空 |
    | email    | 邮箱     | 可以为空 |
    | mobile   | 手机号   | 可以为空 |
    
    - 响应参数
    
    | 参数名   | 参数说明    | 备注 |
    | -------- | ----------- | ---- |
    | id       | 用户 ID     |      |
    | rid      | 用户角色 ID |      |
    | username | 用户名      |      |
    | mobile   | 手机号      |      |
    | email    | 邮箱        |      |
    
    - 响应数据
    
    ```json
    {
        "data": {
            "id": 28,
            "username": "tige1200",
            "mobile": "test",
            "type": 1,
            "openid": "",
            "email": "test@test.com",
            "create_time": "2017-11-10T03:47:13.533Z",
            "modify_time": null,
            "is_delete": false,
            "is_active": false
        },
        "meta": {
            "msg": "用户创建成功",
            "status": 201
        }
    }
    ```
    
    ### 1.3.3. 修改用户状态
    
    - 请求路径:users/:uId/state/:type
    - 请求方法:put
    - 请求参数
    
    | 参数名 | 参数说明 | 备注                                        |
    | ------ | -------- | ------------------------------------------- |
    | uId    | 用户 ID  | 不能为空`携带在url中`                       |
    | type   | 用户状态 | 不能为空`携带在url中`,值为 true 或者 false |
    
    - 响应数据
    
    ```json
    {
      "data": {
        "id": 566,
        "rid": 30,
        "username": "admin",
        "mobile": "123456",
        "email": "bb@itcast.com",
        "mg_state": 0
      },
      "meta": {
        "msg": "设置状态成功",
        "status": 200
      }
    }
    ```
    
    ### 1.3.4. 根据 ID 查询用户信息
    
    - 请求路径:users/:id
    - 请求方法:get
    - 请求参数
    
    | 参数名 | 参数说明 | 备注                  |
    | ------ | -------- | --------------------- |
    | id     | 用户 ID  | 不能为空`携带在url中` |
    
    - 响应参数
    
    | 参数名  | 参数说明 | 备注 |
    | ------- | -------- | ---- |
    | id      | 用户 ID  |      |
    | role_id | 角色 ID  |      |
    | mobile  | 手机号   |      |
    | email   | 邮箱     |      |
    
    - 响应数据
    
    ```json
    {
        "data": {
            "id": 503,
            "username": "admin3",
            "role_id": 0,
            "mobile": "00000",
            "email": "new@new.com"
        },
        "meta": {
            "msg": "查询成功",
            "status": 200
        }
    }
    ```
    
    ### 1.3.5. 编辑用户提交
    
    - 请求路径:users/:id
    - 请求方法:put
    - 请求参数
    
    | 参数名 | 参数说明 | 备注                        |
    | ------ | -------- | --------------------------- |
    | id     | 用户 id  | 不能为空 `参数是url参数:id` |
    | email  | 邮箱     | 可以为空                    |
    | mobile | 手机号   | 可以为空                    |
    
    - 响应参数
    
    | 参数名  | 参数说明 | 备注 |
    | ------- | -------- | ---- |
    | id      | 用户 ID  |      |
    | role_id | 角色 ID  |      |
    | mobile  | 手机号   |      |
    | email   | 邮箱     |      |
    
    - 响应数据
    
    ```json
    /* 200表示成功,500表示失败 */
    {
        "data": {
            "id": 503,
            "username": "admin3",
            "role_id": 0,
            "mobile": "111",
            "email": "123@123.com"
        },
        "meta": {
            "msg": "更新成功",
            "status": 200
        }
    }
    ```
    
    ### 1.3.6. 删除单个用户
    
    - 请求路径:users/:id
    - 请求方法:delete
    - 请求参数
    
    | 参数名 | 参数说明 | 备注                       |
    | ------ | -------- | -------------------------- |
    | id     | 用户 id  | 不能为空`参数是url参数:id` |
    
    - 响应参数
    - 响应数据
    
    ```json
    {
        "data": null,
        "meta": {
            "msg": "删除成功",
            "status": 200
        }
    }
    ```
    
    ### 1.3.7. 分配用户角色
    
    - 请求路径:users/:id/role
    - 请求方法:put
    - 请求参数
    
    | 参数名 | 参数说明 | 备注                       |
    | ------ | -------- | -------------------------- |
    | id     | 用户 ID  | 不能为空`参数是url参数:id` |
    | rid    | 角色 id  | 不能为空`参数body参数`     |
    
    - 响应参数
    
    | 参数名  | 参数说明 | 备注 |
    | ------- | -------- | ---- |
    | id      | 用户 ID  |      |
    | role_id | 角色 ID  |      |
    | mobile  | 手机号   |      |
    | email   | 邮箱     |      |
    
    - 响应数据
    
    ```json
    {
        "data": {
            "id": 508,
            "rid": "30",
            "username": "asdf1",
            "mobile": "123123",
            "email": "adfsa@qq.com"
        },
        "meta": {
            "msg": "设置角色成功",
            "status": 200
        }
    }
    ```
    
    ## 1.4. 权限管理
    
    ### 1.4.1. 所有权限列表
    
    - 请求路径:rights/:type
    - 请求方法:get
    - 请求参数
    
    | 参数名 | 参数说明 | 备注                                                         |
    | ------ | -------- | ------------------------------------------------------------ |
    | type   | 类型     | 值 list 或 tree , list 列表显示权限, tree 树状显示权限,`参数是url参数:type` |
    
    - 响应参数
    
    | 参数名   | 参数说明     | 备注 |
    | -------- | ------------ | ---- |
    | id       | 权限 ID      |      |
    | authName | 权限说明     |      |
    | level    | 权限层级     |      |
    | pid      | 权限父 ID    |      |
    | path     | 对应访问路径 |      |
    
    - 响应数据 type=list
    
    ```json
      {
        "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
    
    ```json
      {
        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
        }
      }
    ```
    
    ### 1.4.2. 左侧菜单权限
    
    - 请求路径:menus
    - 请求方法:get
    - 响应数据
    
    ```json
    {
        "data":
            {
                "id": 101,
                "authName": "商品管理",
                "path": null,
                "children": [
                    {
                        "id": 104,
                        "authName": "商品列表",
                        "path": null,
                        "children": []
                    }
                ]
            }
        "meta": {
            "msg": "获取菜单列表成功",
            "status": 200
        }
    }
    ```
    
    ## 1.5. 角色管理
    
    ### 1.5.1. 角色列表
    
    - 请求路径:roles
    
    - 请求方法:get
    
    - 响应数据说明
    
      + 第一层为角色信息
    
      - 第二层开始为权限说明,权限一共有 3 层权限
      - 最后一层权限,不包含 `children` 属性
    
    - 响应数据
    
    ```json
    {
        "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
        }
    }
    ```
    
    ### 1.5.2. 添加角色
    
    - 请求路径:roles
    - 请求方法:post
    - 请求参数
    
    | 参数名   | 参数说明 | 备注     |
    | -------- | -------- | -------- |
    | roleName | 角色名称 | 不能为空 |
    | roleDesc | 角色描述 | 可以为空 |
    
    - 响应参数
    
    | 参数名   | 参数说明 | 备注 |
    | -------- | -------- | ---- |
    | roleId   | 角色 ID  |      |
    | roleName | 角色名称 |      |
    | roleDesc | 角色描述 |      |
    
    - 响应数据
    
    ```json
    {
        "data": {
            "roleId": 40,
            "roleName": "admin2",
            "roleDesc": "admin2Desc"
        },
        "meta": {
            "msg": "创建成功",
            "status": 201
        }
    }
    ```
    
    ### 1.5.3. 根据 ID 查询角色
    
    - 请求路径:roles/:id
    - 请求方法:get
    - 请求参数
    
    | 参数名 | 参数说明 | 备注                  |
    | ------ | -------- | --------------------- |
    | :id    | 角色 ID  | 不能为空`携带在url中` |
    
    - 响应参数
    
    | 参数名   | 参数说明 | 备注 |
    | -------- | -------- | ---- |
    | roleId   | 角色 ID  |      |
    | roleName | 角色名称 |      |
    | roleDesc | 角色描述 |      |
    
    - 响应数据
    
    ```json
    {
        "data": {
            "roleId": 31,
            "roleName": "测试角色",
            "roleDesc": "测试负责人"
        },
        "meta": {
            "msg": "获取成功",
            "status": 200
        }
    }
    ```
    
    ### 1.5.4. 编辑提交角色
    
    - 请求路径:roles/:id
    - 请求方法:put
    - 请求参数
    
    | 参数名   | 参数说明 | 备注                  |
    | -------- | -------- | --------------------- |
    | :id      | 角色 ID  | 不能为空`携带在url中` |
    | roleName | 角色名称 | 不能为空              |
    | roleDesc | 角色描述 | 可以为空              |
    
    - 响应数据
    
    ```json
    {
        "data": {
            "roleId": 31,
            "roleName": "测试角色",
            "roleDesc": "测试角色描述"
        },
        "meta": {
            "msg": "获取成功",
            "status": 200
        }
    }
    ```
    
    ### 1.5.5. 删除角色
    
    - 请求路径:roles/:id
    - 请求方法:delete
    - 请求参数
    
    | 参数名 | 参数说明 | 备注                  |
    | ------ | -------- | --------------------- |
    | :id    | 角色 ID  | 不能为空`携带在url中` |
    
    - 响应数据
    
    ```json
    {
        "data": null,
        "meta": {
            "msg": "删除成功",
            "status": 200
        }
    }
    ```
    
    ### 1.5.6. 角色授权
    
    - 请求路径:roles/:roleId/rights
    - 请求方法:post
    - 请求参数:通过 `请求体` 发送给后端
    
    | 参数名  | 参数说明               | 备注                                                         |
    | ------- | ---------------------- | ------------------------------------------------------------ |
    | :roleId | 角色 ID                | 不能为空`携带在url中`                                        |
    | rids    | 权限 ID 列表(字符串) | 以 `,` 分割的权限 ID 列表(获取所有被选中、叶子节点的key和半选中节点的key, 包括 12,3级节点) |
    
    - 响应数据
    
    ```json
    {
        "data": null,
        "meta": {
            "msg": "更新成功",
            "status": 200
        }
    }
    ```
    
    ### 1.5.7. 删除角色指定权限
    
    - 请求路径:roles/:roleId/rights/:rightId
    
    - 请求方法:delete
    
    - 请求参数
    
      | 参数名   | 参数说明 | 备注                  |
      | -------- | -------- | --------------------- |
      | :roleId  | 角色 ID  | 不能为空`携带在url中` |
      | :rightId | 权限 ID  | 不能为空`携带在url中` |
    
    - 响应数据说明 
    
      - 返回的data, 是当前角色下最新的权限数据
    
    - 响应数据
    
      ```json
      {
          "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.6. 商品分类管理
    
    ### 1.6.1. 商品分类数据列表
    
    - 请求路径:categories
    - 请求方法:get
    - 请求参数
    
    | 参数名   | 参数说明           | 备注                                                         |
    | -------- | ------------------ | ------------------------------------------------------------ |
    | type     | [1,2,3]            | 值:123 分别表示显示一层二层三层分类列表<br />【可选参数】如果不传递,则默认获取所有级别的分类 |
    | pagenum  | 当前页码值         | 【可选参数】如果不传递,则默认获取所有分类                   |
    | pagesize | 每页显示多少条数据 | 【可选参数】如果不传递,则默认获取所有分类                   |
    
    - 响应参数
    
    | 参数名    | 参数说明     | 备注 |
    | --------- | ------------ | ---- |
    | cat_id    | 分类 ID      |      |
    | cat_name  | 分类名称     |      |
    | cat_pid   | 分类父 ID    |      |
    | cat_level | 分类当前层级 |      |
    
    - 响应数据
    
    ```json
    {
        "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
        }
    }
    ```
    
    ### 1.6.2. 添加分类
    
    - 请求路径:categories
    - 请求方法:post
    - 请求参数
    
    | 参数名    | 参数说明  | 备注                                                        |
    | --------- | --------- | ----------------------------------------------------------- |
    | cat_pid   | 分类父 ID | 不能为空,如果要添加1级分类,则父分类Id应该设置为  `0`      |
    | cat_name  | 分类名称  | 不能为空                                                    |
    | cat_level | 分类层级  | 不能为空,`0`表示一级分类;`1`表示二级分类;`2`表示三级分类 |
    
    - 响应数据
    
    ```json
    {
        "data": {
            "cat_id": 62,
            "cat_name": "相框",
            "cat_pid": "1",
            "cat_level": "1"
        },
        "meta": {
            "msg": "创建成功",
            "status": 201
        }
    }
    ```
    
    ### 1.6.3. 根据 id 查询分类
    
    - 请求路径:categories/:id
    - 请求方法:get
    - 请求参数
    
    | 参数名 | 参数说明 | 备注                  |
    | ------ | -------- | --------------------- |
    | :id    | 分类 ID  | 不能为空`携带在url中` |
    
    - 响应数据
    
    ```
    {
        "data": {
            "cat_id": 3,
            "cat_name": "厨卫电器",
            "cat_pid": 0,
            "cat_level": 0
        },
        "meta": {
            "msg": "获取成功",
            "status": 200
        }
    }
    ```
    
    ### 1.6.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
        }
    }
    ```
    
    ### 1.6.5. 删除分类
    
    - 请求路径:categories/:id
    - 请求方法:delete
    - 请求参数
    
    | 参数名 | 参数说明 | 备注                  |
    | ------ | -------- | --------------------- |
    | :id    | 分类 ID  | 不能为空`携带在url中` |
    
    - 响应数据
    
    ```
    {
        "data": null,
        "meta": {
            "msg": "删除成功",
            "status": 200
        }
    }
    ```
    
    ## 1.7. 分类参数管理
    
    ### 1.7.1. 参数列表
    
    - 请求路径:categories/:id/attributes
    - 请求方法:get
    - 请求参数
    
    | 参数名 | 参数说明    | 备注                                                      |
    | ------ | ----------- | --------------------------------------------------------- |
    | :id    | 分类 ID     | 不能为空`携带在url中`                                     |
    | sel    | [only,many] | 不能为空,通过 only 或 many 来获取分类静态参数还是动态参数 |
    
    - 响应参数
    
    | 参数名     | 参数说明                                       | 备注 |
    | ---------- | ---------------------------------------------- | ---- |
    | attr_id    | 分类参数 ID                                    |      |
    | attr_name  | 分类参数名称                                   |      |
    | cat_id     | 分类参数所属分类                               |      |
    | attr_sel   | only:输入框(唯一) many:后台下拉列表/前台单选框 |      |
    | attr_write | manual:手工录入 list:从列表选择                |      |
    | attr_vals  | 如果 attr_write:list,那么有值,该值以逗号分隔  |      |
    
    - 响应数据
    
    ```
    {
        "data": [
            {
                "attr_id": 1,
                "attr_name": "cpu",
                "cat_id": 22,
                "attr_sel": "only",
                "attr_write": "manual",
                "attr_vals": "ffff"
            }
        ],
        "meta": {
            "msg": "获取成功",
            "status": 200
        }
    }
    ```
    
    ### 1.7.2. 添加动态参数或者静态属性
    
    - 请求路径:categories/:id/attributes
    - 请求方法:post
    - 请求参数
    
    | 参数名    | 参数说明                                   | 备注                  |
    | --------- | ------------------------------------------ | --------------------- |
    | :id       | 分类 ID                                    | 不能为空`携带在url中` |
    | attr_name | 参数名称                                   | 不能为空              |
    | attr_sel  | [only,many]                                | 不能为空              |
    | attr_vals | 如果是 many 就需要填写值的选项,以逗号分隔 | 【可选参数】          |
    
    - 响应数据
    
    ```
    {
        "data": {
            "attr_id": 44,
            "attr_name": "测试参数",
            "cat_id": "1",
            "attr_sel": "many",
            "attr_write": "list",
            "attr_vals": "a,b,c"
        },
        "meta": {
            "msg": "创建成功",
            "status": 201
        }
    }
    ```
    
    ### 1.7.3. 删除参数
    
    - 请求路径: categories/:id/attributes/:attrid
    - 请求方法:delete
    - 请求参数
    
    | 参数名  | 参数说明 | 备注                  |
    | ------- | -------- | --------------------- |
    | :id     | 分类 ID  | 不能为空`携带在url中` |
    | :attrid | 参数 ID  | 不能为空`携带在url中` |
    
    - 响应数据
    
    ```
    {
        "data": null,
        "meta": {
            "msg": "删除成功",
            "status": 200
        }
    }
    ```
    
    ### 1.7.4. 根据 ID 查询参数
    
    - 请求路径:categories/:id/attributes/:attrId
    - 请求方法:get
    - 请求参数
    
    | 参数名    | 参数说明                                   | 备注                  |
    | --------- | ------------------------------------------ | --------------------- |
    | :id       | 分类 ID                                    | 不能为空`携带在url中` |
    | :attrId   | 属性 ID                                    | 不能为空`携带在url中` |
    | attr_sel  | [only,many]                                | 不能为空              |
    | attr_vals | 如果是 many 就需要填写值的选项,以逗号分隔 |                       |
    
    - 响应数据
    
    ```
    {
        "data": {
            "attr_id": 1,
            "attr_name": "cpu",
            "cat_id": 22,
            "attr_sel": "only",
            "attr_write": "manual",
            "attr_vals": "ffff"
        },
        "meta": {
            "msg": "获取成功",
            "status": 200
        }
    }
    ```
    
    ### 1.7.5. 编辑提交参数
    
    - 请求路径:categories/:id/attributes/:attrId
    - 请求方法:put
    - 请求参数
    
    | 参数名    | 参数说明               | 备注                       |
    | --------- | ---------------------- | -------------------------- |
    | :id       | 分类 ID                | 不能为空`携带在url中`      |
    | :attrId   | 属性 ID                | 不能为空`携带在url中`      |
    | attr_name | 新属性的名字           | 不能为空,携带在`请求体`中 |
    | attr_sel  | 属性的类型[many或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
        }
    }
    ```
    
    ## 1.8. 商品管理
    
    ### 1.8.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": "asfdsd",
                    "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
        }
    }
    ```
    
    ### 1.8.2. 添加商品
    
    - 请求路径:goods
    - 请求方法:post
    - 请求参数
    
    | 参数名          | 参数说明                                          | 备注     |
    | --------------- | ------------------------------------------------- | -------- |
    | goods_name      | 商品名称                                          | 不能为空 |
    | goods_cat       | 以为','分割的分类列表                             | 不能为空 |
    | goods_price     | 价格                                              | 不能为空 |
    | goods_number    | 数量                                              | 不能为空 |
    | goods_weight    | 重量                                              | 不能为空 |
    | goods_introduce | 介绍                                              | 可以为空 |
    | pics            | 上传的图片临时路径(对象)                        | 可以为空 |
    | attrs           | 商品的参数(数组),包含 `动态参数` 和 `静态属性` | 可以为空 |
    
    - 请求数据
    
    ```json
    {
      "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:手动输入,还是单选, |
    
    - 响应数据
    
    ```json
    {
        "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
        }
    }
    ```
    
    ### 1.8.3. 根据 ID 查询商品
    
    - 请求路径:goods/:id
    - 请求方法:get
    - 请求参数
    
    | 参数名 | 参数说明 | 备注                  |
    | ------ | -------- | --------------------- |
    | id     | 商品 ID  | 不能为空`携带在url中` |
    
    - 响应参数
    
    | 参数名       | 参数说明                   | 备注                                                         |
    | ------------ | -------------------------- | ------------------------------------------------------------ |
    | 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": 201
        }
    }
    ```
    
    ### 1.8.4. 编辑提交商品
    
    - 请求路径:goods/:id
    - 请求方法:put
    - 请求参数
    
    | 参数名          | 参数说明                   | 备注                  |
    | --------------- | -------------------------- | --------------------- |
    | id              | 商品 ID                    | 不能为空`携带在url中` |
    | goods_name      | 商品名称                   | 不能为空              |
    | 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": 201
        }
    }
    ```
    
    ### 1.8.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/20171113/483a3b8e99e534ec3e4312dbbaee7c9d.jpg",
            "goods_small_logo": "./uploads/goods/20171113/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/20171113/483a3b8e99e534ec3e4312dbbaee7c9d.jpg",
            "goods_small_logo": "./uploads/goods/20171113/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
    ```
    
    - Windows [点击下载](https://sourceforge.net/projects/graphicsmagick/files/graphicsmagick-binaries/1.3.27/GraphicsMagick-1.3.27-Q8-win64-dll.exe/download)
    
    ## 1.9. 图片上传
    
    - 请求路径: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.10. 订单管理
    
    ### 1.10.1. 订单数据列表
    
    - 请求路径:orders
    - 请求方法:get
    - 请求参数
    
    | 参数名               | 参数说明        | 备注     |
    | -------------------- | --------------- | -------- |
    | query                | 查询参数        | 可以为空 |
    | pagenum              | 当前页码        | 不能为空 |
    | 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": "itcast-59e7502d7993d",
                    "order_price": 322,
                    "order_pay": "1",
                    "is_send": "",
                    "trade_no": "",
                    "order_fapiao_title": "个人",
                    "order_fapiao_company": "",
                    "order_fapiao_content": "办公用品",
                    "consignee_addr": "a:7:{s:6:"cgn_id";i:1;s:7:"user_id";i:133;s:8:"cgn_name";s:9:"王二柱";s:11:"cgn_address";s:51:"北京市海淀区苏州街长远天地大厦305室";s:7:"cgn_tel";s:11:"13566771298";s:8:"cgn_code";s:6:"306810";s:11:"delete_time";N;}",
                    "pay_status": "1",
                    "create_time": 1508331565,
                    "update_time": 1508331565
                }
            ]
        },
        "meta": {
            "msg": "获取成功",
            "status": 200
        }
    }
    ```
    
    ### 1.10.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": "itcast-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
        }
    }
    ```
    
    ### 1.10.3. 查看订单详情
    
    - 请求路径:orders/:id
    - 请求方法:get
    - 请求参数
    
    | 参数名 | 参数说明 | 备注                  |
    | ------ | -------- | --------------------- |
    | id     | 订单 ID  | 不能为空`携带在url中` |
    
    - 响应数据
    
    ```
    {
        "data": {
            "order_id": 67,
            "user_id": 1,
            "order_number": "itcast-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
        }
    }
    ```
    
    
    
    ### 1.10.4. 修改地址
    
    1. [省市区/县联动效果 - 结合ElementUI的 el-cascader 组件](https://github.com/iceyangcc/provinces-china)
    
    ### 1.10.5. 查看物流信息
    
    + 请求路径:/kuaidi/:id
    
    + 请求方法:get
    
    + 供测试的物流单号:1106975712662
    
    + 响应数据:
    
      ```json
      {
        "data": [
          {
            "time": "2018-05-10 09:39:00",
            "ftime": "2018-05-10 09:39:00",
            "context": "已签收,感谢使用顺丰,期待再次为您服务",
            "location": ""
          },
          {
            "time": "2018-05-10 08:23:00",
            "ftime": "2018-05-10 08:23:00",
            "context": "[北京市]北京海淀育新小区营业点派件员 顺丰速运 95338正在为您派件",
            "location": ""
          },
          {
            "time": "2018-05-10 07:32:00",
            "ftime": "2018-05-10 07:32:00",
            "context": "快件到达 [北京海淀育新小区营业点]",
            "location": ""
          },
          {
            "time": "2018-05-10 02:03:00",
            "ftime": "2018-05-10 02:03:00",
            "context": "快件在[北京顺义集散中心]已装车,准备发往 [北京海淀育新小区营业点]",
            "location": ""
          },
          {
            "time": "2018-05-09 23:05:00",
            "ftime": "2018-05-09 23:05:00",
            "context": "快件到达 [北京顺义集散中心]",
            "location": ""
          },
          {
            "time": "2018-05-09 21:21:00",
            "ftime": "2018-05-09 21:21:00",
            "context": "快件在[北京宝胜营业点]已装车,准备发往 [北京顺义集散中心]",
            "location": ""
          },
          {
            "time": "2018-05-09 13:07:00",
            "ftime": "2018-05-09 13:07:00",
            "context": "顺丰速运 已收取快件",
            "location": ""
          },
          {
            "time": "2018-05-09 12:25:03",
            "ftime": "2018-05-09 12:25:03",
            "context": "卖家发货",
            "location": ""
          },
          {
            "time": "2018-05-09 12:22:24",
            "ftime": "2018-05-09 12:22:24",
            "context": "您的订单将由HLA(北京海淀区清河中街店)门店安排发货。",
            "location": ""
          },
          {
            "time": "2018-05-08 21:36:04",
            "ftime": "2018-05-08 21:36:04",
            "context": "商品已经下单",
            "location": ""
          }
        ],
        "meta": { "status": 200, "message": "获取物流信息成功!" }
      }
      
      ```
    
    
    ## 1.11. 数据统计
    
    ### 1.11.1.  基于时间统计的折线图
    
    - 请求路径:reports/type/1
    
    - 请求方法:get
    
    - 响应数据
    
    - 需要合并的选项
    
      ```js
      options: {
              title: {
                text: '用户来源'
              },
              tooltip: {
                trigger: 'axis',
                axisPointer: {
                  type: 'cross',
                  label: {
                    backgroundColor: '#E9EEF3'
                  }
                }
              },
              grid: {
                left: '3%',
                right: '4%',
                bottom: '3%',
                containLabel: true
              },
              xAxis: [
                {
                  boundaryGap: false
                }
              ],
              yAxis: [
                {
                  type: 'value'
                }
              ]
            }
      ```
  • 相关阅读:
    根据地球上两个坐标点,计算出距离
    判断一个日期距离今天是不是过了指定的天数
    二维码
    修改、删除 触发器
    sql server 数据加密
    C#下载apk文件
    java 判断一个字符串是否包含某个字符串中的字符
    CenterOS 设置静态IP
    VMware 克隆 CenterOS 虚拟机
    VMware 安装CenterOS
  • 原文地址:https://www.cnblogs.com/ladybug7/p/12526962.html
Copyright © 2020-2023  润新知