Ejemplo n.º 1
0
    def recommend(cls, para):
        uid = para['uid']

        uid_list = cls.getNearby(uid, cls.REC_NUM)

        ret = []
        for u in uid_list:
            if Social.isFriend(uid, u):
                continue

            user = User(u)
            data = {'uid':u, 'name':user.getName(), 'icon':user.getIcon(), 'level':user.level}

            if user.country is not None:
                data['country'] = user.country

            if user.region is not None:
                data['region'] = user.region

            ret.append(data)

        return {'users': ret}
Ejemplo n.º 2
0
    def getFriends(cls, para):
        uid = para['uid']
        frds = []

        l = Redis().smembers(cls.gen_frd_key(uid))
        #l.add(uid)

        from UserGift import UserGift

        for u in l:
            user = User(int(u))
            frds.append({'uid': int(u), 'level': user.level, 'name': user.getName(), 'icon': user.getIcon(),
                        'coin': user.coin, 'login_time': user.login_time,
                        'is_sent': UserGift.isSent(uid, u),})

        #sort by level
        return {'friends': sorted(frds, key = lambda x: x['level'])}
Ejemplo n.º 3
0
    def getRankInfo(self, uid):
        all_ret = {}
        range_id = self.getRangeId(uid)
        k = self.getRankKey(range_id)

        cli = DB.Redis()

        player_num = cli.zcard(k)
        all_ret['player_num'] = player_num

        rank = cli.zrevrank(k, uid)
        start = 0

        ret = []
        if rank is None:
            ret = cli.zrevrange(k, -2, -1, withscores=True)
            start = player_num - len(ret) + 1
        elif rank == 0:
            ret = cli.zrevrange(k, rank, rank + 2, withscores=True)
            start = 1
        elif rank == player_num - 1:
            ret = cli.zrevrange(k, -3, -1, withscores=True)
            start = player_num - len(ret) + 1
        else:
            ret = cli.zrevrange(k, rank-1, rank+1, withscores=True)
            start = rank

        result = []
        for idx, (u, score) in enumerate(ret):
            user = User(u)
            result.append({'uid': u, 'name': user.getName(), 'icon': user.getIcon(), 'pts': int(score) / 100 / self.WIN_PER_POINT, 'rank': start + idx})
        if rank is None:
            user = User(uid)
            result.append({'uid': uid, 'name': user.getName(), 'icon': user.getIcon(), 'pts': 0, 'rank': 0})

        all_ret['rank'] = result

        #top 3
        result = []
        ret = cli.zrevrange(k, 0, 2, withscores=True)
        for idx, (u, score) in enumerate(ret):
            user = User(u)
            result.append({'uid': u, 'name': user.getName(), 'icon': user.getIcon(), 'pts': int(score) / 100 / self.WIN_PER_POINT, 'rank': idx + 1})
        all_ret['top_rank'] = result

        info = self.getRangeInfo(uid)
        cfg = CfgTable(CfgTable.CFG_TOURNAMENT, self.key_)
        total_prize = int(cfg.prize) + info['prize']
        all_ret['prize'] = total_prize

        all_ret['reward_info'] = self.getRewardInfo(int(cfg.prize), range_id)

        total_time = int(cfg.time)
        left_time = self.start_time + total_time - int(time.time())
        if left_time < 0:
            left_time = 0
        all_ret['left_time'] = left_time

        all_ret['level_range'] = self.getLevelRange(range_id)

        return all_ret