def _calc_union_season_battle_individual(self, data, req, timer): if req.start_index < 1 or req.start_index > req.end_index: raise Exception("Ranking req error") req.end_index = 50 #TODO 客户端赋值错误,临时方案,待客户端修复 proxy = DataProxy() proxy.search_ranking("union", "season_score", data.id) proxy.search_by_rank("union", "season_score", req.start_index - 1, min(20, req.end_index - 1)) defer = proxy.execute() defer.addCallback(self._calc_union_season_battle_individual_post, data, req, timer) defer.addCallback(self._query_succeed, req, timer) return defer
def _query_worldboss_ranking(self, user_id, req, timer): if req.start_index < 1 or req.start_index > req.end_index: raise Exception("Ranking req error") proxy = DataProxy() proxy.search("worldboss", user_id) #先查玩家自己的worldboss proxy.search_ranking("worldboss", "merit", user_id) #先查玩家自己的排名 proxy.search_by_rank("worldboss", "merit", req.start_index - 1, req.end_index - 1) defer = proxy.execute() defer.addCallback(self._calc_query_worldboss_ranking, user_id, req, timer) defer.addErrback(self._query_worldboss_ranking_failed, req, timer) return defer
def _query_activity_hero_ranking(self, user_id, req, timer): if req.start_index < 1 or req.start_index > req.end_index: raise Exception("Ranking req error") proxy = DataProxy() proxy.search("draw", user_id) #先查玩家自己的draw proxy.search_ranking("draw", "activity_scores", user_id) #先查玩家自己的排名 proxy.search_by_rank("draw", "activity_scores", req.start_index - 1, req.end_index - 1) defer = proxy.execute() defer.addCallback(self._calc_query_activity_hero_ranking, user_id, req, timer) defer.addErrback(self._query_activity_hero_ranking_failed, req, timer) return defer
def _query_anneal_hard_mode_ranking(self, user_id, req, timer): if req.start_index < 1 or req.start_index > req.end_index: raise Exception("Ranking req error") proxy = DataProxy() proxy.search("anneal", user_id) #先查玩家自己的anneal proxy.search_ranking("anneal", "hard_floor", user_id) #先查玩家自己的排名 proxy.search_by_rank("anneal", "hard_floor", req.start_index - 1, req.end_index - 1) defer = proxy.execute() defer.addCallback(self._calc_query_anneal_hard_mode_ranking, user_id, req, timer) defer.addErrback(self._query_anneal_hard_mode_ranking_failed, req, timer) return defer
def _query_kill_enemy_ranking(self, user_id, req, timer): if req.start_index < 1 or req.start_index > req.end_index: raise Exception("Ranking req error") proxy = DataProxy() proxy.search("trainer", user_id) #先查玩家自己的battle proxy.search_ranking("trainer", "kills", user_id) #先查玩家自己的排名 proxy.search_by_rank("trainer", "kills", req.start_index - 1, req.end_index - 1) defer = proxy.execute() defer.addCallback(self._calc_query_kill_enemy_ranking, user_id, req, timer) defer.addErrback(self._query_kill_enemy_ranking_failed, user_id, req, timer) return defer
def get_ranking(self, union_id, user_id): """查询联盟赛季排名 """ self.union_id = union_id self.user_id = user_id proxy = DataProxy() proxy.search_ranking("unionseason", "score", union_id) proxy.search_ranking("union", "season_score", user_id) proxy.execute(asyn=False) self.union_ranking = proxy.get_ranking("unionseason", "score", union_id) self.individual_ranking = proxy.get_ranking("union", "season_score", user_id) print self.union_ranking print self.individual_ranking return (self.union_ranking, self.individual_ranking)
def _calc_union_season_battle(self, data, req, timer): if req.start_index < 1 or req.start_index > req.end_index: raise Exception("Ranking req error") union = data.union.get(True) proxy = DataProxy() if union.is_belong_to_union(): proxy.search_ranking("unionseason", "score", union.union_id) proxy.search("unionseason", union.union_id) proxy.search_by_rank("unionseason", "score", req.start_index - 1, req.end_index - 1) defer = proxy.execute() defer.addCallback(self._calc_union_season_battle_post, data, req, timer) defer.addCallback(self._query_succeed, req, timer) return defer
def _select_arena_rank(self, proxy, data, min_score, max_score): #获得本房间第一名的user_id arena_list = proxy.get_rank_score_result("arena", "score", min_score, max_score, 0, 1) assert len(arena_list) == 1 first_user_id = arena_list[0].user_id #房间人数 self.users_count = proxy.get_rank_score_count("arena", "score", min_score, max_score) cache_proxy = DataProxy() #查询本房间第一名在总榜中的排名 cache_proxy.search_ranking("arena", "score", first_user_id) #查询自己在总榜中的排名 cache_proxy.search_ranking("arena", "score", data.id) defer = cache_proxy.execute() defer.addCallback(self._calc_arena_rank, data, first_user_id) return defer
def _query_melee_ranking(self, user_id, req, timer): cache_proxy = DataProxy() cache_proxy.search("melee", user_id) #先查玩家自己的melee cache_proxy.search_ranking("melee", "score", user_id) #先查玩家自己的排名 #拿到房间的积分范围 scores_range = [] range = MeleeInfo.get_index_score_range(MeleeInfo.MELEE_INDEX) scores_range.append(range) for range in scores_range: cache_proxy.search_by_rank_score("melee", "score", range[0], range[1], 0, MELEE_COUNT) defer = cache_proxy.execute() defer.addCallback(self._calc_query_melee_ranking, user_id, scores_range, req, timer) return defer
def _patch_ranking_info(self, message, data, now): """补充双方联盟的排名信息,个人排名 """ proxy = DataProxy() #联盟赛季胜场积分排名 proxy.search_ranking("unionseason", "score", message.union_id) if message.rival_union_id != 0: proxy.search_ranking("unionseason", "score", message.rival_union_id) #联盟赛季个人战功排名 proxy.search_ranking("union", "season_score", data.id) defer = proxy.execute() defer.addCallback(self._patch_post, message, data, now) return defer
def _get_worldboss_ranking(user_id, rankings): proxy = DataProxy() proxy.search_ranking("worldboss", "merit", user_id) #查玩家自己的排名 defer = proxy.execute() defer.addCallback(_calc_get_worldboss_ranking, user_id, rankings) return defer