接口模型.md 7.7 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 未过期时返回错误码【10026】,并附带刷新后的 token,影响的内容格式同上,客户端可依此刷新请求头。当服务端发现 refresh_token 过期时返回错误码【10024】,客户需要退出重新登录。

通用响应结构

{
  "code": "错误码字符串",
  "msg": "错误描述字符串",
  "data": {
    "xxx": "any"
  }
}
  • 备注:data 中的内容根据各接口实际情况确定

认证相关

登录

  • 请求路径 :/auth/login
  • 请求方式 :POST
  • 请求 json:
{
  "account": "账号",
  "password": "密码"
}
  • 响应 json
{
  "code": "00000",
  "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": "00000",
  "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": "00000",
  "msg": "成功",
  "data": {
    "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NzYwNTM2OTAsImlhdCI6MTU3NjA1MTg4OCwiaXNzIjoibW1tX29wcG1nIiwibmJmIjoxNTc2MDUxODg4LCJ1aWQiOjEwLCJjb21wYW55X2lkIjoyfQ.R056B306_vO4UKfMRalncFULE5Z0phN4WOhS9PMwydc",
    "expires_in": 1576053688,
    "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NzYwNTU0OTAsImlhdCI6MTU3NjA1MTg4OCwiaXNzIjoibW1tX29wcG1nIiwibmJmIjoxNTc2MDUxODg4LCJ1aWQiOjEwLCJjb21wYW55X2lkIjoyfQ.OY54QdDwAq2B1NPnAmHkSxy_KvhktmZA2boSlcSSfoU",
    "refresh_expires": 1576055488
  }
}
  • 备注:切换公司实际是变更 token 信息

公告

添加公告

  • 请求路径 :/v1/bulletin/add
  • 请求方式 :post
  • 请求 json:
{
    "type":2,
    "title":"标题",
    "content":"公告内容",
    "allow_close":0,
    "allow_condition":3,
    "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禁止)
obj.allow_condition 关闭条件 (1(bit 0):公告内容查看完 2(bit 1):回答完问题)
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/:id
  • 请求方式 :get
  • 请求 json:
{
}
obj.status 状态 0-所有 1-下架 2-上架 
  • 响应 json
{
  "code": "00000",
  "msg": "成功",
  "data": {
    "id": 5,
    "type": 2,
    "title": "测试公告",
    "content": "今天发布了一则公告",
    "allow_close": 0,
    "allow_condition": 3,
    "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,
    "allow_condition":2,
    "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
}