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
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
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()
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()
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))
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
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()