20250912080428-categories.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. // seeders/20250225000000-demo-categories.js
  2. 'use strict';
  3. module.exports = {
  4. async up(queryInterface, Sequelize) {
  5. // 先清空现有数据
  6. await queryInterface.bulkDelete('categories', {});
  7. // 插入顶级品类(一级)
  8. await queryInterface.bulkInsert('categories', [
  9. {
  10. name: '蔬菜',
  11. level: 1,
  12. description: '各类蔬菜',
  13. order: 1,
  14. isActive: true,
  15. createdAt: new Date(),
  16. updatedAt: new Date()
  17. },
  18. {
  19. name: '水果',
  20. level: 1,
  21. description: '各类水果',
  22. order: 2,
  23. isActive: true,
  24. createdAt: new Date(),
  25. updatedAt: new Date()
  26. },
  27. {
  28. name: '谷物',
  29. level: 1,
  30. description: '各类谷物',
  31. order: 3,
  32. isActive: true,
  33. createdAt: new Date(),
  34. updatedAt: new Date()
  35. }
  36. ]);
  37. // 查询获取插入的顶级品类ID
  38. const topCategories = await queryInterface.sequelize.query(
  39. "SELECT id FROM categories WHERE level = 1 ORDER BY `order` ASC",
  40. { type: queryInterface.sequelize.QueryTypes.SELECT }
  41. );
  42. const vegetableId = topCategories[0].id;
  43. const fruitId = topCategories[1].id;
  44. const grainId = topCategories[2].id;
  45. // 插入二级品类
  46. await queryInterface.bulkInsert('categories', [
  47. // 蔬菜的子品类
  48. {
  49. name: '叶菜类',
  50. level: 2,
  51. parentId: vegetableId,
  52. description: '绿叶蔬菜',
  53. order: 1,
  54. isActive: true,
  55. createdAt: new Date(),
  56. updatedAt: new Date()
  57. },
  58. {
  59. name: '根茎类',
  60. level: 2,
  61. parentId: vegetableId,
  62. description: '根茎蔬菜',
  63. order: 2,
  64. isActive: true,
  65. createdAt: new Date(),
  66. updatedAt: new Date()
  67. },
  68. // 水果的子品类
  69. {
  70. name: '浆果类',
  71. level: 2,
  72. parentId: fruitId,
  73. description: '浆果水果',
  74. order: 1,
  75. isActive: true,
  76. createdAt: new Date(),
  77. updatedAt: new Date()
  78. },
  79. {
  80. name: '柑橘类',
  81. level: 2,
  82. parentId: fruitId,
  83. description: '柑橘水果',
  84. order: 2,
  85. isActive: true,
  86. createdAt: new Date(),
  87. updatedAt: new Date()
  88. },
  89. // 谷物的子品类
  90. {
  91. name: '稻谷类',
  92. level: 2,
  93. parentId: grainId,
  94. description: '稻谷类谷物',
  95. order: 1,
  96. isActive: true,
  97. createdAt: new Date(),
  98. updatedAt: new Date()
  99. },
  100. {
  101. name: '麦类',
  102. level: 2,
  103. parentId: grainId,
  104. description: '麦类谷物',
  105. order: 2,
  106. isActive: true,
  107. createdAt: new Date(),
  108. updatedAt: new Date()
  109. }
  110. ]);
  111. // 不需要插入三级品类,只保留一级和二级品类
  112. console.log('作物品类数据插入完成!');
  113. },
  114. async down(queryInterface, Sequelize) {
  115. // 先删除子级数据,再删除父级数据
  116. await queryInterface.bulkDelete('categories', {
  117. level: 3
  118. });
  119. await queryInterface.bulkDelete('categories', {
  120. level: 2
  121. });
  122. await queryInterface.bulkDelete('categories', {
  123. level: 1
  124. });
  125. console.log('作物品类数据已回滚!');
  126. }
  127. };