num, 7, pass_race_mapping.auth_address.get('town')) position += 1 else: continue except StopIteration: break print("information calc end ------------------") workbook.close() if __name__ == '__main__': # 安徽得code 340000 city_list = AdministrativeDivision.sync_find({ "parent_code": "341500" }).to_list(None) city_name_list = [city.title for city in city_list] print(city_name_list) dis_list = [] for city in city_list: district_list = AdministrativeDivision.sync_distinct( "title", {"parent_code": city.code}) for title in district_list: if title not in dis_list: dis_list.append(title) print(dis_list, '9999') prov_match = { 'race_cid': "CA755167DEA9AA89650D11C10FAA5413", "auth_address.province": { '$ne': None
async def deal_race(race, province, city): """ :param race: :param province: :param city :return: """ race_dict = { 'race_cid': race.cid, 'status': 1, 'title_img_url': '', 'area': '', 'is_local': True } if race.start_datetime > datetime.now(): # 未开始 race_dict['status'] = 0 if race.end_datetime < datetime.now(): # 已结束 race_dict['status'] = 2 if (race.city_code and race.city_code != city.code) or ( race.province_code != province.code): race_dict['is_local'] = False if race.image_list: upload_file = race.image_list[0] title_img_url = '%s://%s%s%s%s' % (SERVER_PROTOCOL, SERVER_HOST, STATIC_URL_PREFIX, 'files/', upload_file.title) race_dict['title_img_url'] = title_img_url if race.province_list: race_dict['area'] = race.province_list[0].title if race.city_list: race_dict['area'] += '-' + race.city_list[0].title # 去除脏数据 if not race.city_code: # 省级活动 prov = AdministrativeDivision.sync_find_one( {'code': race.province_code}) city_list = AdministrativeDivision.sync_find({ 'parent_code': prov.code }).to_list(None) city_title_list = [city.title for city in city_list] city_code_list = [city.code for city in city_list] district_title_list = AdministrativeDivision.sync_distinct( "title", {'parent_code': { '$in': city_code_list }}) else: city = AdministrativeDivision.sync_find_one( {'code': race.city_code}) city_title_list = [city.title] district_title_list = AdministrativeDivision.sync_distinct( "title", {'parent_code': city.code}) start_daily_code = format(race.start_datetime, '%Y%m%d') if race.cid != "DF1EDC30F120AEE93351A005DC97B5C1": cache_key = '{race_cid}-PEOPLE_COUNT'.format(race_cid=race.cid) data = RedisCache.get(cache_key) if data: race_dict['people_count'] = int(data) else: cursor = RaceMemberEnterInfoStatistic.aggregate([ MatchStage({ 'race_cid': race.cid, 'daily_code': { '$gte': start_daily_code }, 'city': { '$in': city_title_list }, 'district': { '$in': district_title_list } }), GroupStage('race_cid', sum={'$sum': '$increase_enter_count'}) ]) count = 0 while await cursor.fetch_next: try: info = cursor.next_object() count = info.sum except StopIteration: break race_dict['people_count'] = count RedisCache.set(cache_key, count, 60 * 60) else: # 扬州显示次数 cache_key = '{race_cid}-PEOPLE_COUNT'.format(race_cid=race.cid) data = RedisCache.get(cache_key) if data: race_dict['people_count'] = int(data) else: cursor = RaceMemberEnterInfoStatistic.aggregate([ MatchStage({ 'race_cid': race.cid, 'daily_code': { '$gte': start_daily_code }, 'city': { '$in': city_title_list }, 'district': { '$in': district_title_list } }), GroupStage('race_cid', sum={'$sum': '$enter_times'}) ]) count = 0 while await cursor.fetch_next: try: info = cursor.next_object() count = info.sum except StopIteration: break race_dict['people_count'] = count RedisCache.set(cache_key, count, 60 * 60) race_dict['show_play_quantity'] = race.play_quantity_enabled race_dict['title'] = race.title return race_dict