Beispiel #1
0
                                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
Beispiel #2
0
    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