seed.ts 7.3 KB

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