UNPKG

@opentiny/tiny-toolkit-pro

Version:

TinyPro Vue:开箱即用、前后端分离的 Vue 后台管理模板

2,408 lines (1,939 loc) 81 kB
--- title: tiny-pro-backend v1.0.0 language_tabs: - shell: Shell - http: HTTP - javascript: JavaScript - ruby: Ruby - python: Python - php: PHP - java: Java - go: Go toc_footers: [] includes: [] search: true code_clipboard: true highlight_theme: darkula headingLevel: 2 generator: "@tarslib/widdershins v4.0.17" --- # TinyPro 后端接口规格说明书 > v1.0.0 Base URLs: # Auth ## POST 登录接口 POST /auth/login > Body 请求参数 ```json { "email": "j.nschfnp@qq.com", "password": "ut sed veniam" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |body|body|object| 否 |none| |» email|body|string| 是 |none| |» password|body|string| 否 |none| > 返回示例 > 201 Response ```json { "token": "string" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |201|[Created](https://tools.ietf.org/html/rfc7231#section-6.3.2)|成功|Inline| ### 返回数据结构 状态码 **201** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» token|string|true|none|经过加盐处理的AccessToken|none| ## POST 登出 POST /auth/logout > Body 请求参数 ```json { "token": "string" } ``` ### 请求参数 |名称|位置|类型|必选|中文名|说明| |---|---|---|---|---|---| |body|body|object| 否 ||none| |» token|body|string| 是 | 登录时返回的token|none| > 返回示例 > 200 Response ```json {} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|Inline| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|401 未登录|Inline| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|403 权限不足|Inline| ### 返回数据结构 状态码 **401** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|true|none||none| |» message|string|true|none||none| 状态码 **403** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|false|none||none| |» message|string|false|none||none| # i18 ## POST 创建一个国际化词条 POST /i18 > Body 请求参数 ```json { "lang": 0, "key": "string", "content": "string" } ``` ### 请求参数 |名称|位置|类型|必选|中文名|说明| |---|---|---|---|---|---| |body|body|object| 否 ||none| |» lang|body|number| 是 ||语言ID| |» key|body|string| 是 ||词条键| |» content|body|string| 是 ||词条内容| > 返回示例 > 200 Response ```json { "id": 0, "lang": { "id": 0, "name": "string", "i18": [ { "id": 0, "lang": { "id": 0, "name": "string", "i18": [ null ] }, "key": "string", "content": "string" } ] }, "key": "string", "content": "string" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|[I18](#schemai18)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|401 未登录|Inline| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|403 权限不足|Inline| ### 返回数据结构 状态码 **401** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|true|none||none| |» message|string|true|none||none| 状态码 **403** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|false|none||none| |» message|string|false|none||none| ## GET 获取国际化字段 GET /i18 ### 请求参数 |名称|位置|类型|必选|中文名|说明| |---|---|---|---|---|---| |page|query|number| 否 ||页码.| |limit|query|number| 否 ||获取数量| |all|query|number| 否 ||是否全部获取, 如果不未0则忽略page与limit, 返回所有的国际化字段| |key|query|string| 否 ||国际化字段的键, 如果设定则表示按照键来模糊查找| |content|query|string| 否 ||国际化字段的值, 如果设定则表示按照值来模糊查找| > 返回示例 > 200 Response ```json { "items": [ { "id": 0, "lang": { "id": 0, "name": "string", "i18": [ { "id": null, "lang": null, "key": null, "content": null } ] }, "key": "string", "content": "string" } ], "meta": { "itemCount": 0, "totalItems": 0, "itemsPerPage": 0, "currentPage": 0 }, "links": { "first": "string", "previous": "string", "next": "string", "last": "string" } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|Inline| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|401 未登录|Inline| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|403 权限不足|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» items|[[I18](#schemai18)]|true|none||none| |»» id|number|true|none|国际化字段的自增id|none| |»» lang|[Lang](#schemalang)|true|none|国际化字段对应的语言信息|none| |»»» id|number|true|none|语言ID|none| |»»» name|string|true|none|语言名|none| |»»» i18|[[I18](#schemai18)]|true|none|对应的国际化词条|none| |»»»» id|number|true|none|国际化字段的自增id|none| |»»»» lang|[Lang](#schemalang)|true|none|国际化字段对应的语言信息|none| |»»»» key|string|true|none|国际化字段的键|none| |»»»» content|string|true|none|国际化字段的实际内容|none| |»» key|string|true|none|国际化字段的键|none| |»» content|string|true|none|国际化字段的实际内容|none| |» meta|[PaginationMeta](#schemapaginationmeta)|true|none||none| |»» itemCount|number|false|none||none| |»» totalItems|number|false|none||none| |»» itemsPerPage|number|false|none||none| |»» currentPage|number|false|none||none| |» links|[PaginationLinks](#schemapaginationlinks)|true|none||none| |»» first|string|false|none||none| |»» previous|string|false|none||none| |»» next|string|false|none||none| |»» last|string|false|none||none| 状态码 **401** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|true|none||none| |» message|string|true|none||none| 状态码 **403** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|false|none||none| |» message|string|false|none||none| ## GET 获取国际化表 GET /i18/format ### 请求参数 |名称|位置|类型|必选|中文名|说明| |---|---|---|---|---|---| |lang|query|string| 否 ||语言名| > 返回示例 > 200 Response ```json { "[lang-name]": { "[key]": "string" } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|Inline| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|401 未登录|Inline| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|403 权限不足|Inline| ### 返回数据结构 状态码 **200** *Record<string,Record<sting,string>>* |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» [lang-name]|object|true|none||none| |»» [key]|string|true|none||none| 状态码 **401** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|true|none||none| |» message|string|true|none||none| 状态码 **403** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|false|none||none| |» message|string|false|none||none| ## GET 根据国际化字段ID获取某一个国际化字段 GET /i18/{id} ### 请求参数 |名称|位置|类型|必选|中文名|说明| |---|---|---|---|---|---| |id|path|integer| 是 ||国际化字段ID| > 返回示例 > 200 Response ```json { "id": 0, "lang": { "id": 0, "name": "string", "i18": [ { "id": 0, "lang": { "id": 0, "name": "string", "i18": [ null ] }, "key": "string", "content": "string" } ] }, "key": "string", "content": "string" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|[I18](#schemai18)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|401 未登录|Inline| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|403 权限不足|Inline| ### 返回数据结构 状态码 **401** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|true|none||none| |» message|string|true|none||none| 状态码 **403** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|false|none||none| |» message|string|false|none||none| ## PATCH 修改一个国际化字段 PATCH /i18/{id} > Body 请求参数 ```json { "lang": 0, "key": "string", "content": "string" } ``` ### 请求参数 |名称|位置|类型|必选|中文名|说明| |---|---|---|---|---|---| |id|path|string| 是 ||国际化字段ID| |body|body|object| 否 ||none| |» lang|body|number| 否 ||语言名| |» key|body|string| 否 ||国际化字段键| |» content|body|string| 否 ||国际化字段值| > 返回示例 > 200 Response ```json { "id": 0, "lang": { "id": 0, "name": "string", "i18": [ { "id": 0, "lang": { "id": 0, "name": "string", "i18": [ null ] }, "key": "string", "content": "string" } ] }, "key": "string", "content": "string" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|[I18](#schemai18)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|401 未登录|Inline| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|403 权限不足|Inline| ### 返回数据结构 状态码 **401** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|true|none||none| |» message|string|true|none||none| 状态码 **403** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|false|none||none| |» message|string|false|none||none| ## DELETE 删除一个国际化字段 DELETE /i18/{id} ### 请求参数 |名称|位置|类型|必选|中文名|说明| |---|---|---|---|---|---| |id|path|integer| 是 ||国际化字段ID| > 返回示例 > 200 Response ```json { "id": 0, "lang": { "id": 0, "name": "string", "i18": [ { "id": 0, "lang": { "id": 0, "name": "string", "i18": [ null ] }, "key": "string", "content": "string" } ] }, "key": "string", "content": "string" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|[I18](#schemai18)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|401 未登录|Inline| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|403 权限不足|Inline| ### 返回数据结构 状态码 **401** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|true|none||none| |» message|string|true|none||none| 状态码 **403** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|false|none||none| |» message|string|false|none||none| # user ## POST 新建一个用户 POST /user/reg > Body 请求参数 ```json { "name": "string", "email": "string", "password": "string", "roleIds": [ 0 ], "department": "string", "employeeType": "string", "probationStart": "string", "probationEnd": "string", "probationDuration": "string", "protocolStart": "string", "protocolEnd": "string", "address": "string", "status": 0 } ``` ### 请求参数 |名称|位置|类型|必选|中文名|说明| |---|---|---|---|---|---| |body|body|object| 否 ||none| |» name|body|string| 是 | 用户昵称|none| |» email|body|string| 是 | 用户Email|登录使用| |» password|body|string| 是 | 用户密码|none| |» roleIds|body|[number]| 是 | 用户角色ID数组|none| |» department|body|string| 否 | 遗留未知字段|1.1.0以前的遗留字段| |» employeeType|body|string| 否 | 遗留未知字段|1.1.0以前的遗留字段| |» probationStart|body|string| 否 | 遗留未知字段|1.1.0以前的遗留字段| |» probationEnd|body|string| 否 | 遗留未知字段|1.1.0以前的遗留字段| |» probationDuration|body|string| 否 | 遗留未知字段|1.1.0以前的遗留字段| |» protocolStart|body|string| 否 | 遗留未知字段|1.1.0以前的遗留字段| |» protocolEnd|body|string| 否 | 遗留未知字段|1.1.0以前的遗留字段| |» address|body|string| 否 | 遗留未知字段|1.1.0以前的遗留字段| |» status|body|number| 否 | 帐号状态|none| > 返回示例 > 200 Response ```json { "id": "string", "name": "string", "email": "string", "password": "string", "role": [ { "id": "string", "name": "string", "permission": [ { "id": 0, "desc": "string", "name": "string" } ], "menus": [ { "id": 0, "name": "string", "order": 0, "parentId": 0, "menuType": "string", "icon": "string", "component": "string", "path": "string", "locale": "string" } ] } ], "department": "string", "employeeType": "string", "probationENd": "string", "robationDuration": "string", "protocolStart": "string", "protocolEnd": "string", "address": "string", "status": 0, "createTime": "string", "updateTime": "string", "create_time": "string", "salt": "string", "update_time": "string" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|[User](#schemauser)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|401 未登录|Inline| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|403 权限不足|Inline| ### 返回数据结构 状态码 **401** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|true|none||none| |» message|string|true|none||none| 状态码 **403** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|false|none||none| |» message|string|false|none||none| ## GET 获取用户信息 GET /user/info/{email} ### 请求参数 |名称|位置|类型|必选|中文名|说明| |---|---|---|---|---|---| |email|path|string| 是 ||用户邮箱| > 返回示例 > 200 Response ```json { "id": "string", "name": "string", "email": "string", "password": "string", "role": [ { "id": "string", "name": "string", "permission": [ { "id": 0, "desc": "string", "name": "string" } ], "menus": [ { "id": 0, "name": "string", "order": 0, "parentId": 0, "menuType": "string", "icon": "string", "component": "string", "path": "string", "locale": "string" } ] } ], "department": "string", "employeeType": "string", "probationENd": "string", "robationDuration": "string", "protocolStart": "string", "protocolEnd": "string", "address": "string", "status": 0, "createTime": "string", "updateTime": "string", "create_time": "string", "salt": "string", "update_time": "string" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|[User](#schemauser)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|401 未登录|Inline| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|403 权限不足|Inline| ### 返回数据结构 状态码 **401** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|true|none||none| |» message|string|true|none||none| 状态码 **403** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|false|none||none| |» message|string|false|none||none| ## DELETE 删除一个用户 DELETE /user/{email} ### 请求参数 |名称|位置|类型|必选|中文名|说明| |---|---|---|---|---|---| |email|path|string| 是 ||用户邮箱| > 返回示例 > 200 Response ```json { "id": "string", "name": "string", "email": "string", "password": "string", "role": [ { "id": "string", "name": "string", "permission": [ { "id": 0, "desc": "string", "name": "string" } ], "menus": [ { "id": 0, "name": "string", "order": 0, "parentId": 0, "menuType": "string", "icon": "string", "component": "string", "path": "string", "locale": "string" } ] } ], "department": "string", "employeeType": "string", "probationENd": "string", "robationDuration": "string", "protocolStart": "string", "protocolEnd": "string", "address": "string", "status": 0, "createTime": "string", "updateTime": "string", "create_time": "string", "salt": "string", "update_time": "string" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|[User](#schemauser)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|401 未登录|Inline| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|403 权限不足|Inline| ### 返回数据结构 状态码 **401** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|true|none||none| |» message|string|true|none||none| 状态码 **403** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|false|none||none| |» message|string|false|none||none| ## PATCH 修改一个用户 PATCH /user/update 如果修改了角色, 必须将该用户踢下线 (在redis中删除该用户的token) > Body 请求参数 ```json { "oldPassword": "string", "newPassword": "string", "email": "string", "roleIds": [ 0 ], "department": "string", "employeeType": "string", "probationStar": "string", "probationEnd": "string", "probationDuration": "string", "protocolStart": "string", "protocolEnd": "string", "address": "string", "status": 0, "name": "string" } ``` ### 请求参数 |名称|位置|类型|必选|中文名|说明| |---|---|---|---|---|---| |body|body|object| 否 ||none| |» oldPassword|body|string| 否 | 旧密码|none| |» newPassword|body|string| 否 | 新密码|none| |» email|body|string| 是 | 邮箱|none| |» roleIds|body|[number]| 是 | 角色ID|none| |» department|body|string| 是 ||none| |» employeeType|body|string| 是 ||none| |» probationStar|body|string| 是 ||none| |» probationEnd|body|string| 是 ||none| |» probationDuration|body|string| 是 ||none| |» protocolStart|body|string| 是 ||none| |» protocolEnd|body|string| 是 ||none| |» address|body|string| 是 ||none| |» status|body|number| 是 | 状态|none| |» name|body|string| 是 | 用户名|none| > 返回示例 > 200 Response ```json { "id": "string", "name": "string", "email": "string", "password": "string", "role": [ { "id": "string", "name": "string", "permission": [ { "id": 0, "desc": "string", "name": "string" } ], "menus": [ { "id": 0, "name": "string", "order": 0, "parentId": 0, "menuType": "string", "icon": "string", "component": "string", "path": "string", "locale": "string" } ] } ], "department": "string", "employeeType": "string", "probationENd": "string", "robationDuration": "string", "protocolStart": "string", "protocolEnd": "string", "address": "string", "status": 0, "createTime": "string", "updateTime": "string", "create_time": "string", "salt": "string", "update_time": "string" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|[User](#schemauser)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|401 未登录|Inline| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|403 权限不足|Inline| ### 返回数据结构 状态码 **401** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|true|none||none| |» message|string|true|none||none| 状态码 **403** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|false|none||none| |» message|string|false|none||none| ## GET 获取用户列表 GET /user ### 请求参数 |名称|位置|类型|必选|中文名|说明| |---|---|---|---|---|---| |name|query|string| 否 ||模糊查找的用户名| |role|query|string| 否 ||用逗号分隔| |email|query|string| 否 ||模糊查找的邮箱| > 返回示例 > 200 Response ```json { "items": [ { "id": "string", "name": "string", "email": "string", "password": "string", "role": [ { "id": "string", "name": "string", "permission": [ {} ], "menus": [ {} ] } ], "department": "string", "employeeType": "string", "probationENd": "string", "robationDuration": "string", "protocolStart": "string", "protocolEnd": "string", "address": "string", "status": 0, "createTime": "string", "updateTime": "string", "create_time": "string", "salt": "string", "update_time": "string" } ], "meta": { "itemCount": 0, "totalItems": 0, "itemsPerPage": 0, "currentPage": 0 }, "links": { "first": "string", "previous": "string", "next": "string", "last": "string" } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|Inline| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|401 未登录|Inline| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|403 权限不足|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» items|[[User](#schemauser)]|true|none||none| |»» id|string|true|none|数据库自增id|none| |»» name|string|true|none|用户名|none| |»» email|string|true|none||登录邮箱| |»» password|string|true|none|密码|none| |»» role|[[Role](#schemarole)]|true|none|角色|none| |»»» id|string|true|none|角色id|none| |»»» name|string|true|none|角色名|none| |»»» permission|[[Permission](#schemapermission)]|true|none|权限|none| |»»»» id|number|true|none|权限ID|none| |»»»» desc|string|true|none|权限介绍|none| |»»»» name|string|true|none|权限键|none| |»»» menus|[[Menu](#schemamenu)]|true|none|菜单|none| |»»»» id|number|true|none|菜单id|none| |»»»» name|string|true|none|菜单名|none| |»»»» order|number|true|none|排序|none| |»»»» parentId|number|false|none|父级id|none| |»»»» menuType|string|true|none|保留字段|none| |»»»» icon|string|false|none|图标名|none| |»»»» component|string|true|none|组件名|none| |»»»» path|string|true|none|路由路径|none| |»»»» locale|string|true|none|国际化键|none| |»» department|string|true|none||1.1.0以前的遗留字段| |»» employeeType|string|true|none||1.1.0以前的遗留字段| |»» probationENd|string|true|none||1.1.0以前的遗留字段| |»» robationDuration|string|true|none||1.1.0以前的遗留字段| |»» protocolStart|string|true|none||1.1.0以前的遗留字段| |»» protocolEnd|string|true|none||1.1.0以前的遗留字段| |»» address|string|true|none||1.1.0以前的遗留字段| |»» status|number|true|none|帐号状态|none| |»» createTime|string|true|none||none| |»» updateTime|string|true|none||none| |»» create_time|string|true|none||none| |»» salt|string|true|none|bcrypt盐|none| |»» update_time|string|true|none||none| |» meta|[PaginationMeta](#schemapaginationmeta)|true|none||none| |»» itemCount|number|false|none||none| |»» totalItems|number|false|none||none| |»» itemsPerPage|number|false|none||none| |»» currentPage|number|false|none||none| |» links|[PaginationLinks](#schemapaginationlinks)|true|none||none| |»» first|string|false|none||none| |»» previous|string|false|none||none| |»» next|string|false|none||none| |»» last|string|false|none||none| 状态码 **401** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|true|none||none| |» message|string|true|none||none| 状态码 **403** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|false|none||none| |» message|string|false|none||none| ## PATCH 强制修改一个用户的密码 PATCH /user/admin/updatePwd > 返回示例 > 200 Response ```json { "email": "string", "newPassword": "string", "confirmPassword": "string" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|Inline| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|401 未登录|Inline| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|403 权限不足|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» email|string|true|none||强制修改密码的邮箱| |» newPassword|string|true|none||新密码| |» confirmPassword|string|true|none||确认新密码| 状态码 **401** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|true|none||none| |» message|string|true|none||none| 状态码 **403** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|false|none||none| |» message|string|false|none||none| ## PATCH 修改自身密码 PATCH /user/updatePwd > Body 请求参数 ```json { "email": "string", "token": "string", "newPassword": "string", "oldPassword": "string" } ``` ### 请求参数 |名称|位置|类型|必选|中文名|说明| |---|---|---|---|---|---| |body|body|object| 否 ||none| |» email|body|string| 是 ||要修改用户的邮箱名| |» token|body|string| 是 ||用户token| |» newPassword|body|string| 是 ||新密码| |» oldPassword|body|string| 是 ||旧密码| > 返回示例 > 200 Response ```json {} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|Inline| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|401 未登录|Inline| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|403 权限不足|Inline| ### 返回数据结构 状态码 **401** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|true|none||none| |» message|string|true|none||none| 状态码 **403** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|false|none||none| |» message|string|false|none||none| # role ## POST 新增一个角色 POST /role > Body 请求参数 ```json { "name": "string", "permissionIds": [ 0 ], "menuIds": [ 0 ] } ``` ### 请求参数 |名称|位置|类型|必选|中文名|说明| |---|---|---|---|---|---| |body|body|object| 否 ||none| |» name|body|string| 是 | 角色名|none| |» permissionIds|body|[number]| 是 | 权限id数组|none| |» menuIds|body|[number]| 是 | 菜单id数组|none| > 返回示例 > 200 Response ```json { "id": "string", "name": "string", "permission": [ { "id": 0, "desc": "string", "name": "string" } ], "menus": [ { "id": 0, "name": "string", "order": 0, "parentId": 0, "menuType": "string", "icon": "string", "component": "string", "path": "string", "locale": "string" } ] } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|[Role](#schemarole)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|401 未登录|Inline| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|403 权限不足|Inline| ### 返回数据结构 状态码 **401** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|true|none||none| |» message|string|true|none||none| 状态码 **403** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|false|none||none| |» message|string|false|none||none| ## GET 查找所有角色 GET /role > 返回示例 > 200 Response ```json [ { "id": "string", "name": "string", "permission": [ { "id": 0, "desc": "string", "name": "string" } ], "menus": [ { "id": 0, "name": "string", "order": 0, "parentId": 0, "menuType": "string", "icon": "string", "component": "string", "path": "string", "locale": "string" } ] } ] ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|Inline| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|401 未登录|Inline| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|403 权限不足|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |*anonymous*|[[Role](#schemarole)]|false|none||none| |» id|string|true|none|角色id|none| |» name|string|true|none|角色名|none| |» permission|[[Permission](#schemapermission)]|true|none|权限|none| |»» id|number|true|none|权限ID|none| |»» desc|string|true|none|权限介绍|none| |»» name|string|true|none|权限键|none| |» menus|[[Menu](#schemamenu)]|true|none|菜单|none| |»» id|number|true|none|菜单id|none| |»» name|string|true|none|菜单名|none| |»» order|number|true|none|排序|none| |»» parentId|number|false|none|父级id|none| |»» menuType|string|true|none|保留字段|none| |»» icon|string|false|none|图标名|none| |»» component|string|true|none|组件名|none| |»» path|string|true|none|路由路径|none| |»» locale|string|true|none|国际化键|none| 状态码 **401** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|true|none||none| |» message|string|true|none||none| 状态码 **403** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|false|none||none| |» message|string|false|none||none| ## PATCH 修改一个角色 PATCH /role > Body 请求参数 ```json { "id": 0, "name": "string", "permissionIds": [ 0 ], "menuIds": [ 0 ] } ``` ### 请求参数 |名称|位置|类型|必选|中文名|说明| |---|---|---|---|---|---| |body|body|object| 否 ||none| |» id|body|number| 是 | 角色id|none| |» name|body|string| 否 | 角色名|none| |» permissionIds|body|[number]| 否 | 角色权限id列表|none| |» menuIds|body|[number]| 否 | 角色菜单列表|none| > 返回示例 > 200 Response ```json { "id": "string", "name": "string", "permission": [ { "id": 0, "desc": "string", "name": "string" } ], "menus": [ { "id": 0, "name": "string", "order": 0, "parentId": 0, "menuType": "string", "icon": "string", "component": "string", "path": "string", "locale": "string" } ] } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|[Role](#schemarole)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|401 未登录|Inline| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|403 权限不足|Inline| ### 返回数据结构 状态码 **401** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|true|none||none| |» message|string|true|none||none| 状态码 **403** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|false|none||none| |» message|string|false|none||none| ## GET 获取角色列表的详细信息 GET /role/detail ### 请求参数 |名称|位置|类型|必选|中文名|说明| |---|---|---|---|---|---| |page|query|integer| 否 ||页数| |limit|query|integer| 否 ||获取数量| |name|query|string| 否 ||角色名| > 返回示例 > 200 Response ```json { "roleInfo": { "items": [ { "id": "string", "name": "string", "permission": [ { "id": null, "desc": null, "name": null } ], "menus": [ { "id": null, "name": null, "order": null, "parentId": null, "menuType": null, "icon": null, "component": null, "path": null, "locale": null } ] } ], "meta": { "itemCount": 0, "totalItems": 0, "itemsPerPage": 0, "currentPage": 0 }, "links": { "first": "string", "previous": "string", "next": "string", "last": "string" } }, "menuTree": [ { "id": 0, "label": "string", "children": [ { "id": null, "label": "string", "children": [ {} ], "url": "string", "component": "string", "customIcon": "string", "menuType": "string", "parentId": "string", "order": 0, "locale": "string" } ], "url": "string", "component": "string", "customIcon": "string", "menuType": "string", "parentId": "string", "order": 0, "locale": "string" } ] } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|Inline| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|401 未登录|Inline| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|403 权限不足|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» roleInfo|object|true|none||none| |»» items|[[Role](#schemarole)]|true|none||none| |»»» id|string|true|none|角色id|none| |»»» name|string|true|none|角色名|none| |»»» permission|[[Permission](#schemapermission)]|true|none|权限|none| |»»»» id|number|true|none|权限ID|none| |»»»» desc|string|true|none|权限介绍|none| |»»»» name|string|true|none|权限键|none| |»»» menus|[[Menu](#schemamenu)]|true|none|菜单|none| |»»»» id|number|true|none|菜单id|none| |»»»» name|string|true|none|菜单名|none| |»»»» order|number|true|none|排序|none| |»»»» parentId|number|false|none|父级id|none| |»»»» menuType|string|true|none|保留字段|none| |»»»» icon|string|false|none|图标名|none| |»»»» component|string|true|none|组件名|none| |»»»» path|string|true|none|路由路径|none| |»»»» locale|string|true|none|国际化键|none| |»» meta|[PaginationMeta](#schemapaginationmeta)|true|none||none| |»»» itemCount|number|false|none||none| |»»» totalItems|number|false|none||none| |»»» itemsPerPage|number|false|none||none| |»»» currentPage|number|false|none||none| |»» links|[PaginationLinks](#schemapaginationlinks)|true|none||none| |»»» first|string|false|none||none| |»»» previous|string|false|none||none| |»»» next|string|false|none||none| |»»» last|string|false|none||none| |» menuTree|[[ITreeNodeData](#schemaitreenodedata)]|true|none||none| |»» id|any|true|none|id|none| *anyOf* |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |»»» *anonymous*|number|false|none||none| *or* |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |»»» *anonymous*|string|false|none||none| *continued* |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |»» label|string|true|none|展示的标签|none| |»» children|[[ITreeNodeData](#schemaitreenodedata)]|false|none|子集菜单|none| |»»» id|any|true|none|id|none| |»»» label|string|true|none|展示的标签|none| |»»» children|[[ITreeNodeData](#schemaitreenodedata)]|false|none|子集菜单|none| |»»» url|string|true|none|访问路由|none| |»»» component|string|true|none|组件|none| |»»» customIcon|string|true|none|图标名|none| |»»» menuType|string|true|none|保留字段|none| |»»» parentId|string|true|none|父级id|none| |»»» order|integer|true|none|排序|none| |»»» locale|string|true|none|国际化键|none| |»» url|string|true|none|访问路由|none| |»» component|string|true|none|组件|none| |»» customIcon|string|true|none|图标名|none| |»» menuType|string|true|none|保留字段|none| |»» parentId|string|true|none|父级id|none| |»» order|integer|true|none|排序|none| |»» locale|string|true|none|国际化键|none| 状态码 **401** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|true|none||none| |» message|string|true|none||none| 状态码 **403** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|false|none||none| |» message|string|false|none||none| ## DELETE 删除一个角色 DELETE /role/{id} ### 请求参数 |名称|位置|类型|必选|中文名|说明| |---|---|---|---|---|---| |id|path|number| 是 ||角色id| > 返回示例 > 200 Response ```json { "id": "string", "name": "string", "permission": [ { "id": 0, "desc": "string", "name": "string" } ], "menus": [ { "id": 0, "name": "string", "order": 0, "parentId": 0, "menuType": "string", "icon": "string", "component": "string", "path": "string", "locale": "string" } ] } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|[Role](#schemarole)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|401 未登录|Inline| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|403 权限不足|Inline| ### 返回数据结构 状态码 **401** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|true|none||none| |» message|string|true|none||none| 状态码 **403** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|false|none||none| |» message|string|false|none||none| ## GET 获取一个角色的详细信息 GET /role/info/{id} ### 请求参数 |名称|位置|类型|必选|中文名|说明| |---|---|---|---|---|---| |id|path|integer| 是 ||角色id| > 返回示例 > 200 Response ```json { "id": "string", "name": "string", "permission": [ { "id": 0, "desc": "string", "name": "string" } ], "menus": [ { "id": 0, "name": "string", "order": 0, "parentId": 0, "menuType": "string", "icon": "string", "component": "string", "path": "string", "locale": "string" } ] } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|[Role](#schemarole)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|401 未登录|Inline| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|403 权限不足|Inline| ### 返回数据结构 状态码 **401** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|true|none||none| |» message|string|true|none||none| 状态码 **403** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|false|none||none| |» message|string|false|none||none| # permission ## POST 创建权限 POST /permission > Body 请求参数 ```json { "name": "string", "desc": "string" } ``` ### 请求参数 |名称|位置|类型|必选|中文名|说明| |---|---|---|---|---|---| |body|body|object| 否 ||none| |» name|body|string| 是 | 权限键|none| |» desc|body|string| 是 | 权限简介|none| > 返回示例 > 200 Response ```json { "id": 0, "desc": "string", "name": "string" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|[Permission](#schemapermission)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|401 未登录|Inline| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|403 权限不足|Inline| ### 返回数据结构 状态码 **401** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|true|none||none| |» message|string|true|none||none| 状态码 **403** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|false|none||none| |» message|string|false|none||none| ## PATCH 修改权限 PATCH /permission > Body 请求参数 ```json { "name": "string", "desc": "string", "id": 0 } ``` ### 请求参数 |名称|位置|类型|必选|中文名|说明| |---|---|---|---|---|---| |body|body|[UpdatePermissionDTO](#schemaupdatepermissiondto)| 否 ||none| > 返回示例 > 200 Response ```json {} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|Inline| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|401 未登录|Inline| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|403 权限不足|Inline| ### 返回数据结构 状态码 **401** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|true|none||none| |» message|string|true|none||none| 状态码 **403** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|false|none||none| |» message|string|false|none||none| ## GET 获取权限 GET /permission ### 请求参数 |名称|位置|类型|必选|中文名|说明| |---|---|---|---|---|---| |page|query|string| 否 ||页数| |limit|query|string| 否 ||如果为0则查找所有| |name|query|string| 否 ||权限名,where子句格式| > 返回示例 > 200 Response ```json { "items": [ { "id": 0, "desc": "string", "name": "string" } ], "meta": { "itemCount": 0, "totalItems": 0, "itemsPerPage": 0, "currentPage": 0 }, "links": { "first": "string", "previous": "string", "next": "string", "last": "string" } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|Inline| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|401 未登录|Inline| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|403 权限不足|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» items|[[Permission](#schemapermission)]|true|none||none| |»» id|number|true|none|权限ID|none| |»» desc|string|true|none|权限介绍|none| |»» name|string|true|none|权限键|none| |» meta|[PaginationMeta](#schemapaginationmeta)|true|none||none| |»» itemCount|number|false|none||none| |»» totalItems|number|false|none||none| |»» itemsPerPage|number|false|none||none| |»» currentPage|number|false|none||none| |» links|[PaginationLinks](#schemapaginationlinks)|true|none||none| |»» first|string|false|none||none| |»» previous|string|false|none||none| |»» next|string|false|none||none| |»» last|string|false|none||none| 状态码 **401** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|true|none||none| |» message|string|true|none||none| 状态码 **403** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|false|none||none| |» message|string|false|none||none| ## DELETE 删除权限 DELETE /permission/{id} ### 请求参数 |名称|位置|类型|必选|中文名|说明| |---|---|---|---|---|---| |id|path|integer| 是 ||权限id| > 返回示例 > 200 Response ```json [ { "id": 0, "desc": "string", "name": "string" } ] ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|Inline| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|401 未登录|Inline| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|403 权限不足|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» id|number|true|none|权限ID|none| |» desc|string|true|none|权限介绍|none| |» name|string|true|none|权限键|none| 状态码 **401** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|true|none||none| |» message|string|true|none||none| 状态码 **403** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|false|none||none| |» message|string|false|none||none| # menu ## GET 获取用户菜单 GET /menu/role/{email} ### 请求参数 |名称|位置|类型|必选|中文名|说明| |---|---|---|---|---|---| |email|path|string| 是 ||用户email| > 返回示例 > 200 Response ```json [ { "id": 0, "label": "string", "children": [ { "id": 0, "label": "string", "children": [ { "id": null, "label": "string", "children": [ null ], "url": "string", "component": "string", "customIcon": "string", "menuType": "string", "parentId": "string", "order": 0, "locale": "string" } ], "url": "string", "component": "string", "customIcon": "string", "menuType": "string", "parentId": "string", "order": 0, "locale": "string" } ], "url": "string", "component": "string", "customIcon": "string", "menuType": "string", "parentId": "string", "order": 0, "locale": "string" } ] ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|Inline| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|401 未登录|Inline| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|403 权限不足|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |*anonymous*|[[ITreeNodeData](#schemaitreenodedata)]|false|none||none| |» id|any|true|none|id|none| *anyOf* |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |»» *anonymous*|number|false|none||none| *or* |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |»» *anonymous*|string|false|none||none| *continued* |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» label|string|true|none|展示的标签|none| |» children|[[ITreeNodeData](#schemaitreenodedata)]|false|none|子集菜单|none| |»» id|any|true|none|id|none| |»» label|string|true|none|展示的标签|none| |»» children|[[ITreeNodeData](#schemaitreenodedata)]|false|none|子集菜单|none| |»» url|string|true|none|访问路由|none| |»» component|string|true|none|组件|none| |»» customIcon|string|true|none|图标名|none| |»» menuType|string|true|none|保留字段|none| |»» parentId|string|true|none|父级id|none| |»» order|integer|true|none|排序|none| |»» locale|string|true|none|国际化键|none| |» url|string|true|none|访问路由|none| |» component|string|true|none|组件|none| |» customIcon|string|true|none|图标名|none| |» menuType|string|true|none|保留字段|none| |» parentId|string|true|none|父级id|none| |» order|integer|true|none|排序|none| |» locale|string|true|none|国际化键|none| 状态码 **401** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|true|none||none| |» message|string|true|none||none| 状态码 **403** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|false|none||none| |» message|string|false|none||none| ## GET 获取菜单树 GET /menu 获取所有的菜单,并根绝parentId建立一个菜单树 > 返回示例 > 200 Response ```json [ { "id": 0, "label": "string", "children": [ { "id": 0, "label": "string", "children": [ { "id": null, "label": "string", "children": [ null ], "url": "string", "component": "string", "customIcon": "string", "menuType": "string", "parentId": "string", "order": 0, "locale": "string" } ], "url": "string", "component": "string", "customIcon": "string", "menuType": "string", "parentId": "string", "order": 0, "locale": "string" } ], "url": "string", "component": "string", "customIcon": "string", "menuType": "string", "parentId": "string", "order": 0, "locale": "string" } ] ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|Inline| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|401 未登录|Inline| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|403 权限不足|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |*anonymous*|[[ITreeNodeData](#schemaitreenodedata)]|false|none||none| |» id|any|true|none|id|none| *anyOf* |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |»» *anonymous*|number|false|none||none| *or* |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |»» *anonymous*|string|false|none||none| *continued* |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» label|string|true|none|展示的标签|none| |» children|[[ITreeNodeData](#schemaitreenodedata)]|false|none|子集菜单|none| |»» id|any|true|none|id|none| |»» label|string|true|none|展示的标签|none| |»» children|[[ITreeNodeData](#schemaitreenodedata)]|false|none|子集菜单|none| |»» url|string|true|none|访问路由|none| |»» component|string|true|none|组件|none| |»» customIcon|string|true|none|图标名|none| |»» menuType|string|true|none|保留字段|none| |»» parentId|string|true|none|父级id|none| |»» order|integer|true|none|排序|none| |»» locale|string|true|none|国际化键|none| |» url|string|true|none|访问路由|none| |» component|string|true|none|组件|none| |» customIcon|string|true|none|图标名|none| |» menuType|string|true|none|保留字段|none| |» parentId|string|true|none|父级id|none| |» order|integer|true|none|排序|none| |» locale|string|true|none|国际化键|none| 状态码 **401** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|true|none||none| |» message|string|true|none||none| 状态码 **403** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|false|none||none| |» message|string|false|none||none| ## POST 新增一个菜单 POST /menu > Body 请求参数 ```json { "order": 0, "menuType": "string", "name": "string", "path": "string", "component": "string", "icon": "string", "locale": "string", "parentId": 0 } ``` ### 请求参数 |名称|位置|类型|必选|中文名|说明| |---|---|---|---|---|---| |body|body|object| 否 ||none| |» order|body|number| 是 ||none| |» menuType|body|string| 是 ||none| |» name|body|string| 是 ||none| |» path|body|string| 是 ||none| |» component|body|string| 是 ||none| |» icon|body|string| 是 ||none| |» locale|body|string| 是 ||none| |» parentId|body|number¦null| 否 ||none| > 返回示例 > 200 Response ```json { "id": 0, "name": "string", "order": 0, "parentId": 0, "menuType": "string", "icon": "string", "component": "string", "path": "string", "locale": "string" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|[Menu](#schemamenu)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|401 未登录|Inline| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|403 权限不足|Inline| ### 返回数据结构 状态码 **401** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|true|none||none| |» message|string|true|none||none| 状态码 **403** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» statusCode|number|false|none||none| |» message|string|false|none||none| ## PATCH 修改一个菜单 PATCH /menu > Body 请求参数 ```json { "order": 0, "menuType": "string", "name": "string", "path": "string", "component": "string", "icon": "string", "locale": "string", "parentId": 0, "id": 0 } ``` ### 请求参数 |名称|位置|类型|必选|中文名|说明| |---|---|---|---|---|---| |body|body|[UpdateMenuDTO](#schemaupdatemenudto)| 否 ||none| > 返回示例 > 200 Response ```json