def match_start(self, match_id: int): """ 赛事开始前, 调用派队消息推送接口 :param self: celery task Context :param match_id: :return: """ match = Match.get(id=match_id) # type: Match team = Team.get(id=match.team_id) # type: Team members = MatchService.members(match, state=MatchMember.MatchMemberState.normal) infos = [] for member in members: infos.append({"userId": member.user_id, "mobile": member.mobile}) message = MatchStartMessage( user_infos=infos, match_id=match_id, match_name=match.title, sponsor_name=team.name, sponsor_pic_url=team.get_cover_url(size="medium")) pt = Parteam(app.settings["parteam_api_url"]) if not pt.push_message(message=message): self.retry(exc=ParteamRequestError("调用派队推送接口失败"))
def new_match_status(self, match_id: int): """ 主办方发布新战报时向赛事成员推送信息 :param self: :param match_id: :return: """ match = Match.get(id=match_id) # type: Match team = Team.get(id=match.team_id) # type: Team members = MatchService.members(match, state=MatchMember.MatchMemberState.normal) infos = [] for member in members: infos.append({"mobile": member.mobile, "userId": member.user_id}) message = NewMatchScheduleMessage( user_infos=infos, match_id=match_id, match_name=match.title, sponsor_name=team.name, sponsor_pic_url=team.get_cover_url(size="medium")) pt = Parteam(app.settings["parteam_api_url"]) if not pt.push_message(message): self.retry(ParteamRequestError("调用派队推送接口失败"))
def test_members_function(self): faker = Faker() match = mixer.blend(Match) mixer.blend(MatchMember, match_id=match.id, user_id=faker.random_int(), total_fee=0.01) mixer.blend(MatchMember, match_id=match.id, user_id=faker.random_int(), total_fee=0.01) members = MatchService.members(match) self.assertEqual(2, len(members)) for row in members: self.assertEqual(match.id, row.match_id)
def get(self, match_id): """ 获取赛事成员列表 :match_id: 赛事ID :returns: TODO """ match = Match.get_or_404(id=match_id) query = MatchService.members(match=match) filtered = self.filter_query(query) page = self.paginate_query(filtered) uids = self.get_parteam_uid(page) parteam_users = self.get_parteam_users(uids) if uids else {} data = self.render_page_info(page) data["members"] = self.serializing_members(page, parteam_users) self.write(data)