From f01cbe77ec2df4c489c280524fdec3cf79a3fa2d Mon Sep 17 00:00:00 2001 From: luoning Date: Wed, 7 Feb 2018 14:36:09 +0800 Subject: [PATCH] =?UTF-8?q?[x]=20=E4=BF=AE=E5=A4=8D=E4=B8=AD=E5=A5=96?= =?UTF-8?q?=E4=BA=BA=E6=95=B0=E5=A4=A7=E4=BA=8E=E5=A5=96=E5=93=81=E6=95=B0?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- run.py | 2 +- src/lottery.db | 1 - src/lottery.py | 17 ++++++++--------- src/random_selector.py | 4 +++- 4 files changed, 12 insertions(+), 12 deletions(-) delete mode 100644 src/lottery.db diff --git a/run.py b/run.py index ed20456..6838e6b 100644 --- a/run.py +++ b/run.py @@ -2,4 +2,4 @@ # -*- coding:utf-8 -*- from src import main -main.run('0.0.0.0', 8080, True) +main.run('127.0.0.1', 8080, True) diff --git a/src/lottery.db b/src/lottery.db deleted file mode 100644 index f637e05..0000000 --- a/src/lottery.db +++ /dev/null @@ -1 +0,0 @@ -{"users": {"173": {"uid": "G2313", "name": "\u738b\u7131", "award_id": null, "role": 1}, "174": {"uid": "G2939", "name": "\u90ed\u4e45\u6ce2", "award_id": "dead791c22b24de891fb6a828f50e96d", "role": 1}, "175": {"uid": "G3010", "name": "\u6731\u594e", "award_id": null, "role": 1}, "176": {"uid": "G5163", "name": "\u5218\u5fd7\u4eae", "award_id": null, "role": 1}, "177": {"uid": "G5293", "name": "\u6768\u5b8f\u79d1", "award_id": null, "role": 1}, "178": {"uid": "G5342", "name": "\u53f6\u7ecf\u5927", "award_id": null, "role": 1}, "179": {"uid": "G6526", "name": "\u9ec4\u56fd\u4f1f", "award_id": null, "role": 1}, "180": {"uid": "G8221", "name": "\u9a6c\u6770", "award_id": null, "role": 1}, "181": {"uid": "G8697", "name": "\u6768\u6ed5", "award_id": null, "role": 1}, "182": {"uid": "G1978", "name": "\u5218\u82d7", "award_id": null, "role": 1}, "183": {"uid": "G3915", "name": "\u8521\u9e3f", "award_id": null, "role": 1}, "184": {"uid": "G4607", "name": "\u5510\u661f\u5251", "award_id": null, "role": 1}, "185": {"uid": "G4957", "name": "\u9648\u4e1a\u751f", "award_id": null, "role": 1}, "186": {"uid": "G4997", "name": "\u9f9a\u6210", "award_id": null, "role": 1}, "187": {"uid": "G5908", "name": "\u9093\u6c81", "award_id": null, "role": 1}, "188": {"uid": "G5983", "name": "\u5510\u94b1\u80dc", "award_id": null, "role": 1}, "189": {"uid": "G6048", "name": "\u5c1a\u5b8f\u4f73", "award_id": null, "role": 1}, "190": {"uid": "G6324", "name": "\u5510\u5e05", "award_id": null, "role": 1}, "191": {"uid": "G6623", "name": "\u5f90\u96c4\u5f6c", "award_id": null, "role": 1}, "192": {"uid": "G6681", "name": "\u590f\u96c6\u7403", "award_id": null, "role": 1}, "193": {"uid": "G6717", "name": "\u90d1\u5bb6\u9526", "award_id": null, "role": 1}, "194": {"uid": "G7791", "name": "\u4f59\u5b97\u53cb", "award_id": null, "role": 1}, "195": {"uid": "G8186", "name": "\u5362\u5ba3\u5b87", "award_id": null, "role": 1}, "196": {"uid": "JZ2304", "name": "\u8c22\u9686\u699b ", "award_id": null, "role": 0}, "197": {"uid": "JZ2467", "name": "\u859b\u51a0\u950b ", "award_id": null, "role": 0}, "198": {"uid": "G3331", "name": "\u738b\u598d\u9e4f", "award_id": null, "role": 1}, "199": {"uid": "G3628", "name": "\u9ec4\u56fd\u53cb", "award_id": null, "role": 1}, "200": {"uid": "G4546", "name": "\u80e1\u67cf\u534e", "award_id": null, "role": 1}, "201": {"uid": "G7487", "name": "\u4e25\u5efa\u56fd", "award_id": "dead791c22b24de891fb6a828f50e96d", "role": 1}, "202": {"uid": "G7532", "name": "\u7a0b\u73ae\u826f", "award_id": null, "role": 1}, "203": {"uid": "G7858", "name": "\u8bb8\u7fa1", "award_id": null, "role": 1}, "204": {"uid": "G2261", "name": "\u848b\u9676\u51b6", "award_id": "dead791c22b24de891fb6a828f50e96d", "role": 1}, "205": {"uid": "G4556", "name": "\u718a\u52c7", "award_id": null, "role": 1}, "206": {"uid": "G5313", "name": "\u674e\u5efa\u4f1f", "award_id": "dead791c22b24de891fb6a828f50e96d", "role": 1}, "207": {"uid": "G6290", "name": "\u5f20\u5353\u575a", "award_id": "dead791c22b24de891fb6a828f50e96d", "role": 1}, "208": {"uid": "G6845", "name": "\u5218\u6021\u6d01", "award_id": null, "role": 1}, "209": {"uid": "G7388", "name": "\u738b\u6d0b", "award_id": "dead791c22b24de891fb6a828f50e96d", "role": 1}, "210": {"uid": "G7399", "name": "\u9648\u6f2b\u7eaf", "award_id": null, "role": 1}, "211": {"uid": "G7673", "name": "\u90d1\u9526\u7115", "award_id": null, "role": 1}, "212": {"uid": "JZ2337", "name": "\u6881\u610f\u83c1", "award_id": null, "role": 0}, "213": {"uid": "JZ2468", "name": "\u53f6\u5609\u7965", "award_id": null, "role": 0}, "214": {"uid": "SX3138", "name": "\u53e4\u624d\u826f", "award_id": null, "role": 1}, "215": {"uid": "G2156", "name": "\u674e\u80dc", "award_id": null, "role": 1}, "216": {"uid": "G6382", "name": "\u6797\u9526\u8425", "award_id": "dead791c22b24de891fb6a828f50e96d", "role": 1}, "217": {"uid": "G6409", "name": "\u674e\u5e73\u6d77", "award_id": null, "role": 1}, "218": {"uid": "G6718", "name": "\u6797\u690d\u5f3a", "award_id": null, "role": 1}, "219": {"uid": "G6740", "name": "\u90d1\u6e05\u6797", "award_id": null, "role": 1}, "220": {"uid": "G6786", "name": "\u738b\u4f5c\u4e3a", "award_id": null, "role": 1}, "221": {"uid": "G7374", "name": "\u9648\u5c11\u73b2", "award_id": null, "role": 1}, "222": {"uid": "SX2370", "name": "\u5de6\u6587\u797a", "award_id": null, "role": 1}, "223": {"uid": "SX2178", "name": "\u674e\u6613\u884c", "award_id": null, "role": 1}, "224": {"uid": "JZ2491", "name": "\u9648\u4e07\u7fa4", "award_id": null, "role": 0}, "225": {"uid": "G3592", "name": "\u9648\u5de7\u534e", "award_id": null, "role": 1}, "226": {"uid": "G1438", "name": "\u5ed6\u5fd7\u8f89", "award_id": null, "role": 1}, "227": {"uid": "G2301", "name": "\u5de6\u4f1f", "award_id": null, "role": 1}, "228": {"uid": "G3460", "name": "\u5434\u5fd7\u5f3a", "award_id": null, "role": 1}, "229": {"uid": "G4029", "name": "\u77f3\u52c7\u6167", "award_id": null, "role": 1}, "230": {"uid": "G4996", "name": "\u7f57\u5b81", "award_id": null, "role": 1}, "231": {"uid": "G5223", "name": "\u6797\u8fbe\u5347", "award_id": null, "role": 1}, "232": {"uid": "G5935", "name": "\u6881\u6b63\u5065", "award_id": null, "role": 1}, "233": {"uid": "G6765", "name": "\u674e\u6210\u4f1a", "award_id": "dead791c22b24de891fb6a828f50e96d", "role": 1}, "234": {"uid": "G0653", "name": "\u4f55\u731b", "award_id": null, "role": 1}, "235": {"uid": "G3144", "name": "\u674e\u6052", "award_id": null, "role": 1}, "236": {"uid": "G3219", "name": "\u5f20\u79cb\u51ef", "award_id": null, "role": 1}, "237": {"uid": "G3571", "name": "\u5f6d\u6b66\u575a", "award_id": null, "role": 1}, "238": {"uid": "G3850", "name": "\u5218\u5b88\u51ef", "award_id": "dead791c22b24de891fb6a828f50e96d", "role": 1}, "239": {"uid": "G4281", "name": "\u66fe\u5fb7\u91d1", "award_id": null, "role": 1}, "240": {"uid": "G4458", "name": "\u9648\u8d85\u7136", "award_id": null, "role": 1}, "241": {"uid": "G5197", "name": "\u5218\u806a", "award_id": null, "role": 1}, "242": {"uid": "G6649", "name": "\u674e\u8fbe\u8363", "award_id": null, "role": 1}, "243": {"uid": "G8120", "name": "\u65b9\u6210\u8273", "award_id": "dead791c22b24de891fb6a828f50e96d", "role": 1}, "244": {"uid": "G8326", "name": "\u9ec4\u6770", "award_id": null, "role": 1}, "245": {"uid": "JZ2490", "name": "\u5434\u9526\u7965", "award_id": null, "role": 0}, "246": {"uid": "JZ2489", "name": "\u4f55\u5609\u9896", "award_id": null, "role": 0}, "247": {"uid": "JZ2469", "name": "\u66fe\u4f73\u4fca", "award_id": null, "role": 0}, "248": {"uid": "G1974", "name": "\u9648\u4f1f\u6ce2", "award_id": null, "role": 1}, "249": {"uid": "G1986", "name": "\u66f9\u6ce2", "award_id": null, "role": 1}, "250": {"uid": "G2709", "name": "\u7f57\u5f69\u5a1f", "award_id": null, "role": 1}, "251": {"uid": "G5103", "name": "\u9ec4\u8499", "award_id": null, "role": 1}, "252": {"uid": "G5325", "name": "\u90b9\u6b66\u575a", "award_id": null, "role": 1}, "253": {"uid": "G8403", "name": "\u53f6\u534e", "award_id": null, "role": 1}, "254": {"uid": "G8404", "name": "\u718a\u96e8\u8212", "award_id": null, "role": 1}, "255": {"uid": "G8405", "name": "\u674e\u9526\u6587", "award_id": null, "role": 1}, "256": {"uid": "JZ2477", "name": "\u8d56\u6653\u6167", "award_id": null, "role": 0}, "257": {"uid": "JZ2478", "name": "\u84dd\u51b0\u4e3d", "award_id": null, "role": 0}, "258": {"uid": "G1897", "name": "\u6234\u94c1\u575a", "award_id": null, "role": 1}}, "awards": {"2": {"award_id": "dead791c22b24de891fb6a828f50e96d", "award_name": "1", "award_size": 5, "award_capacity": 5}}, "_default": {}} \ No newline at end of file diff --git a/src/lottery.py b/src/lottery.py index 5daf91e..13e76f4 100644 --- a/src/lottery.py +++ b/src/lottery.py @@ -61,8 +61,6 @@ def award(id): 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(500, "不存在此奖品") if len(t_users.update({'award_id': award_id}, d.Query().uid == uid)) == 0: @@ -122,21 +120,22 @@ def run(): def draw_lottery(award_id): - t_awards.clear_cache() - if not start_time: - return server_resp(402, "尚未开始抽奖") + return server_resp(503, "尚未开始抽奖") award = t_awards.get(d.where('award_id') == award_id) if not award: return server_resp(500, "不存在此奖项") - t_users.clear_cache() - user = d.Query() - luckies = random_selector.randomselect(current_ms() - start_time, t_users.search( - user['award_id'] == None), award['award_capacity']) + if award['award_size'] <= 0: + return server_resp(504, "该奖项已经抽完") + + luckies = random_selector.randomselect(current_ms() - start_time, + luckless_users()['data'], award['award_capacity']) for lucky in luckies: update(lucky['uid'], award_id) lucky.update({'award_id': award_id}) + t_awards.update({'award_size': award['award_capacity'] - len(luckies)}, + doc_ids=[award.doc_id]) return server_resp(200, "success", luckies) diff --git a/src/random_selector.py b/src/random_selector.py index f20e86b..9a06b6e 100644 --- a/src/random_selector.py +++ b/src/random_selector.py @@ -13,8 +13,10 @@ class RandomSelector(object): def randselect(self, items, num): _items = items.copy() self._selector.shuffle(_items) - return [_items.pop(self._selector.randrange(len(_items))) for _ in range(num)] + return [_items.pop(self._selector.randrange(len(_items))) for _ in range(min(num, len(_items)))] def randomselect(elapsed_ms, items, select_num): + if len(items) == 0: + return items return RandomSelector(elapsed_ms).randselect(items, select_num)