import { Autoload, Init, Scope, ScopeEnum } from '@midwayjs/core'; import { InjectEntityModel } from '@midwayjs/typegoose'; import { ReturnModelType } from '@typegoose/typegoose'; import { Types } from 'mongoose'; import { Admin } from '../../entity/system/admin.entity'; import { DictData } from '../../entity/system/dictData.entity'; import { DictType } from '../../entity/system/dictType.entity'; import { Menus } from '../../entity/system/menus.entity'; import { Role } from '../../entity/system/role.entity'; const ObjectId = Types.ObjectId; @Autoload() @Scope(ScopeEnum.Singleton) export class InitService { @InjectEntityModel(Admin) adminModel: ReturnModelType; @InjectEntityModel(Role) roleModel: ReturnModelType; @InjectEntityModel(Menus) menusModel: ReturnModelType; @InjectEntityModel(DictType) dictTypeModel: ReturnModelType; @InjectEntityModel(DictData) dictDataModel: ReturnModelType; @Init() async init() { console.log('to init'); this.adminUser(); this.initRole(); this.initMenus(); this.initDict(); } async adminUser() { const data = { account: 'admin', password: '1qaz2wsx', nick_name: '系统管理员', is_super: '0', }; const is_exist = await this.adminModel.count({ is_super: '0' }); if (!is_exist) return await this.adminModel.create(data); return; } async initRole() { const num = await this.roleModel.count(); if (num > 0) return; const datas = [{ name: '管理员', code: 'admin' }]; await this.roleModel.insertMany(datas); } async initMenus() { const num = await this.menusModel.count(); if (num > 0) return; const datas: any = [ { name: '首页', order_num: 1, path: '/', component: '/home/index', type: '1', route_name: 'home', }, ]; // 系统设置 const smId = new ObjectId(); const systemMenus = [ { _id: smId, name: '系统设置', path: '/system', order_num: 2, type: '0', route_name: 'system', is_default: '0', }, { name: '菜单设置', parent_id: smId.toString(), order_num: 1, path: '/system/menus', component: '/system/menus/index', type: '1', route_name: 'system_menus', config: [ { zh: '添加', code: 'add', }, { zh: '修改', code: 'update', }, { zh: '添加下一级', code: 'addNext', }, { zh: '删除', code: 'delete', }, ], is_default: '0', }, { name: '角色管理', parent_id: smId.toString(), order_num: 2, path: '/system/role', component: '/system/role/index', type: '1', route_name: 'system_role', is_default: '0', config: [ { zh: '添加', code: 'add', }, { zh: '修改', code: 'update', }, { zh: '使用', code: 'toAbled', }, { zh: '禁用', code: 'toDisabled', }, { zh: '删除', code: 'delete', }, ], }, { name: '字典管理', parent_id: smId.toString(), order_num: 3, path: '/system/dict', component: '/system/dict/index', type: '1', route_name: 'system_dict', is_default: '0', }, { name: '字典数据', parent_id: smId.toString(), order_num: 4, path: '/system/dictData', component: '/system/dictData/index', type: '2', route_name: 'system_dict_data', is_default: '0', }, ]; // 用户管理 const umId = new ObjectId(); const userMenus = [ { _id: umId, name: '用户管理', order_num: 3, path: '/user', type: '0', route_name: 'user', is_default: '1', }, { name: '管理员用户', parent_id: umId.toString(), order_num: 1, path: '/user/admin', component: '/user/admin/index', type: '1', route_name: 'user_admin', }, { name: '平台用户', parent_id: umId.toString(), order_num: 2, path: '/user/user', component: '/user/user/index', type: '1', route_name: 'user_user', }, ]; const password = { name: '修改密码', order_num: 999, path: '/acccount/updatepd', component: '/acccount/updatepd/index', type: '1', route_name: 'password', }; datas.push(...systemMenus, ...userMenus, password); // 项目业务菜单 const busMenus = []; datas.push(...busMenus); await this.menusModel.insertMany(datas); } async initRoleMenu(admin: Admin) {} async initDict() { const isUseType = [{ title: '是否使用', code: 'isUse', is_use: '0' }]; const isUseData = [ { code: 'isUse', label: '使用', value: '0', sort: 1, is_use: '0' }, { code: 'isUse', label: '禁用', value: '1', sort: 2, is_use: '0' }, ]; await this.dictTypeModel.insertMany(isUseType); await this.dictDataModel.insertMany(isUseData); } }