接口模型.md
10.1 KB
机会导向管理后台接口(非正式版)
全局统一设定
请求头指定要求的字段
字段 | 说明 |
---|---|
x-mmm-accesstoken | 发起请求时使用时校验用 token |
x-mmm-refreshtoken | 刷新 token 时使用的 token |
- 备注 :token 使用 jwt 进行处理.其中包含有 user_id、company_id 的数据,登录时获取
token 机制描述
token 的响应内容
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NzYwNTM2OTAsImlhdCI6MTU3NjA1MTg4OCwiaXNzIjoibW1tX29wcG1nIiwibmJmIjoxNTc2MDUxODg4LCJ1aWQiOjEwLCJjb21wYW55X2lkIjoyfQ.R056B306_vO4UKfMRalncFULE5Z0phN4WOhS9PMwydc",
"expires_in": 1576053688,
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NzYwNTU0OTAsImlhdCI6MTU3NjA1MTg4OCwiaXNzIjoibW1tX29wcG1nIiwibmJmIjoxNTc2MDUxODg4LCJ1aWQiOjEwLCJjb21wYW55X2lkIjoyfQ.OY54QdDwAq2B1NPnAmHkSxy_KvhktmZA2boSlcSSfoU",
"refresh_expires": 1576055488
}
客户端可本地存储该内容数据。
- access_token 对应请求头的 x-mmm-accesstoken。expires_in 指的是 access_token 的到期时间(时间戳),客户端可以依此判断 access_token 到期时间,然后决定是否调用接口刷新 token。
- refresh_token 对应请求头的 x-mmm-refreshtoken。refresh_expires 指的是 refresh_token 的到期时间(时间戳),客户端可以依此判断 refresh_token 到期时间,然后决定是否退出重新登录。
- 刷新 toke 的依据是 refresh_token,如果 refresh_token 过期失效则只能退出系统重新登录。
- 为应对客户端未主动刷新 token 的情况。当服务端发现 access_token 过期且 refresh_token 未过期时返回错误码【2】,并附带刷新后的 token,影响的内容格式同上,客户端可依此刷新请求头。当服务端发现 refresh_token 过期时返回错误码【3】,客户需要退出重新登录。
通用响应结构
{
"code": "错误码数字",
"msg": "错误描述字符串",
"data": {
"xxx": "any"
}
}
- 备注:data 中的内容根据各接口实际情况确定
认证相关
登录
- 请求路径 :/auth/login
- 请求方式 :POST
- 请求 json:
{
"account": "账号",
"password": "密码"
}
- 正常响应 json
{
"code": 0,
"msg": "成功",
"data": {
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NzYwNTM2OTAsImlhdCI6MTU3NjA1MTg4OCwiaXNzIjoibW1tX29wcG1nIiwibmJmIjoxNTc2MDUxODg4LCJ1aWQiOjEwLCJjb21wYW55X2lkIjoyfQ.R056B306_vO4UKfMRalncFULE5Z0phN4WOhS9PMwydc",
"expires_in": 1576053688,
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NzYwNTU0OTAsImlhdCI6MTU3NjA1MTg4OCwiaXNzIjoibW1tX29wcG1nIiwibmJmIjoxNTc2MDUxODg4LCJ1aWQiOjEwLCJjb21wYW55X2lkIjoyfQ.OY54QdDwAq2B1NPnAmHkSxy_KvhktmZA2boSlcSSfoU",
"refresh_expires": 1576055488
}
}
- 备注:该请求无需指定请求头
刷新 token
- 请求路径 :/v1/auth/refresh_token
- 请求方式 :get
- 请求 json:
- 正常响应 json
{
"code": 0,
"msg": "成功",
"data": {
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NzYwNTM2OTAsImlhdCI6MTU3NjA1MTg4OCwiaXNzIjoibW1tX29wcG1nIiwibmJmIjoxNTc2MDUxODg4LCJ1aWQiOjEwLCJjb21wYW55X2lkIjoyfQ.R056B306_vO4UKfMRalncFULE5Z0phN4WOhS9PMwydc",
"expires_in": 1576053688,
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NzYwNTU0OTAsImlhdCI6MTU3NjA1MTg4OCwiaXNzIjoibW1tX29wcG1nIiwibmJmIjoxNTc2MDUxODg4LCJ1aWQiOjEwLCJjb21wYW55X2lkIjoyfQ.OY54QdDwAq2B1NPnAmHkSxy_KvhktmZA2boSlcSSfoU",
"refresh_expires": 1576055488
}
}
- 备注:无
切换公司
- 请求路径 :/v1/auth/change_company
- 请求方式 :post
- 请求 json:
{
"company_id": 2
}
- 正常响应 json
{
"code": 0,
"msg": "成功",
"data": {
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NzYwNTM2OTAsImlhdCI6MTU3NjA1MTg4OCwiaXNzIjoibW1tX29wcG1nIiwibmJmIjoxNTc2MDUxODg4LCJ1aWQiOjEwLCJjb21wYW55X2lkIjoyfQ.R056B306_vO4UKfMRalncFULE5Z0phN4WOhS9PMwydc",
"expires_in": 1576053688,
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NzYwNTU0OTAsImlhdCI6MTU3NjA1MTg4OCwiaXNzIjoibW1tX29wcG1nIiwibmJmIjoxNTc2MDUxODg4LCJ1aWQiOjEwLCJjb21wYW55X2lkIjoyfQ.OY54QdDwAq2B1NPnAmHkSxy_KvhktmZA2boSlcSSfoU",
"refresh_expires": 1576055488
}
}
- 备注:切换公司实际是变更 token 信息
公司部门管理
添加部门
- 请求路径:/v1/department/add
- 请求方式:post
- 请求 json:
{
"name": "部门8",
"parent_id": 13,
"manages": [1, 2, 3] //部门主管id列表
}
- 正常响应 json
{
"code": 0,
"msg": "成功",
"data": {
"id": 12 //部门id
}
}
- 备注;无
编辑部门
- 请求路径:/v1/department/edit
- 请求方式:post
- 请求 json:
{
"id": 1,
"name": "部门8",
"parent_id": 13,
"manages": [1, 2, 3] //部门主管id列表
}
- 响应 json
{
"code": 0,
"msg": "成功",
"data": null
}
- 备注;无
删除部门
- 请求路径:/v1/department/delete
- 请求方式:post
- 请求 json:
{
"ids": [1, 2]
}
- 响应 json
{
"code": 0,
"msg": "成功",
"data": null
}
- 备注;无
公司职位管理
添加职位
- 请求路径:/v1/position/add
- 请求方式:post
- 请求 json:
{
"name": "职位b-1",
"parent_id": 8
}
- 响应 json
{
"code": 0,
"msg": "成功",
"data": {
"id": 2
}
}
- 备注;无
编辑职位
- 请求路径:/v1/position/edit
- 请求方式:post
- 请求 json:
{
"id": 2,
"name": "职位b-1",
"parent_id": 8
}
- 响应 json
{
"code": 0,
"msg": "成功",
"data": {
"id": 2
}
}
- 备注;无
删除职位
- 请求路径:/v1/position/delete
- 请求方式:post
- 请求 json:
{
"ids": [1, 2, 3]
}
- 响应 json
{
"code": 0,
"msg": "成功",
"data": null
}
- 备注;无
公司员工角色
添加角色
- 请求路径:/v1/rbac/role/add
- 请求方式:post
- 请求 json:
{
"pid": 8,
"name": "角色7"
}
- 响应 json
{
"code": 0,
"msg": "成功",
"data": {
"id": 2
}
}
- 备注;无
编辑角色
- 请求路径:/v1/rbac/role/edit
- 请求方式:post
- 请求 json:
{
"id": 7,
"pid": 8,
"name": "角色7"
}
- 响应 json
{
"code": 0,
"msg": "成功",
"data": {
"id": 2
}
}
删除角色
- 请求路径:/v1/rbac/role/delete
- 请求方式:post
- 请求 json:
{
"id": 1
}
- 响应 json
{
"code": 0,
"msg": "成功",
"data": null
}
- 备注;无
- 备注;无
公告
添加公告
- 请求路径 :/v1/bulletin/add
- 请求方式 :post
- 请求 json:
{
"type": 2,
"title": "标题",
"content": "公告内容",
"allow_close": 0,
"question_switch": 1,
"receiver": ["1", "2"],
"question": {
"id": 1,
"type": 1,
"title": "今天星期几?",
"content": [
{
"id": 1,
"content": "星期1"
},
{
"id": 2,
"content": "星期2"
}
]
},
"cover": {
"path": "/xx/xx.img",
"w": 50,
"h": 70
}
}
obj.type 公告类型(1图+跳转链接、2纯文本)
obj.title 标题
obj.content 公告内容
obj.allow_close 允许关闭公告(0允许关闭窗口,1阅读完才能关闭,2选项打勾后才能关闭)
obj.question_switch 设置问题开关 (是否有问题) 1:是 0:否
obj.receiver 接收者
obj.question.type 类型:0-单选,1-多选
obj.question.title 标题
obj.question.content 问题选项
obj.cover 封面
- 响应 json
{
"code": "00000",
"msg": "成功",
"data": {}
}
公告列表
- 请求路径 :/v1/bulletin/list
- 请求方式 :post
- 请求 json:
{
"page": 1,
"page_size": 20,
"status": 0
}
obj.status 状态 0-所有 1-下架 2-上架
- 响应 json
{
"code": "00000",
"msg": "成功",
"data": {
"list": [
{
"id": 5,
"type": 2,
"title": "测试公告",
"status": 1,
"receiver": [
{
"id": 1,
"name": "Jennifer Clark"
},
{
"id": 2,
"name": "邓娱婷1208"
}
],
"time": "2019-12-11 17:11:43"
}
],
"Total": 2
}
}
公告详情
- 请求路径 :/v1/bulletin/get
- 请求方式 :post
- 请求 json:
{
"id": 5
}
obj.status 状态 0-所有 1-下架 2-上架
- 响应 json
{
"code": "00000",
"msg": "成功",
"data": {
"id": 5,
"type": 2,
"title": "测试公告",
"content": "今天发布了一则公告",
"allow_close": 0,
"question_switch": 1,
"receiver": [
{
"id": 1,
"name": "Jennifer Clark"
},
{
"id": 2,
"name": "邓娱婷1208"
}
],
"question": {
"id": 4,
"type": 1,
"title": "今天星期几?",
"content": [
{
"id": 1,
"content": "星期1"
},
{
"id": 2,
"content": "星期2"
}
]
},
"cover": {
"path": "/xx/xx.img",
"h": 70,
"w": 50
}
}
}
公告更新
- 请求路径 :/v1/bulletin/update
- 请求方式 :post
- 请求 json:
{
"id": 3,
"type": 2,
"title": "测试公告3",
"content": "今天发布了一则公告3",
"allow_close": 0,
"question_switch": 1,
"receiver": ["1", "2", "3"],
"question": {
"id": 2,
"type": 1,
"title": "今天星期几?",
"content": [
{
"id": 1,
"content": "星期2"
},
{
"id": 2,
"content": "星期3"
}
]
},
"cover": {
"path": "/xx/xx.img",
"w": 50,
"h": 70
}
}
- 响应 json
{
"code": "00000",
"msg": "成功",
"data": null
}