Init.service.ts 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. import { Autoload, Init, Scope, ScopeEnum } from '@midwayjs/core';
  2. import { InjectEntityModel } from '@midwayjs/typegoose';
  3. import { ReturnModelType } from '@typegoose/typegoose';
  4. import { Types } from 'mongoose';
  5. import { Admin } from '../../entity/system/admin.entity';
  6. import { DictData } from '../../entity/system/dictData.entity';
  7. import { DictType } from '../../entity/system/dictType.entity';
  8. import { Menus } from '../../entity/system/menus.entity';
  9. import { Role } from '../../entity/system/role.entity';
  10. const ObjectId = Types.ObjectId;
  11. @Autoload()
  12. @Scope(ScopeEnum.Singleton)
  13. export class InitService {
  14. @InjectEntityModel(Admin)
  15. adminModel: ReturnModelType<typeof Admin>;
  16. @InjectEntityModel(Role)
  17. roleModel: ReturnModelType<typeof Role>;
  18. @InjectEntityModel(Menus)
  19. menusModel: ReturnModelType<typeof Menus>;
  20. @InjectEntityModel(DictType)
  21. dictTypeModel: ReturnModelType<typeof DictType>;
  22. @InjectEntityModel(DictData)
  23. dictDataModel: ReturnModelType<typeof DictData>;
  24. @Init()
  25. async init() {
  26. console.log('to init');
  27. this.adminUser();
  28. this.initRole();
  29. this.initMenus();
  30. this.initDict();
  31. }
  32. async adminUser() {
  33. const data = {
  34. account: 'admin',
  35. password: '1qaz2wsx',
  36. nick_name: '系统管理员',
  37. is_super: '0',
  38. };
  39. const is_exist = await this.adminModel.count({ is_super: '0' });
  40. if (!is_exist) return await this.adminModel.create(data);
  41. return;
  42. }
  43. async initRole() {
  44. const num = await this.roleModel.count();
  45. if (num > 0) return;
  46. const datas = [{ name: '管理员', code: 'admin' }];
  47. await this.roleModel.insertMany(datas);
  48. }
  49. async initMenus() {
  50. const num = await this.menusModel.count();
  51. if (num > 0) return;
  52. const datas: any = [
  53. {
  54. name: '首页',
  55. order_num: 1,
  56. path: '/',
  57. component: '/home/index',
  58. type: '1',
  59. route_name: 'home',
  60. },
  61. ];
  62. // 系统设置
  63. const smId = new ObjectId();
  64. const systemMenus = [
  65. {
  66. _id: smId,
  67. name: '系统设置',
  68. path: '/system',
  69. order_num: 2,
  70. type: '0',
  71. route_name: 'system',
  72. is_default: '0',
  73. },
  74. {
  75. name: '菜单设置',
  76. parent_id: smId.toString(),
  77. order_num: 1,
  78. path: '/system/menus',
  79. component: '/system/menus/index',
  80. type: '1',
  81. route_name: 'system_menus',
  82. config: [
  83. {
  84. zh: '添加',
  85. code: 'add',
  86. },
  87. {
  88. zh: '修改',
  89. code: 'update',
  90. },
  91. {
  92. zh: '添加下一级',
  93. code: 'addNext',
  94. },
  95. {
  96. zh: '删除',
  97. code: 'delete',
  98. },
  99. ],
  100. is_default: '0',
  101. },
  102. {
  103. name: '角色管理',
  104. parent_id: smId.toString(),
  105. order_num: 2,
  106. path: '/system/role',
  107. component: '/system/role/index',
  108. type: '1',
  109. route_name: 'system_role',
  110. is_default: '0',
  111. config: [
  112. {
  113. zh: '添加',
  114. code: 'add',
  115. },
  116. {
  117. zh: '修改',
  118. code: 'update',
  119. },
  120. {
  121. zh: '使用',
  122. code: 'toAbled',
  123. },
  124. {
  125. zh: '禁用',
  126. code: 'toDisabled',
  127. },
  128. {
  129. zh: '删除',
  130. code: 'delete',
  131. },
  132. ],
  133. },
  134. {
  135. name: '字典管理',
  136. parent_id: smId.toString(),
  137. order_num: 3,
  138. path: '/system/dict',
  139. component: '/system/dict/index',
  140. type: '1',
  141. route_name: 'system_dict',
  142. is_default: '0',
  143. },
  144. {
  145. name: '字典数据',
  146. parent_id: smId.toString(),
  147. order_num: 4,
  148. path: '/system/dictData',
  149. component: '/system/dictData/index',
  150. type: '2',
  151. route_name: 'system_dict_data',
  152. is_default: '0',
  153. },
  154. ];
  155. // 用户管理
  156. const umId = new ObjectId();
  157. const userMenus = [
  158. {
  159. _id: umId,
  160. name: '用户管理',
  161. order_num: 3,
  162. path: '/user',
  163. type: '0',
  164. route_name: 'user',
  165. is_default: '1',
  166. },
  167. {
  168. name: '管理员用户',
  169. parent_id: umId.toString(),
  170. order_num: 1,
  171. path: '/user/admin',
  172. component: '/user/admin/index',
  173. type: '1',
  174. route_name: 'user_admin',
  175. },
  176. {
  177. name: '平台用户',
  178. parent_id: umId.toString(),
  179. order_num: 2,
  180. path: '/user/user',
  181. component: '/user/user/index',
  182. type: '1',
  183. route_name: 'user_user',
  184. },
  185. ];
  186. const password = {
  187. name: '修改密码',
  188. order_num: 999,
  189. path: '/acccount/updatepd',
  190. component: '/acccount/updatepd/index',
  191. type: '1',
  192. route_name: 'password',
  193. };
  194. datas.push(...systemMenus, ...userMenus, password);
  195. // 项目业务菜单
  196. const busMenus = [];
  197. datas.push(...busMenus);
  198. await this.menusModel.insertMany(datas);
  199. }
  200. async initRoleMenu(admin: Admin) {}
  201. async initDict() {
  202. const isUseType = [{ title: '是否使用', code: 'isUse', is_use: '0' }];
  203. const isUseData = [
  204. { code: 'isUse', label: '使用', value: '0', sort: 1, is_use: '0' },
  205. { code: 'isUse', label: '禁用', value: '1', sort: 2, is_use: '0' },
  206. ];
  207. await this.dictTypeModel.insertMany(isUseType);
  208. await this.dictDataModel.insertMany(isUseData);
  209. }
  210. }