/VotingBackEnd

A back end for voting

Primary LanguageJavaScript

VotingBackEnd

Version

v1

URL

unknown

BASE

// 成功
{
    "success": true,
    "data": {

    }
}

// 失败
{
    "success": false,
    "data": {
        "msg": "xxxx"
    }
}

前端接口

�初始化投票首页

[GET] api/votes 

返回数据

{
  "success": true,
  "data": {
    "banner": "/assets/ic_banner.jpg",
    "title": "十大杰出青年评选投票",
    "beginTime": "2018-03-05 12:00",
    "endTime": "2018-03-05 12:00",
    "summary": "如果你无法简洁的表达你的想法,那只能说明你还不够了解它。--阿尔伯特·爱英斯坦如果你无法简洁的表达你的想法,那只能说明你还不够了解它。--阿尔伯特·爱英斯坦如果你无法简洁的表达你的想法,那只能说明你还不够了解它。--阿尔伯特·爱英斯坦如果你无法简洁的表达你的想法,那只能说明你还不够了解它。--阿尔伯特·爱英斯坦",
    "candidates": [{
        "id": 1,
        "name": "",
        "avatar": "/assets/1.jpg",
        "info": "<span>如果你无法简洁的表达你的想法,那只能说明你还不够了解它。--阿尔伯特·爱英斯坦如果你无法简洁的表达你的想法,那只能说明你还不够了解它。--阿尔伯特·爱英斯坦如果你无法简洁的表达你的想法,那只能说明你还不够了解它。--阿尔伯特·爱英斯坦如果你无法简洁的表达你的想法,那只能说明你还不够了解它。--阿尔伯特·爱英斯坦</span>如果你无法简洁的表达你的想法,那只能说明你还不够了解它。--阿尔伯特·爱英斯坦如果你无法简洁的表达你的想法,那只能说明你还不够了解它。--阿尔伯特·爱英斯坦如果你无法简洁的表达你的想法,那只能说明你还不够了解它。--阿尔伯特·爱英斯坦如果你无法简洁的表达你的想法,那只能说明你还不够了解它。--阿尔伯特·爱英斯坦",
        "votes": 100,
      },
      {
        "id": 2,
        "name": "",
        "avatar": "/assets/2.jpg",
        "info": "",
        "votes": 100,
      },
      {
        "id": 3,
        "name": "",
        "avatar": "/assets/3.jpg",
        "info": "",
        "votes": 100,
      },
      ...
    ]
  }
}

获取投票排行

[GET] /api/rank

返回数据

{
  "success": true,
  "data": [{
      "name": "xxx",
      "votes": 100,
    },
    {
      "name": "aaa",
      "votes": 100,
    },
    {
      "name": "vvv",
      "votes": 100,
    },
    {
      "name": "bbb",
      "votes": 100,
    },
    {
      "name": "ddd",
      "votes": 100,
    },
    {
      "name": "eee",
      "votes": 100,
    }
  ]
}

投票操作

[POST] /api/vote

提交数据

body:
{
    "id": 1  //候选人id
}

返回数据

{
  "success": true,
  "data": {}
}

后台接口

登录操作

[POST] /admin/login

提交数据

body:
{
  "username": "admin",
  "password": "admin"
}

返回数据

{
  "success": true,
  "data": {
    "token": "xxx-xxx-xxx"
  }
}

注销操作

[POST] /admin/logout

提交数据

body:
{
  "username": "xxxx",
  "token": "xxx-xxx-xxx" // token 随机生成
}

返回数据

{
  "success": true,
  "data": {
  }
}

获取设置信息接口

[GET] /admin/setting

返回数据

{
  "success": true,
  "data": {
    "title": "abc",    // 标题
    "summary": "abc",  // 简介内容
    "starttime": "",   // 开始时间
    "endtime": ""      // 截止时间
  }
}

保存设置信息接口

[POST] /admin/setting

提交数据

body:
{
  "title": "abc",    // 标题
  "summary": "abc",  // 简介内容
  "starttime": "",   // 开始时间
  "endtime": ""      // 截止时间
}

返回数据

{
  "success": true,
  "data": {
  }
}

获取排行结果接口

[GET] /admin/result

返回数据

{
  "success": true,
  "data": [
    {
      "name": "acc",
      "votes": 100
    },
    {
      "name": "bcc",
      "votes": 50
    }
  ]
}

修改排行结果接口

[POST] /admin/result

�提交数据

body:
{
  "name": "",   // 获选人�名字
  "votes": 100, // 新的票数
}

返回数据

{
  "success": true,
  "data": {
  }
}

获取IP列表

[GET] /admin/ip

返回数据

{
  "success": true,
  "data": [
    {
      "ip": "",   // ipv4
      "user": "", // 候选人姓名
      "time": "", // 时间
    }
  ]
}

获取候选人列表

[GET] /admin/user

返回数据

{
  "success": true,
  "data": [
      {
        "id": 1,
        "name": "",
        "avatar": "/assets/1.jpg",
        "info": "<span>如果你无法简洁的表达你的想法,那只能说明你还不够了解它。--阿尔伯特·爱英斯坦如果你无法简洁的表达你的想法,那只能说明你还不够了解它。--阿尔伯特·爱英斯坦如果你无法简洁的表达你的想法,那只能说明你还不够了解它。--阿尔伯特·爱英斯坦如果你无法简洁的表达你的想法,那只能说明你还不够了解它。--阿尔伯特·爱英斯坦</span>如果你无法简洁的表达你的想法,那只能说明你还不够了解它。--阿尔伯特·爱英斯坦如果你无法简洁的表达你的想法,那只能说明你还不够了解它。--阿尔伯特·爱英斯坦如果你无法简洁的表达你的想法,那只能说明你还不够了解它。--阿尔伯特·爱英斯坦如果你无法简洁的表达你的想法,那只能说明你还不够了解它。--阿尔伯特·爱英斯坦",
        "votes": 100,
      },
      {
        "id": 2,
        "name": "",
        "avatar": "/assets/2.jpg",
        "info": "",
        "votes": 100,
      },
      {
        "id": 3,
        "name": "",
        "avatar": "/assets/3.jpg",
        "info": "",
        "votes": 100,
      },
      ...
  ]
}

更新候选人信息

[POST] /admin/user

上传数据

body:
{
  'id': 1;
  'avater': '/assets/1.jpg';
  'name': 'xxx';
  'info': 'user info';
}

返回数据

{
  "success": true,
  "data": {}
}

添加候选人

[PUT] /admin/user

上传数据

body:
{
  'avater': '/assets/1.jpg',
  'name': 'xxx',
  'info': 'user info',
  'votes': 0
}

返回数据

{
  "success": true,
  "data": {}
}

删除候选人

[DELETE] /admin/user

上传数据

body:
{
  'id': 1
}

返回数据

{
  "success": true,
  "data": {}
}