Browse Source

[m] 增加新的抽奖接口

master
luoning 8 years ago
parent
commit
054e8f7ed0
  1. 37
      doc/README.md
  2. 57
      src/lottery.py

37
doc/README.md

@ -1,18 +1,21 @@
## 接口 ## 接口
| 接口名 | 请求方法 | 参数 | 备注 | | 接口名 | 请求方法 | 参数 | 备注 |
| --------------- | -------- | ---------------------------------- | -------------------------------- | | --------------- | -------- | ---------------------------------------- | -------------------------------- |
| /index | GET | | | | /index | GET | | |
| /update | POST | [{"name":string, "awards_id":int}] | 提交中奖用户 | | /run | POST | {"award_id":int} | 开始抽奖 |
| /revoke | POST | {"uid":string} | 取消用户中奖信息,uid为工号,例如G0001 | | /draw_lottery | GET | | 获取抽奖结果,仅当抽奖状态才可调用此接口 |
| /lucky_users | GET/POST | {"awards_id":int} | 获取所有中奖用户列表,使用post方式获取指定奖项的中奖用户列表 | | ~~/update~~ | ~~POST~~ | ~~[{"uid":string, "awards_id":int}]~~ | ~~提交中奖用户~~ |
| /users | GET | | 获取所有用户列表 | | /revoke | POST | {"uid":string} | 取消用户中奖信息,uid为工号,例如G0001 |
| /luckless_users | GET | | 获取未中奖用户列表 | | /lucky_users | GET/POST | {"awards_id":int} | 获取所有中奖用户列表,使用post方式获取指定奖项的中奖用户列表 |
| /awards | GET | | 获取所有奖项列表 | | /users | GET | | 获取所有用户列表 |
| /reset | GET | | 重置所有数据 | | /luckless_users | GET | | 获取未中奖用户列表 |
| /add_awards | POST | [{"award_id":int, "award_name":string,"award_capacity":int}] | 添加新奖品 |
| /awards | GET | | 获取所有奖项列表 |
| /reset | GET | | 重置所有数据 |
--- ---
## 数据库表-leaders ## 数据库表-users
| 字段值 | 字段类型 | 字段描述 | | 字段值 | 字段类型 | 字段描述 |
| -------- | ------ | ------------------------------ | | -------- | ------ | ------------------------------ |
@ -24,10 +27,10 @@
## 数据库表-awards ## 数据库表-awards
| 字段值 | 字段类型 | 字段描述 | | 字段值 | 字段类型 | 字段描述 |
| -------------- | ------ | ------- | | -------------- | ------ | --------- |
| award_id | int | 奖项id | | award_id | int | 奖项id |
| award_name | string | 奖项名称 | | award_name | string | 奖项名称 |
| award_size | int | 可抽取奖项数量 | | award_size | int | 剩余可抽取奖品数量 |
| award_capacity | int | 奖项总数 | | award_capacity | int | 奖品总数 |

57
src/lottery.py

@ -0,0 +1,57 @@
#! /usr/bin/python3
# -*- coding:utf-8 -*-
import tinydb as d
import os
from . import CURRENT_DIR
db = d.TinyDB(os.path.join(CURRENT_DIR, "lottery.db"))
t_users = db.table('users')
t_awards = db.table('awards')
def server_resp(status, msg, data=None):
return {"status": status, "msg": msg, "data": data}
def reset(users_db, awards_db):
db.purge_tables()
for u in users_db:
t_users.insert(u)
for a in awards_db:
t_awards.insert(a)
return server_resp(200, "success")
def users():
t_users.clear_cache()
return server_resp(200, "success", t_users.all())
def luckless_users():
t_users.clear_cache()
user = d.Query()
return server_resp(200, "success", t_users.search(
(~user.award_id.exists()) | (user.award_id is None)))
def lucky_users():
t_users.clear_cache()
user = d.Query()
return server_resp(200, "success", t_users.search(
user.award_id is not None))
def awards():
t_awards.clear_cache()
return server_resp(200, "success", t_awards.all())
def update(uid, award_id):
t_users.clear_cache()
t_awards.clear_cache()
if not t_awards.get(d.Query().award_id == award_id):
return server_resp(400, "不存在此奖品")
if len(t_users.update({'award_id': award_id}, d.Query().uid == uid)) == 0:
return server_resp(401, "不存在此用户")
else:
return server_resp(200, "success")
Loading…
Cancel
Save