seed.ts 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. import { AppDataSource } from '../src/server/data-source.js';
  2. import { ActivityEntity, ActivityType } from '../src/server/modules/activities/activity.entity.js';
  3. import { RouteEntity } from '../src/server/modules/routes/route.entity.js';
  4. import { VehicleType } from '../src/server/modules/routes/route.schema.js';
  5. async function seed() {
  6. console.log('开始创建种子数据...');
  7. try {
  8. // 初始化数据库连接
  9. await AppDataSource.initialize();
  10. console.log('数据库连接已建立');
  11. // 获取Repository
  12. const activityRepository = AppDataSource.getRepository(ActivityEntity);
  13. const routeRepository = AppDataSource.getRepository(RouteEntity);
  14. // 清空现有数据
  15. await routeRepository.createQueryBuilder().delete().execute();
  16. await activityRepository.createQueryBuilder().delete().execute();
  17. console.log('已清空现有数据');
  18. // 创建示例活动数据
  19. const activities = [
  20. {
  21. name: '国庆节去程活动',
  22. description: '国庆节期间的去程出行活动',
  23. type: ActivityType.DEPARTURE,
  24. startDate: new Date('2025-10-01T00:00:00Z'),
  25. endDate: new Date('2025-10-07T23:59:59Z'),
  26. },
  27. {
  28. name: '国庆节返程活动',
  29. description: '国庆节期间的返程出行活动',
  30. type: ActivityType.RETURN,
  31. startDate: new Date('2025-10-05T00:00:00Z'),
  32. endDate: new Date('2025-10-10T23:59:59Z'),
  33. },
  34. {
  35. name: '元旦去程活动',
  36. description: '元旦期间的去程出行活动',
  37. type: ActivityType.DEPARTURE,
  38. startDate: new Date('2026-01-01T00:00:00Z'),
  39. endDate: new Date('2026-01-03T23:59:59Z'),
  40. },
  41. {
  42. name: '元旦返程活动',
  43. description: '元旦期间的返程出行活动',
  44. type: ActivityType.RETURN,
  45. startDate: new Date('2026-01-02T00:00:00Z'),
  46. endDate: new Date('2026-01-04T23:59:59Z'),
  47. },
  48. {
  49. name: '春节去程活动',
  50. description: '春节期间的去程出行活动',
  51. type: ActivityType.DEPARTURE,
  52. startDate: new Date('2026-02-10T00:00:00Z'),
  53. endDate: new Date('2026-02-16T23:59:59Z'),
  54. },
  55. {
  56. name: '春节返程活动',
  57. description: '春节期间的返程出行活动',
  58. type: ActivityType.RETURN,
  59. startDate: new Date('2026-02-14T00:00:00Z'),
  60. endDate: new Date('2026-02-20T23:59:59Z'),
  61. },
  62. ];
  63. // 保存活动数据
  64. const savedActivities = await activityRepository.save(activities);
  65. console.log(`已创建 ${savedActivities.length} 个活动`);
  66. // 创建示例路线数据
  67. const routes = [
  68. // 国庆节去程路线
  69. {
  70. name: '北京-上海高铁',
  71. description: '北京到上海的高铁专线',
  72. startPoint: '北京',
  73. endPoint: '上海',
  74. pickupPoint: '北京南站',
  75. dropoffPoint: '上海虹桥站',
  76. departureTime: new Date('2025-10-01T08:00:00Z'),
  77. vehicleType: VehicleType.BUS,
  78. price: 553.5,
  79. seatCount: 500,
  80. availableSeats: 450,
  81. activityId: savedActivities[0].id,
  82. },
  83. {
  84. name: '北京-广州飞机',
  85. description: '北京到广州的航班',
  86. startPoint: '北京',
  87. endPoint: '广州',
  88. pickupPoint: '北京首都机场',
  89. dropoffPoint: '广州白云机场',
  90. departureTime: new Date('2025-10-01T10:30:00Z'),
  91. vehicleType: VehicleType.MINIBUS,
  92. price: 1200,
  93. seatCount: 200,
  94. availableSeats: 180,
  95. activityId: savedActivities[0].id,
  96. },
  97. {
  98. name: '北京-深圳动车',
  99. description: '北京到深圳的动车专线',
  100. startPoint: '北京',
  101. endPoint: '深圳',
  102. pickupPoint: '北京西站',
  103. dropoffPoint: '深圳北站',
  104. departureTime: new Date('2025-10-01T09:15:00Z'),
  105. vehicleType: VehicleType.CAR,
  106. price: 756,
  107. seatCount: 600,
  108. availableSeats: 550,
  109. activityId: savedActivities[0].id,
  110. },
  111. // 国庆节返程路线
  112. {
  113. name: '上海-北京高铁',
  114. description: '上海到北京的高铁专线',
  115. startPoint: '上海',
  116. endPoint: '北京',
  117. pickupPoint: '上海虹桥站',
  118. dropoffPoint: '北京南站',
  119. departureTime: new Date('2025-10-07T14:00:00Z'),
  120. vehicleType: VehicleType.BUS,
  121. price: 553.5,
  122. seatCount: 500,
  123. availableSeats: 400,
  124. activityId: savedActivities[1].id,
  125. },
  126. {
  127. name: '广州-北京飞机',
  128. description: '广州到北京的航班',
  129. startPoint: '广州',
  130. endPoint: '北京',
  131. pickupPoint: '广州白云机场',
  132. dropoffPoint: '北京首都机场',
  133. departureTime: new Date('2025-10-07T16:30:00Z'),
  134. vehicleType: VehicleType.MINIBUS,
  135. price: 1100,
  136. seatCount: 200,
  137. availableSeats: 150,
  138. activityId: savedActivities[1].id,
  139. },
  140. // 元旦去程路线
  141. {
  142. name: '北京-天津城际',
  143. description: '北京到天津的城际列车',
  144. startPoint: '北京',
  145. endPoint: '天津',
  146. pickupPoint: '北京南站',
  147. dropoffPoint: '天津站',
  148. departureTime: new Date('2026-01-01T09:00:00Z'),
  149. vehicleType: VehicleType.CAR,
  150. price: 54.5,
  151. seatCount: 600,
  152. availableSeats: 500,
  153. activityId: savedActivities[2].id,
  154. },
  155. // 元旦返程路线
  156. {
  157. name: '天津-北京城际',
  158. description: '天津到北京的城际列车',
  159. startPoint: '天津',
  160. endPoint: '北京',
  161. pickupPoint: '天津站',
  162. dropoffPoint: '北京南站',
  163. departureTime: new Date('2026-01-03T18:00:00Z'),
  164. vehicleType: VehicleType.CAR,
  165. price: 54.5,
  166. seatCount: 600,
  167. availableSeats: 450,
  168. activityId: savedActivities[3].id,
  169. },
  170. // 春节去程路线
  171. {
  172. name: '北京-哈尔滨高铁',
  173. description: '北京到哈尔滨的高铁专线',
  174. startPoint: '北京',
  175. endPoint: '哈尔滨',
  176. pickupPoint: '北京朝阳站',
  177. dropoffPoint: '哈尔滨西站',
  178. departureTime: new Date('2026-02-10T07:30:00Z'),
  179. vehicleType: VehicleType.BUS,
  180. price: 623.5,
  181. seatCount: 500,
  182. availableSeats: 480,
  183. activityId: savedActivities[4].id,
  184. },
  185. // 春节返程路线
  186. {
  187. name: '哈尔滨-北京高铁',
  188. description: '哈尔滨到北京的高铁专线',
  189. startPoint: '哈尔滨',
  190. endPoint: '北京',
  191. pickupPoint: '哈尔滨西站',
  192. dropoffPoint: '北京朝阳站',
  193. departureTime: new Date('2026-02-17T15:00:00Z'),
  194. vehicleType: VehicleType.BUS,
  195. price: 623.5,
  196. seatCount: 500,
  197. availableSeats: 420,
  198. activityId: savedActivities[5].id,
  199. },
  200. ];
  201. // 保存路线数据
  202. const savedRoutes = await routeRepository.save(routes);
  203. console.log(`已创建 ${savedRoutes.length} 条路线`);
  204. console.log('种子数据创建完成!');
  205. console.log(`总计: ${savedActivities.length} 个活动, ${savedRoutes.length} 条路线`);
  206. } catch (error) {
  207. console.error('创建种子数据时出错:', error);
  208. throw error;
  209. } finally {
  210. // 关闭数据库连接
  211. await AppDataSource.destroy();
  212. console.log('数据库连接已关闭');
  213. }
  214. }
  215. // 运行种子脚本
  216. seed().catch(console.error);