init.service.ts 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. import { Provide } from '@midwayjs/decorator';
  2. import { InjectEntityModel } from '@midwayjs/typegoose';
  3. import { ReturnModelType } from '@typegoose/typegoose';
  4. import { Admin } from '../entity/system/admin.entity';
  5. import { Role } from '../entity/system/role.entity';
  6. import { Menus } from '../entity/system/menus.entity';
  7. import { DictData } from '../entity/system/dictData.entity';
  8. import { DictType } from '../entity/system/dictType.entity';
  9. import { Types } from 'mongoose';
  10. const ObjectId = Types.ObjectId;
  11. @Provide()
  12. export class InitService {
  13. @InjectEntityModel(Admin)
  14. adminModel: ReturnModelType<typeof Admin>;
  15. @InjectEntityModel(Role)
  16. roleModel: ReturnModelType<typeof Role>;
  17. @InjectEntityModel(Menus)
  18. menusModel: ReturnModelType<typeof Menus>;
  19. @InjectEntityModel(DictType)
  20. dictTypeModel: ReturnModelType<typeof DictType>;
  21. @InjectEntityModel(DictData)
  22. dictDataModel: ReturnModelType<typeof DictData>;
  23. async adminUser() {
  24. const data = {
  25. account: 'admin',
  26. password: '1qaz2wsx',
  27. nick_name: '系统管理员',
  28. is_super: '0',
  29. };
  30. const is_exist = await this.adminModel.count({ is_super: '0' });
  31. if (!is_exist) return await this.adminModel.create(data);
  32. return;
  33. }
  34. async initRole() {
  35. const num = await this.roleModel.count();
  36. if (num > 0) return;
  37. const datas = [{ name: '管理员', code: 'admin' }];
  38. await this.roleModel.insertMany(datas);
  39. }
  40. async initMenus() {
  41. const num = await this.menusModel.count();
  42. if (num > 0) return;
  43. const datas: any = [{ name: '首页', order_num: 1, path: '/', component: '/home/index', type: '1', i18n_code: 'menus.home', route_name: 'home' }];
  44. // 系统设置
  45. const smId = new ObjectId();
  46. const systemMenus = [
  47. { _id: smId, name: '系统设置', path: '/system', order_num: 2, type: '0', i18n_code: 'menus.system', route_name: 'system', is_default: '0' },
  48. {
  49. name: '菜单设置',
  50. parent_id: smId.toString(),
  51. order_num: 1,
  52. path: '/system/menus',
  53. component: '/system/menus/index',
  54. type: '1',
  55. route_name: 'system_menus',
  56. i18n_code: 'menus.system_menus',
  57. config: [
  58. {
  59. zh: '添加',
  60. code: 'add',
  61. },
  62. {
  63. zh: '修改',
  64. code: 'update',
  65. },
  66. {
  67. zh: '添加下一级',
  68. code: 'addNext',
  69. },
  70. {
  71. zh: '删除',
  72. code: 'delete',
  73. },
  74. ],
  75. is_default: '0',
  76. },
  77. {
  78. name: '角色管理',
  79. parent_id: smId.toString(),
  80. order_num: 2,
  81. path: '/system/role',
  82. component: '/system/role/index',
  83. type: '1',
  84. route_name: 'system_role',
  85. i18n_code: 'menus.system_role',
  86. is_default: '0',
  87. config: [
  88. {
  89. zh: '添加',
  90. code: 'add',
  91. },
  92. {
  93. zh: '修改',
  94. code: 'update',
  95. },
  96. {
  97. zh: '使用',
  98. code: 'toAbled',
  99. },
  100. {
  101. zh: '禁用',
  102. code: 'toDisabled',
  103. },
  104. {
  105. zh: '删除',
  106. code: 'delete',
  107. },
  108. ],
  109. },
  110. { name: '字典管理', parent_id: smId.toString(), order_num: 3, path: '/system/dict', component: '/system/dict/index', type: '1', i18n_code: 'menus.system_dict', route_name: 'system_dict', is_default: '0' },
  111. { name: '字典数据', parent_id: smId.toString(), order_num: 4, path: '/system/dictData', component: '/system/dictData/index', type: '2', route_name: 'system_dict_data', i18n_code: 'menus.system_dict_data', is_default: '0' },
  112. { name: '网址设置', route_name: 'system_config', i18n_code: 'menus.system_config', parent_id: smId.toString(), order_num: 5, path: '/system/config', component: '/system/config/index', type: '1', is_default: '0', parent_name: '系统设置' },
  113. ];
  114. // 用户管理
  115. const umId = new ObjectId();
  116. const userMenus = [
  117. { _id: umId, name: '用户管理', order_num: 3, path: '/user', type: '0', i18n_code: 'menus.user', route_name: 'user', is_default: '1' },
  118. { name: '管理员用户', parent_id: umId.toString(), order_num: 1, path: '/user/admin', component: '/user/admin/index', type: '1', i18n_code: 'menus.user_admin', route_name: 'user_admin' },
  119. { name: '教师用户', parent_id: umId.toString(), order_num: 2, path: '/user/teacher', component: '/user/teacher/index', type: '1', i18n_code: 'menus.user_teacher', route_name: 'user_teacher' },
  120. { name: '学生用户', parent_id: umId.toString(), order_num: 2, path: '/user/student', component: '/user/student/index', type: '1', i18n_code: 'menus.user_student', route_name: 'user_student' },
  121. ];
  122. const course = { name: '课程管理', route_name: 'course', i18n_code: 'menus.course', order_num: 4, path: '/core/course', component: '/core/course/index', type: '1', is_default: '1', is_use: '0' };
  123. const order = { name: '订单管理', order_num: 5, path: '/core/order', component: '/core/order/index', type: '1', is_default: '1', is_use: '0', route_name: 'order', i18n_code: 'menus.order' };
  124. const opinion = { name: '意见反馈管理', route_name: 'opinion', i18n_code: 'menus.opinion', order_num: 5, path: '/core/opinion', component: '/core/opinion/index', type: '1', is_default: '1', is_use: '0' };
  125. datas.push(...systemMenus, ...userMenus, course, order, opinion);
  126. // 项目业务菜单
  127. const busMenus = [];
  128. datas.push(...busMenus);
  129. await this.menusModel.insertMany(datas);
  130. }
  131. async initDict() {
  132. const isUseType = [
  133. { title: '是否使用', code: 'isUse', is_use: '0' },
  134. { title: '审核状态', code: 'examStatus', is_use: '0' },
  135. { title: '性别', code: 'gender', is_use: '0' },
  136. { title: '图标', code: 'icon', is_use: '0' },
  137. ];
  138. const isUseData = [
  139. { code: 'isUse', label: '使用', value: '0', sort: 1, is_use: '0' },
  140. { code: 'isUse', label: '禁用', value: '1', sort: 2, is_use: '0' },
  141. { code: 'examStatus', label: '待审核', value: '0', sort: 1, is_use: '0' },
  142. { code: 'examStatus', label: '已通过', value: '1', sort: 2, is_use: '0' },
  143. { code: 'examStatus', label: '未通过', value: '-1', sort: 2, is_use: '0' },
  144. { code: 'gender', label: '男', value: '0', sort: 1, is_use: '0' },
  145. { code: 'gender', label: '女', value: '1', sort: 2, is_use: '0' },
  146. { code: 'gender', label: '未知', value: '2', sort: 3, is_use: '0' },
  147. { code: 'icon', label: 'House', value: 'House', sort: 1, is_use: '0' },
  148. { code: 'icon', label: 'User', value: 'User', sort: 2, is_use: '0' },
  149. { code: 'icon', label: 'Setting', value: 'Setting', sort: 3, is_use: '0' },
  150. { code: 'icon', label: 'ScaleToOriginal', value: 'ScaleToOriginal', sort: 4, is_use: '0' },
  151. { code: 'icon', label: 'Management', value: 'Management', sort: 5, is_use: '0' },
  152. { code: 'icon', label: 'DataLine', value: 'DataLine', sort: 6, is_use: '0' },
  153. { code: 'icon', label: 'Film', value: 'Film', sort: 7, is_use: '0' },
  154. { code: 'icon', label: 'SwitchFilled', value: 'SwitchFilled', sort: 8, is_use: '0' },
  155. { code: 'icon', label: 'VideoPlay', value: 'VideoPlay', sort: 9, is_use: '0' },
  156. ];
  157. await this.dictTypeModel.insertMany(isUseType);
  158. await this.dictDataModel.insertMany(isUseData);
  159. }
  160. }