| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260 |
- import { AppDataSource } from '../src/server/data-source.js';
- import { ActivityEntity, ActivityType } from '../src/server/modules/activities/activity.entity.js';
- import { RouteEntity } from '../src/server/modules/routes/route.entity.js';
- import { VehicleType } from '../src/server/modules/routes/route.schema.js';
- async function seed() {
- console.log('开始创建种子数据...');
- try {
- // 初始化数据库连接
- await AppDataSource.initialize();
- console.log('数据库连接已建立');
- // 获取Repository
- const activityRepository = AppDataSource.getRepository(ActivityEntity);
- const routeRepository = AppDataSource.getRepository(RouteEntity);
- // 清空现有数据
- await routeRepository.createQueryBuilder().delete().execute();
- await activityRepository.createQueryBuilder().delete().execute();
- console.log('已清空现有数据');
- // 创建示例活动数据 - 赛事和演唱会相关
- const activities = [
- {
- name: '中超联赛北京国安主场赛事',
- description: '北京国安主场对阵上海申花的中超联赛',
- type: ActivityType.DEPARTURE,
- startDate: new Date('2025-10-15T00:00:00Z'),
- endDate: new Date('2025-10-15T23:59:59Z'),
- },
- {
- name: '中超联赛北京国安主场赛事返程',
- description: '北京国安主场赛事结束后的返程服务',
- type: ActivityType.RETURN,
- startDate: new Date('2025-10-15T21:00:00Z'),
- endDate: new Date('2025-10-16T02:00:00Z'),
- },
- {
- name: '周杰伦北京演唱会',
- description: '周杰伦北京演唱会专场',
- type: ActivityType.DEPARTURE,
- startDate: new Date('2025-11-01T00:00:00Z'),
- endDate: new Date('2025-11-01T23:59:59Z'),
- },
- {
- name: '周杰伦北京演唱会返程',
- description: '周杰伦演唱会结束后的返程服务',
- type: ActivityType.RETURN,
- startDate: new Date('2025-11-01T22:30:00Z'),
- endDate: new Date('2025-11-02T01:00:00Z'),
- },
- {
- name: 'CBA北京首钢主场赛事',
- description: '北京首钢主场对阵广东宏远的CBA联赛',
- type: ActivityType.DEPARTURE,
- startDate: new Date('2025-10-20T00:00:00Z'),
- endDate: new Date('2025-10-20T23:59:59Z'),
- },
- {
- name: 'CBA北京首钢主场赛事返程',
- description: '北京首钢主场赛事结束后的返程服务',
- type: ActivityType.RETURN,
- startDate: new Date('2025-10-20T21:30:00Z'),
- endDate: new Date('2025-10-21T00:30:00Z'),
- },
- ];
- // 保存活动数据
- const savedActivities = await activityRepository.save(activities);
- console.log(`已创建 ${savedActivities.length} 个活动`);
- // 创建示例路线数据 - 赛事和演唱会相关
- const routes = [
- // 中超联赛去程路线
- {
- name: '中关村-工人体育场专线',
- description: '中关村到工人体育场的中超联赛专线',
- startPoint: '中关村',
- endPoint: '工人体育场',
- pickupPoint: '中关村地铁站A口',
- dropoffPoint: '工人体育场北门',
- departureTime: new Date('2025-10-15T17:30:00Z'),
- vehicleType: VehicleType.BUS,
- price: 25,
- seatCount: 50,
- availableSeats: 45,
- activityId: savedActivities[0].id,
- },
- {
- name: '国贸-工人体育场专线',
- description: '国贸到工人体育场的中超联赛专线',
- startPoint: '国贸',
- endPoint: '工人体育场',
- pickupPoint: '国贸地铁站C口',
- dropoffPoint: '工人体育场东门',
- departureTime: new Date('2025-10-15T17:45:00Z'),
- vehicleType: VehicleType.MINIBUS,
- price: 20,
- seatCount: 30,
- availableSeats: 28,
- activityId: savedActivities[0].id,
- },
- {
- name: '望京-工人体育场专线',
- description: '望京到工人体育场的中超联赛专线',
- startPoint: '望京',
- endPoint: '工人体育场',
- pickupPoint: '望京地铁站S口',
- dropoffPoint: '工人体育场南门',
- departureTime: new Date('2025-10-15T18:00:00Z'),
- vehicleType: VehicleType.CAR,
- price: 35,
- seatCount: 15,
- availableSeats: 12,
- activityId: savedActivities[0].id,
- },
- // 中超联赛返程路线
- {
- name: '工人体育场-中关村返程专线',
- description: '工人体育场到中关村的中超联赛返程专线',
- startPoint: '工人体育场',
- endPoint: '中关村',
- pickupPoint: '工人体育场北门',
- dropoffPoint: '中关村地铁站A口',
- departureTime: new Date('2025-10-15T22:00:00Z'),
- vehicleType: VehicleType.BUS,
- price: 25,
- seatCount: 50,
- availableSeats: 40,
- activityId: savedActivities[1].id,
- },
- {
- name: '工人体育场-国贸返程专线',
- description: '工人体育场到国贸的中超联赛返程专线',
- startPoint: '工人体育场',
- endPoint: '国贸',
- pickupPoint: '工人体育场东门',
- dropoffPoint: '国贸地铁站C口',
- departureTime: new Date('2025-10-15T22:15:00Z'),
- vehicleType: VehicleType.MINIBUS,
- price: 20,
- seatCount: 30,
- availableSeats: 25,
- activityId: savedActivities[1].id,
- },
- // 周杰伦演唱会去程路线
- {
- name: '五道口-鸟巢演唱会专线',
- description: '五道口到鸟巢的周杰伦演唱会专线',
- startPoint: '五道口',
- endPoint: '鸟巢',
- pickupPoint: '五道口地铁站A口',
- dropoffPoint: '鸟巢东门',
- departureTime: new Date('2025-11-01T18:00:00Z'),
- vehicleType: VehicleType.BUS,
- price: 30,
- seatCount: 50,
- availableSeats: 48,
- activityId: savedActivities[2].id,
- },
- {
- name: '西直门-鸟巢演唱会专线',
- description: '西直门到鸟巢的周杰伦演唱会专线',
- startPoint: '西直门',
- endPoint: '鸟巢',
- pickupPoint: '西直门地铁站C口',
- dropoffPoint: '鸟巢西门',
- departureTime: new Date('2025-11-01T18:15:00Z'),
- vehicleType: VehicleType.MINIBUS,
- price: 25,
- seatCount: 30,
- availableSeats: 28,
- activityId: savedActivities[2].id,
- },
- // 周杰伦演唱会返程路线
- {
- name: '鸟巢-五道口返程专线',
- description: '鸟巢到五道口的周杰伦演唱会返程专线',
- startPoint: '鸟巢',
- endPoint: '五道口',
- pickupPoint: '鸟巢东门',
- dropoffPoint: '五道口地铁站A口',
- departureTime: new Date('2025-11-01T23:30:00Z'),
- vehicleType: VehicleType.BUS,
- price: 30,
- seatCount: 50,
- availableSeats: 45,
- activityId: savedActivities[3].id,
- },
- {
- name: '鸟巢-西直门返程专线',
- description: '鸟巢到西直门的周杰伦演唱会返程专线',
- startPoint: '鸟巢',
- endPoint: '西直门',
- pickupPoint: '鸟巢西门',
- dropoffPoint: '西直门地铁站C口',
- departureTime: new Date('2025-11-01T23:45:00Z'),
- vehicleType: VehicleType.MINIBUS,
- price: 25,
- seatCount: 30,
- availableSeats: 26,
- activityId: savedActivities[3].id,
- },
- // CBA赛事去程路线
- {
- name: '朝阳门-五棵松体育馆专线',
- description: '朝阳门到五棵松体育馆的CBA赛事专线',
- startPoint: '朝阳门',
- endPoint: '五棵松体育馆',
- pickupPoint: '朝阳门地铁站B口',
- dropoffPoint: '五棵松体育馆北门',
- departureTime: new Date('2025-10-20T18:30:00Z'),
- vehicleType: VehicleType.BUS,
- price: 20,
- seatCount: 50,
- availableSeats: 46,
- activityId: savedActivities[4].id,
- },
- // CBA赛事返程路线
- {
- name: '五棵松体育馆-朝阳门返程专线',
- description: '五棵松体育馆到朝阳门的CBA赛事返程专线',
- startPoint: '五棵松体育馆',
- endPoint: '朝阳门',
- pickupPoint: '五棵松体育馆北门',
- dropoffPoint: '朝阳门地铁站B口',
- departureTime: new Date('2025-10-20T22:00:00Z'),
- vehicleType: VehicleType.BUS,
- price: 20,
- seatCount: 50,
- availableSeats: 42,
- activityId: savedActivities[5].id,
- },
- ];
- // 保存路线数据
- const savedRoutes = await routeRepository.save(routes);
- console.log(`已创建 ${savedRoutes.length} 条路线`);
- console.log('种子数据创建完成!');
- console.log(`总计: ${savedActivities.length} 个活动, ${savedRoutes.length} 条路线`);
- } catch (error) {
- console.error('创建种子数据时出错:', error);
- throw error;
- } finally {
- // 关闭数据库连接
- await AppDataSource.destroy();
- console.log('数据库连接已关闭');
- }
- }
- // 运行种子脚本
- seed().catch(console.error);
|