async def post(self): res_dict = {'code': 0} try: open_id = self.get_i_argument("open_id") race_cid = self.get_i_argument("race_cid") if not (open_id and race_cid): res_dict['code'] = 1001 return res_dict member = await find_member_by_open_id(open_id) if not member: res_dict['code'] = 1002 return res_dict if not member.auth_address: res_dict['code'] = 1003 return res_dict town = self.get_i_argument('town') if not town: res_dict['code'] = 1005 return res_dict district = self.get_i_argument('district') if not district: res_dict['code'] = 1006 return res_dict mapping = await RaceMapping.find_one({ 'member_cid': member.cid, 'race_cid': race_cid, 'record_flag': 1 }) if not mapping: mapping = RaceMapping(race_cid=race_cid, member_cid=member.cid) mapping.province_code = member.province_code mapping.city_code = member.city_code mapping.district_code = member.district_code mapping.age_group = member.age_group mapping.sex = member.sex mapping.category = member.category mapping.education = member.education if not mapping.auth_address: mapping.auth_address = member.auth_address mapping.auth_address['town'] = town mapping.auth_address['district'] = district await mapping.save() res_dict['code'] = 1000 return res_dict except Exception: logger.error(traceback.format_exc())
async def post(self): r_dict = {'code': 0} open_id = self.get_i_argument('open_id', None) race_cid = self.get_i_argument('race_cid', None) company_cid = self.get_i_argument('company_cid', None) if not race_cid: r_dict['code'] = 1001 return r_dict member = await find_member_by_open_id(open_id) if not member: r_dict['code'] = 1002 return r_dict company = await Company.find_one({ 'cid': company_cid, 'record_flag': 1 }) if not company: r_dict['code'] = 1003 return r_dict try: mapping = await RaceMapping.find_one({ 'member_cid': member.cid, 'race_cid': race_cid, 'record_flag': 1 }) if not mapping: mapping = RaceMapping(race_cid=race_cid, member_cid=member.cid) mapping.province_code = member.province_code mapping.city_code = member.city_code mapping.district_code = member.district_code mapping.age_group = member.age_group mapping.sex = member.sex mapping.category = member.category mapping.education = member.education mapping.company_cid = company_cid else: mapping.company_cid = company_cid if not mapping.auth_address: mapping.auth_address = member.auth_address await mapping.save() r_dict['code'] = 1000 except Exception: logger.error(traceback.format_exc()) return r_dict
async def post(self): r_dict = {'code': 0} open_id = self.get_i_argument('open_id', '') race_cid = self.get_i_argument('race_cid', '') if not open_id: r_dict['code'] = 1001 return r_dict try: member = await find_member_by_open_id(open_id) if not member or not member.auth_address: r_dict['code'] = 1002 return r_dict # 判断用户的授权地理位置信息和活动位置是否相符 r_dict = await check_enter_race(member, race_cid) if not r_dict['enter_race']: r_dict['code'] = 0 return r_dict mapping = await RaceMapping.find_one( { 'race_cid': race_cid, 'member_cid': member.cid, 'record_flag': 1 }, read_preference=ReadPreference.PRIMARY) if not mapping: mapping = RaceMapping(race_cid=race_cid, member_cid=member.cid) mapping.province_code = member.province_code mapping.city_code = member.city_code mapping.district_code = member.district_code mapping.age_group = member.age_group mapping.sex = member.sex mapping.category = member.category mapping.education = member.education if not mapping.auth_address: mapping.auth_address = member.auth_address await mapping.save() race_checkpoints = await RaceGameCheckPoint.aggregate(stage_list=[ MatchStage({ 'status': STATUS_GAME_CHECK_POINT_ACTIVE, 'race_cid': race_cid }), LookupStage(RedPacketRule, 'redpkt_rule_cid', 'cid', 'rule_list'), SortStage([('index', DESC)]) ]).to_list(None) if race_checkpoints: is_end = False checkpoint_history = await MemberCheckPointHistory.find_one( filtered={ 'member_cid': member.cid, 'check_point_cid': race_checkpoints[0].cid, 'status': STATUS_RESULT_CHECK_POINT_WIN, 'record_flag': 1 }) if checkpoint_history: is_end = True race_checkpoint_cids = [c.cid for c in race_checkpoints] if not mapping.race_check_point_cid or mapping.race_check_point_cid not in race_checkpoint_cids: mapping.race_check_point_cid = race_checkpoint_cids[-1] await member.save() cur_game_checkpoint_cid = race_checkpoint_cids[-1] elif is_end: cur_game_checkpoint_cid = race_checkpoint_cids[0] else: index = race_checkpoint_cids.index( mapping.race_check_point_cid) cur_game_checkpoint_cid = race_checkpoint_cids[index] game_checkpoint_list = [{ 'cid': checkpoint.cid, 'index': checkpoint.index, 'alias': checkpoint.alias, 'unlock_quantity': checkpoint.unlock_quantity, 'has_redpkt': await has_redpkt(race_cid, checkpoint, member.cid) } for checkpoint in race_checkpoints] r_dict = { 'race_cid': race_cid, 'code': 1000, 'is_end': is_end, 'avatar': member.avatar, 'nick_name': member.nick_name, 'cur_game_checkpoint_cid': cur_game_checkpoint_cid, 'game_checkpoint_list': game_checkpoint_list } else: r_dict['code'] = 1000 r_dict['game_checkpoint_list'] = [] except Exception: logger.error(traceback.format_exc()) return r_dict