def mybmf(userid: int, db: Session = Depends(get_db)): win_or_not = Luckmans.get_user_winornot(db, userid) if win_or_not: json_compatible_item_data = jsonable_encoder(win_or_not) rsp = common.trueReturn(data=json_compatible_item_data, msg="恭喜你中奖啦") else: rsp = common.trueReturn(msg="很遗憾你还没有中奖") return rsp
def luck(userid: int, username: str, itemsid: int, db: Session = Depends(get_db)): """ 开始抽奖 userid: 用户id username: 用户昵称 itemsid: 奖池id """ item_redis_key = "goodluck" + str(itemsid) rq = RedisQueue(item_redis_key) winner_redis_key = "WINNER_" + str(itemsid) if myredis.hexists(winner_redis_key, userid): rsp = common.trueReturn(msg='您已经抽过了,不能再抽了') return rsp lotterykey = myredis.get('lotterykey' + str(itemsid)) print(lotterykey) if lotterykey != 1: if not lotteryfunc(lotterykey): rsp = common.trueReturn(msg="很遗憾你没有中奖") myredis.hset(winner_redis_key, userid, 0) luckman = Luckmans(user_id=userid, username=username, winornot=0, item_id=itemsid) Luckmans.add(db, luckman) return rsp award = rq.get_nowait() if award is not None: #缓存到redis myredis.hset(winner_redis_key, userid, award) myredis.hincrby(item_redis_key, award, -1) count = myredis.hget(item_redis_key, award) #查询当前奖品剩余数量 luckman = Luckmans(user_id=userid, username=username, winornot=1, item_id=itemsid, award_id=award) Luckmans.add(db, luckman) Awards.update_one(db, luckman.award_id) awardname = Awards.get_by_id(db, luckman.award_id).awardname # #定时更新mysql # if write2sqltime >= datetime.datetime.now(): # write2sql(userid,username,award) # write2sqltime = datetime.datetime.now() + datetime.timedelta(minutes=5) data = {'award': awardname, 'awardid': luckman.award_id} rsp = common.trueReturn(data, '恭喜你中奖啦') else: rsp = common.falseReturn(msg="很遗憾,没有奖品了") return rsp
def login_authenticate(username: str, password: str, db: Session): """ 用户登陆成功后返回token,并将登陆时间写入数据库,登陆失败返回失败原因 """ result = {} user = Auth.authenticate_user(username, password, db) if not user: db.close() return common.falseReturn(result, '登录失败') # 登陆时间 login_time = int(time.time()) user.login_time = login_time DBUser.update_login_time(db, user.id, login_time) origin_data = {'user_id': user.id, 'login_time': login_time} access_token = Auth.encode_auth_token(origin_data, None).decode() bearer_token = 'Bearer ' + access_token result['user_id'] = user.id result['username'] = user.username result['access_token'] = access_token result['token_type'] = "bearer" print(result) rsp = common.trueReturn(result, '登录成功') rsp.set_cookie(key="Bearer", value=bearer_token) return rsp
def edit(luckmanid:int, db:Session = Depends(get_db)): affect = Luckmans.edit_status(db,luckmanid) if affect: rsp = common.trueReturn(msg="更新成功,已标记完成") else: rsp = common.falseReturn(msg="更新失败,请稍后重试") return rsp
def register(): try: user_id = g.data.get("user_id", "").strip() name = g.data.get("name", "").strip() bio = g.data.get("bio", "").strip() email = g.data.get("email", "").strip() phone = g.data.get("phone", "").strip() password = g.data.get("password", "").strip() avatar = g.data.get("avatar", "").strip() if not name: return jsonify(falseReturn(None, "用户名是必需的!")) if not user_id: return jsonify(falseReturn(None, "用户id是必需的!")) if not password: return jsonify(falseReturn(None, "密码是必需的!")) if len(bio) > 150: return jsonify(falseReturn(None, "自我介绍最长150字!")) if not verify_user_id(user_id): return jsonify(falseReturn(None, "用户id不合法!")) if User.objects(user_id=user_id): return jsonify(falseReturn(None, "用户id已存在")) if User.objects(name=name): return jsonify(falseReturn(None, "用户名已存在")) if len(password) < 6: return jsonify(falseReturn(None, '密码太短啦')) new_user = User(name=name, user_id=user_id, bio=bio, avatar=avatar, password=str2md5(password), last_modify=datetime.datetime.now(), phone=phone, email=email).save() return jsonify(trueReturn({'jwt': generate_jwt(new_user), 'user': render_user_base_info(new_user)}, "")) except: return jsonify(falseReturn(None, "数据错误"))
def notify(): """ 发送警告信息 """ client = AcsClient(current_app.config['SMS_ACCESS_KEY_ID'], current_app.config['SMS_ACCESS_SECRET']) request = CommonRequest() request.set_accept_format('json') request.set_domain('dysmsapi.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2017-05-25') request.set_action_name('SendSms') request.add_query_param('RegionId', "cn-hangzhou") request.add_query_param('PhoneNumbers', g.data.get("phone")) request.add_query_param('SignName', "OUOStore") request.add_query_param('TemplateCode', "SMS_187951460") request.add_query_param('TemplateParam', "{\"code\":%d}" % int(g.data.get("code"))) response = client.do_action_with_exception(request) print(str(response, encoding='utf-8')) try: return jsonify(trueReturn(None)) except: traceback.print_exc() return jsonify(falseReturn(None, 'data error'))
async def creat(datas: Item, db: Session = Depends(get_db)): """ 通过该接口可以创建一个抽奖规则 """ item_id = 0 olddata = Items.get_by_name(db,datas.luckname) if olddata: json_compatible_item_data = jsonable_encoder(olddata) rsp = common.falseReturn(data =json_compatible_item_data, msg='项目已存在') return rsp try: items = Items(name=datas.luckname,total=datas.total,lotterykey=datas.lotterykey) awardlist = [Awards(awardname=data.name,total=data.count,count=data.count) for data in datas.award] items.awards = awardlist Items.add(db,items) item_id = items.id except Exception as e: raise e if not item_id: rsp = common.falseReturn(msg='创建抽奖失败') return rsp rqname = "goodluck" + str(items.id) #抽奖算法 goodluck_creat(rqname,items) json_compatible_item_data = jsonable_encoder(items) rsp = common.trueReturn(data=json_compatible_item_data,msg="创建抽奖成功") return rsp
def get_door(_id): """ 获取用户指定门的当前数据 """ try: return jsonify(trueReturn(mock_door[int(_id)])) except: traceback.print_exc() return jsonify(falseReturn(None, 'data error'))
def get_doors(): """ 获取用户所有门的当前数据 """ try: return jsonify(trueReturn(mock_door)) except: traceback.print_exc() return jsonify(falseReturn(None, 'data error'))
def get_air_conditioning_temperature(_id): """ 获取用户指定空调的当前数据 """ try: return jsonify(trueReturn(mock_air_conditioning[int(_id)])) except: traceback.print_exc() return jsonify(falseReturn(None, 'data error'))
def get_humidity(_id): """ 获取用户指定湿度传感器的当前数据 """ try: return jsonify(trueReturn(mock_humidity[int(_id)])) except: traceback.print_exc() return jsonify(falseReturn(None, 'data error'))
def get_air_conditioning_temperatures(): """ 获取用户所有空调温度的当前数据 """ try: return jsonify(trueReturn(mock_air_conditioning)) except: traceback.print_exc() return jsonify(falseReturn(None, 'data error'))
def get_temperature(_id): """ 获取用户指定温度传感器的当前数据 """ try: return jsonify(trueReturn(mock_temperature[int(_id)])) except: traceback.print_exc() return jsonify(falseReturn(None, 'data error'))
def get_humidities(): """ 获取用户所有湿度传感器的当前数据 """ try: return jsonify(trueReturn(mock_humidity)) except: traceback.print_exc() return jsonify(falseReturn(None, 'data error'))
def get_exceptions(): """ 获取所有异常信息 """ try: return jsonify(trueReturn(mock_exception)) except: traceback.print_exc() return jsonify(falseReturn(None, 'data error'))
def verify(): try: return trueReturn({'userData': { 'id': str(g.user.id), 'name': g.user.name, 'token': g.token, 'user_id': g.user.user_id, 'permission': g.user.permission }}, "") except: traceback.print_exc() return falseReturn()
def get_weathers(location): """ 获取天气信息 """ result = requests.get(current_app.config['WEATHER_API'], params={ 'key': current_app.config['WEATHER_KEY'], 'location': location, 'language': 'zh-Hans', 'unit': 'c' }, timeout=1) print(result.text) try: return jsonify(trueReturn(result.text)) except: traceback.print_exc() return jsonify(falseReturn(None, 'data error'))
def signin(): try: name = g.data.get("name") password = g.data.get("password") user = User.objects(user_id=name).first() if not user: return falseReturn(None, "用户不存在") if not user.password == str2md5(password): return falseReturn(None, "用户名或密码不存在") return trueReturn({ 'userData': { 'id': str(user.id), 'name': user.name, 'token': generate_jwt(user), 'user_id': user.user_id, 'permission': user.permission } }) except: return falseReturn(None, "")
def luckman(items_id: int, db: Session = Depends(get_db)): result = Awards.get_all_items_award(db,items_id) json_compatible_item_data = jsonable_encoder(result) rsp = common.trueReturn(data=json_compatible_item_data) return rsp
def Remaining(items_id: int, db: Session = Depends(get_db)): result = Awards.get_remaining(db,items_id) json_compatible_item_data = jsonable_encoder(result) rsp = common.trueReturn(data=json_compatible_item_data) return rsp