Exemplo n.º 1
0
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
Exemplo n.º 2
0
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, "数据错误"))
Exemplo n.º 3
0
    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
Exemplo n.º 4
0
def before_request():
    try:
        g.data = request.get_json(silent=True)
        token = request.headers.get('token', '')
        g.user, msg = verify_jwt(token)
    except:
        return jsonify(falseReturn(None, '数据错误'))
Exemplo n.º 5
0
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'))
Exemplo n.º 6
0
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
Exemplo n.º 7
0
def get_doors():
    """
    获取用户所有门的当前数据
    """
    try:
        return jsonify(trueReturn(mock_door))
    except:
        traceback.print_exc()
        return jsonify(falseReturn(None, 'data error'))
Exemplo n.º 8
0
def get_air_conditioning_temperatures():
    """
    获取用户所有空调温度的当前数据
    """
    try:
        return jsonify(trueReturn(mock_air_conditioning))
    except:
        traceback.print_exc()
        return jsonify(falseReturn(None, 'data error'))
Exemplo n.º 9
0
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'))
Exemplo n.º 10
0
def get_humidities():
    """
    获取用户所有湿度传感器的当前数据
    """
    try:
        return jsonify(trueReturn(mock_humidity))
    except:
        traceback.print_exc()
        return jsonify(falseReturn(None, 'data error'))
Exemplo n.º 11
0
def get_humidity(_id):
    """
    获取用户指定湿度传感器的当前数据
    """
    try:
        return jsonify(trueReturn(mock_humidity[int(_id)]))
    except:
        traceback.print_exc()
        return jsonify(falseReturn(None, 'data error'))
Exemplo n.º 12
0
def get_door(_id):
    """
    获取用户指定门的当前数据
    """
    try:
        return jsonify(trueReturn(mock_door[int(_id)]))
    except:
        traceback.print_exc()
        return jsonify(falseReturn(None, 'data error'))
Exemplo n.º 13
0
def get_temperature(_id):
    """
    获取用户指定温度传感器的当前数据
    """
    try:
        return jsonify(trueReturn(mock_temperature[int(_id)]))
    except:
        traceback.print_exc()
        return jsonify(falseReturn(None, 'data error'))
Exemplo n.º 14
0
def get_exceptions():
    """
    获取所有异常信息
    """
    try:
        return jsonify(trueReturn(mock_exception))
    except:
        traceback.print_exc()
        return jsonify(falseReturn(None, 'data error'))
Exemplo n.º 15
0
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
Exemplo n.º 16
0
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, "")
Exemplo n.º 17
0
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()
Exemplo n.º 18
0
def before_request():
    try:
        if request.get_data():
            g.data = request.get_json(silent=True)
        Authorization = request.headers.get('Authorization', None)
        if Authorization:
            typ, token = Authorization.split()
            if typ == 'token':
                g.token = token
                g.user, msg = verify_jwt(token)
        else:
            pass
    except:
        traceback.print_exc()
        return falseReturn(None, '数据错误')
Exemplo n.º 19
0
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'))
Exemplo n.º 20
0
def goodluck_creat(rqname,item):
    """
    抽奖算法
    """
    try:
        myredis = MyRedis()
        rq = RedisQueue(rqname)
        lucklist =[]
        luckdict = {}
        for ward in item.awards:
            luckdict[ward.id] = ward.total
            for i in range(ward.total):
                lucklist.append(ward.id)
        random.shuffle(lucklist)
        for luck in lucklist:
            rq.put(luck)
        myredis.hmset(str(item.id),luckdict)
        myredis.set('lotterykey'+str(item.id),item.lotterykey)
    except Exception as e:
        rsp = common.falseReturn(msg="抽奖创建失败")
        return rsp
Exemplo n.º 21
0
 def decorator():
     if not g.user:
         return jsonify(falseReturn(None, '此操作需要登陆'))
     return func()
Exemplo n.º 22
0
def before_request():
    try:
        g.data = request.get_json(silent=True)
        g.user = None
    except:
        return jsonify(falseReturn(None, '数据错误'))
Exemplo n.º 23
0
def edit(items_id:int, newkey: float, db:Session = Depends(get_db)): 
    myredis.set('lotterykey'+str(items_id))
    Items.changekey(db,items_id,newkey)
    rsp = common.falseReturn(msg="更新KEY成功")
    return rsp