Ejemplo n.º 1
0
    def charge_top(self, session, rank_time, by_index=False):
        query = session.query(TRankChargeTop,
                              TUser).join(TUser,
                                          TRankChargeTop.uid == TUser.id)
        if rank_time == RANK_YESTERDAY:
            query = query.filter(
                TRankChargeTop.add_date == datehelper.get_yesterday())
        elif rank_time == RANK_TODAY:
            query = query.filter(TRankChargeTop.add_date == datehelper.
                                 get_datetime().strftime('%Y-%m-%d'))
        items = query.order_by(
            TRankChargeTop.charge_money.desc(),
            TRankChargeTop.created_time.asc()).limit(50).all()

        if by_index:
            return items

        top = []
        for item in items:
            charge_top, user = item

            top.append(
                self.pack_top(uid=user.id,
                              nick=user.nick,
                              avatar=user.avatar,
                              gold=user.gold,
                              vip=user.vip,
                              vip_exp=user.vip_exp,
                              charge=int(charge_top.charge_money * 100),
                              sex=user.sex))

        if RANK_FAKE_CHARGE_ENABLE:
            top = self.merage_fake(top, RANK_FAKE_CHARGE)

        return top
Ejemplo n.º 2
0
 def texas_top_rank(self, session, rank_time):
     query = session.query(TRankTexasTop,
                           TUser).join(TUser, TRankTexasTop.uid == TUser.id)
     if rank_time == RANK_YESTERDAY:
         query = query.filter(
             TRankTexasTop.add_date == datehelper.get_yesterday())
     elif rank_time == RANK_TODAY:
         query = query.filter(TRankTexasTop.add_date == datehelper.
                              get_datetime().strftime('%Y-%m-%d'))
     items = query.order_by(
         TRankTexasTop.total.desc(),
         TRankTexasTop.created_time.asc()).limit(20).all()
     # print str(query)
     top = []
     for item in items:
         texas_top, user = item
         top.append(
             self.pack_top(uid=user.id,
                           nick=user.nick,
                           avatar=user.avatar,
                           gold=user.gold,
                           vip=user.vip,
                           vip_exp=user.vip_exp,
                           texas_gold=texas_top.total,
                           sex=user.sex))
     return top
Ejemplo n.º 3
0
    def reward_charge_top(self):
        charge_users = self.load_rank_charge_top()

        for index, charge_user in enumerate(charge_users):
            reward_diamond = int(float(charge_user[0].charge_money) * float(CHARGE_REWARD[index]) * DIAMOND_RATE)
            if reward_diamond <= 0:
                continue
            MessageManager.send_mail(session, charge_user[1].id, 0,
                title = u'充值榜奖励',
                content = RANK_CHARGE_MAIL % (datehelper.get_yesterday().strftime('%Y-%m-%d'), index + 1, reward_diamond),
                type = 1,
                diamond = reward_diamond,
                gold = 0,
                items = '',)

        session.flush()
Ejemplo n.º 4
0
    def reward_texas(self):
        rank_texas_users = self.get_texas_users()
        if not rank_texas_users:
            return

        for index,texas_user in enumerate(rank_texas_users):
            reward_diamond = TEXAS_REWARD[index]

            MessageManager.send_mail(session, texas_user[1].id, 0,
                title = u'德州赚金榜',
                content = RANK_TEXAS_MAIL % (datehelper.get_yesterday().strftime('%Y-%m-%d'), index + 1, reward_diamond),
                type = 1,
                diamond = reward_diamond,
                gold = 0,
                items = '',)

        session.flush()
Ejemplo n.º 5
0
    def reward_war_top(self):
        # top_users = session.query(TRankWarTop, TUser).join(TUser, TRankWarTop.uid == TUser.id) \
        #             .filter(TRankWarTop.add_date == datehelper.get_yesterday()).order_by(desc(TRankWarTop.total)) \
        #             .limit(RANK_WAR_TOP).all()
        top_users = self.get_reward_users()

        reward_pool = self.redis.hget('war_game', 'reward_pool')
        if reward_pool <= 0:
            return
        reward_top_gold = int(reward_pool) * 0.5
	# print top_users[0][0]
        win_gold_total = sum([x[0].total for x in top_users])
        for index, user in enumerate(top_users):
            win_gold_rate = float(user[0].total) / float(win_gold_total)
            award_gold = int(reward_top_gold * win_gold_rate)
            MessageManager.send_mail(session, user[0].uid, 0,
                title = u'红黑赢利榜',
                content = RANK_WAR_MAIL % (datehelper.get_yesterday().strftime('%Y-%m-%d'), index + 1, award_gold),
                type = 1,
                diamond = 0,
                gold = award_gold,
                items = '',)
	    session.flush()
        self.redis.hset('war_game', 'reward_pool', int(reward_pool) - int(reward_top_gold))
Ejemplo n.º 6
0
 def get_reward_users(self):
     top_users = session.query(TRankWarTop, TUser).join(TUser, TRankWarTop.uid == TUser.id) \
                 .filter(TRankWarTop.add_date == datehelper.get_yesterday()).order_by(desc(TRankWarTop.total)) \
                 .limit(RANK_WAR_TOP).all()
     return top_users
Ejemplo n.º 7
0
 def load_rank_charge_top(self):
     return session.query(TRankChargeTop, TUser).join(TUser, TRankChargeTop.uid == TUser.id) \
         .filter(TRankChargeTop.add_date == datehelper.get_yesterday()) \
         .order_by(desc(TRankChargeTop.charge_money),asc(TRankChargeTop.created_time)) \
         .limit(RANK_CHARGE_REWARD).all()