|
@@ -0,0 +1,363 @@
|
|
|
+'use strict';
|
|
|
+const _ = require('lodash');
|
|
|
+const colors = require('colors');
|
|
|
+class AppBootHook {
|
|
|
+ constructor(app) {
|
|
|
+ this.app = app;
|
|
|
+ }
|
|
|
+
|
|
|
+ async willReady() {
|
|
|
+ // await this.initAdmin();
|
|
|
+ // await this.initMenu();
|
|
|
+ }
|
|
|
+
|
|
|
+ async serverDidReady() {
|
|
|
+ // 应用已经启动完毕
|
|
|
+ const ctx = await this.app.createAnonymousContext();
|
|
|
+ ctx.service.util.install.init();
|
|
|
+ // await this.initAdmin(ctx);
|
|
|
+ // await this.initMenu(ctx);
|
|
|
+ // await this.initRole(ctx);
|
|
|
+ // 检查种子
|
|
|
+ // await ctx.service.install.index();
|
|
|
+ // await ctx.service.util.rabbitMq.mission();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ async initRole(ctx) {
|
|
|
+ console.log('开始=>初始化角色'.blue);
|
|
|
+ const data = await ctx.model.Role.findOne();
|
|
|
+ if (!data) {
|
|
|
+ // 没有管理员,初始化一个
|
|
|
+ const data = {
|
|
|
+ default: true,
|
|
|
+ _tenant: 'master',
|
|
|
+ name: '管理员角色',
|
|
|
+ };
|
|
|
+ console.log('正在初始化角色'.blue);
|
|
|
+ await ctx.model.Role.create(data);
|
|
|
+ console.log('初始化角色=>结束'.green);
|
|
|
+ } else console.log('无需再次初始化角色'.yellow);
|
|
|
+ }
|
|
|
+
|
|
|
+ async initMenu(ctx) {
|
|
|
+ console.log('开始=>初始化总管理员菜单'.blue);
|
|
|
+ const data = await ctx.model.Menu.count();
|
|
|
+ if (data <= 0) {
|
|
|
+ console.log('正在初始化总管理员菜单'.blue);
|
|
|
+ console.log(colors.bgBlue.italic('菜单=>初始化 首页'));
|
|
|
+ // 首页初始化
|
|
|
+ const indexPage = {
|
|
|
+ name: '首页',
|
|
|
+ icon: 'icon-shouye',
|
|
|
+ order_num: 1,
|
|
|
+ path: '/admin/homeIndex',
|
|
|
+ status: '0',
|
|
|
+ type: '1',
|
|
|
+ no_delete: true,
|
|
|
+ _tenant: 'master',
|
|
|
+ };
|
|
|
+ await ctx.model.Menu.create(indexPage);
|
|
|
+ console.log(colors.bgGreen.italic('菜单=>初始化 首页'));
|
|
|
+
|
|
|
+ console.log(colors.bgBlue.italic('菜单=>初始化 系统菜单'));
|
|
|
+ // 系统菜单初始化
|
|
|
+ const sys = {
|
|
|
+ name: '系统设置',
|
|
|
+ icon: 'icon-shouye',
|
|
|
+ order_num: 2,
|
|
|
+ type: '0',
|
|
|
+ status: '0',
|
|
|
+ no_delete: true,
|
|
|
+ _tenant: 'master',
|
|
|
+ };
|
|
|
+ const sysData = await ctx.model.Menu.create(sys);
|
|
|
+ let sys_id = _.get(sysData, '_id');
|
|
|
+ if (sys_id) sys_id = JSON.parse(JSON.stringify(sys_id));
|
|
|
+ console.log(colors.bgBlue.italic('菜单=>系统菜单=>初始化 菜单管理'));
|
|
|
+ // 系统-菜单管理
|
|
|
+ const sys_menu = {
|
|
|
+ name: '菜单设置',
|
|
|
+ icon: 'icon-shouye',
|
|
|
+ order_num: 1,
|
|
|
+ parent_id: sys_id,
|
|
|
+ path: '/admin/menu',
|
|
|
+ status: '0',
|
|
|
+ type: '1',
|
|
|
+ no_delete: true,
|
|
|
+ _tenant: 'master',
|
|
|
+ };
|
|
|
+ await ctx.model.Menu.create(sys_menu);
|
|
|
+ console.log(colors.bgGreen.italic('菜单=>系统菜单=>初始化 菜单管理'));
|
|
|
+ console.log(colors.bgBlue.italic('菜单=>系统菜单=>初始化 角色管理'));
|
|
|
+ // 系统-角色
|
|
|
+ const sys_role = {
|
|
|
+ name: '角色管理',
|
|
|
+ icon: 'icon-shouye',
|
|
|
+ order_num: 2,
|
|
|
+ parent_id: sys_id,
|
|
|
+ path: '/admin/role',
|
|
|
+ status: '0',
|
|
|
+ type: '1',
|
|
|
+ no_delete: true,
|
|
|
+ _tenant: 'master',
|
|
|
+ };
|
|
|
+ const sr = await ctx.model.Menu.create(sys_role);
|
|
|
+ let role_id = _.get(sr, '_id');
|
|
|
+ if (role_id) role_id = JSON.parse(JSON.stringify(role_id));
|
|
|
+ const sys_role_child = {
|
|
|
+ status: '0',
|
|
|
+ icon: 'icon-shouye',
|
|
|
+ name: '角色信息',
|
|
|
+ parent_id: role_id,
|
|
|
+ path: '/admin/role/detail',
|
|
|
+ type: '2',
|
|
|
+ config: {
|
|
|
+ api: [],
|
|
|
+ table_btn: [],
|
|
|
+ btn_area: [],
|
|
|
+ },
|
|
|
+ no_delete: true,
|
|
|
+ _tenant: 'master',
|
|
|
+ };
|
|
|
+ await ctx.model.Menu.create(sys_role_child);
|
|
|
+ console.log(colors.bgGreen.italic('菜单=>系统菜单=>初始化 角色管理'));
|
|
|
+
|
|
|
+ console.log(colors.bgBlue.italic('菜单=>系统菜单=>初始化 分站管理'));
|
|
|
+ // 系统-分站
|
|
|
+ const sys_tenant = {
|
|
|
+ status: '0',
|
|
|
+ icon: 'icon-shouye',
|
|
|
+ no_delete: true,
|
|
|
+ _tenant: 'master',
|
|
|
+ page_type: 'list',
|
|
|
+ name: '分站管理',
|
|
|
+ parent_id: sys_id,
|
|
|
+ order_num: 3,
|
|
|
+ path: '/list/v1/tenant',
|
|
|
+ type: '1',
|
|
|
+ config: {
|
|
|
+ api: [
|
|
|
+ {
|
|
|
+ is_use: true,
|
|
|
+ module: 'tenant',
|
|
|
+ func: 'query',
|
|
|
+ opera: 'search',
|
|
|
+ desc: '查询列表',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ is_use: true,
|
|
|
+ module: 'tenant',
|
|
|
+ func: 'delete',
|
|
|
+ opera: 'delete',
|
|
|
+ desc: '删除',
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ table_btn: [
|
|
|
+ {
|
|
|
+ confirm: false,
|
|
|
+ label: '修改',
|
|
|
+ type: 'primary',
|
|
|
+ api: 'writeBySelf',
|
|
|
+ selfFunction: '(i)=>this.$router.push({name:"v1_detail",params:{service:this.service},query:{id:i._id}})',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ confirm: false,
|
|
|
+ label: '删除',
|
|
|
+ type: 'danger',
|
|
|
+ api: 'delete',
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ btn_area: [
|
|
|
+ {
|
|
|
+ label: '添加',
|
|
|
+ type: 'primary',
|
|
|
+ api: 'writeBySelf',
|
|
|
+ selfFunction: '(i)=>this.$router.push({name:"v1_detail",params:{service:this.service}})',
|
|
|
+ confirm: false,
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ };
|
|
|
+ const st = await ctx.model.Menu.create(sys_tenant);
|
|
|
+ let tenant_id = _.get(st, '_id');
|
|
|
+ if (tenant_id) tenant_id = JSON.parse(JSON.stringify(tenant_id));
|
|
|
+ const sys_tenant_child = {
|
|
|
+ status: '0',
|
|
|
+ icon: 'icon-shouye',
|
|
|
+ no_delete: true,
|
|
|
+ _tenant: 'master',
|
|
|
+ page_type: 'detail',
|
|
|
+ name: '分站编辑',
|
|
|
+ parent_id: tenant_id,
|
|
|
+ path: '/detail/v1/tenant',
|
|
|
+ type: '2',
|
|
|
+ config: {
|
|
|
+ api: [
|
|
|
+ {
|
|
|
+ is_use: true,
|
|
|
+ module: 'tenant',
|
|
|
+ func: 'fetch',
|
|
|
+ opera: 'search',
|
|
|
+ desc: '查询',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ is_use: true,
|
|
|
+ module: 'tenant',
|
|
|
+ func: 'create',
|
|
|
+ opera: 'create',
|
|
|
+ desc: '创建',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ is_use: true,
|
|
|
+ module: 'tenant',
|
|
|
+ func: 'update',
|
|
|
+ opera: 'update',
|
|
|
+ desc: '修改',
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ table_btn: [],
|
|
|
+ btn_area: [],
|
|
|
+ },
|
|
|
+ };
|
|
|
+ await ctx.model.Menu.create(sys_tenant_child);
|
|
|
+ console.log(colors.bgGreen.italic('菜单=>系统菜单=>初始化 分站管理'));
|
|
|
+ console.log(colors.bgBlue.italic('菜单=>系统菜单=>初始化 管理员管理'));
|
|
|
+ // 系统-管理员
|
|
|
+ const sys_admin = {
|
|
|
+ status: '0',
|
|
|
+ icon: 'icon-shouye',
|
|
|
+ no_delete: true,
|
|
|
+ _tenant: 'master',
|
|
|
+ name: '管理员用户',
|
|
|
+ parent_id: sys_id,
|
|
|
+ order_num: 4,
|
|
|
+ path: '/list/v1/admin',
|
|
|
+ type: '1',
|
|
|
+ __v: 0,
|
|
|
+ config: {
|
|
|
+ api: [
|
|
|
+ {
|
|
|
+ is_use: true,
|
|
|
+ module: 'admin',
|
|
|
+ func: 'query',
|
|
|
+ opera: 'search',
|
|
|
+ desc: '查询列表',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ is_use: true,
|
|
|
+ module: 'admin',
|
|
|
+ func: 'create',
|
|
|
+ opera: 'create',
|
|
|
+ desc: '创建',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ is_use: true,
|
|
|
+ module: 'admin',
|
|
|
+ func: 'update',
|
|
|
+ opera: 'update',
|
|
|
+ desc: '修改',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ is_use: true,
|
|
|
+ module: 'admin',
|
|
|
+ func: 'delete',
|
|
|
+ opera: 'toDelete',
|
|
|
+ desc: '删除',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ is_use: true,
|
|
|
+ module: 'admin',
|
|
|
+ func: 'fetch',
|
|
|
+ opera: 'toFetch',
|
|
|
+ desc: '单项数据查询',
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ table_btn: [
|
|
|
+ {
|
|
|
+ confirm: false,
|
|
|
+ label: '修改',
|
|
|
+ type: 'primary',
|
|
|
+ api: 'writeBySelf',
|
|
|
+ methodZh: '',
|
|
|
+ display: '',
|
|
|
+ selfFunction: '(i)=>this.$router.push({name:"v1_detail", query:{id:i._id},params:{service:this.service}})',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ confirm: true,
|
|
|
+ label: '删除',
|
|
|
+ type: 'danger',
|
|
|
+ api: 'toDelete',
|
|
|
+ display: '(i)=>i.is_super !== true',
|
|
|
+ methodZh: '确认是否删除该用户',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ confirm: false,
|
|
|
+ label: '查看',
|
|
|
+ type: 'primary',
|
|
|
+ api: 'writeBySelf',
|
|
|
+ selfFunction: '(i)=>this.$router.push({name:"v1_info" , query:{id:i._id},params:{service:this.service}})',
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ btn_area: [
|
|
|
+ {
|
|
|
+ label: '添加',
|
|
|
+ type: 'primary',
|
|
|
+ api: 'writeBySelf',
|
|
|
+ selfFunction: '(i)=>this.$router.push({name:"v1_detail",params:{service:this.service}})',
|
|
|
+ confirm: false,
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ page_type: 'list',
|
|
|
+ };
|
|
|
+ const sa = await ctx.model.Menu.create(sys_admin);
|
|
|
+ let admin_id = _.get(sa, '_id');
|
|
|
+ if (admin_id) admin_id = JSON.parse(JSON.stringify(admin_id));
|
|
|
+ const sys_admin_child = {
|
|
|
+ status: '0',
|
|
|
+ icon: 'icon-shouye',
|
|
|
+ no_delete: true,
|
|
|
+ _tenant: 'master',
|
|
|
+ name: '管理员信息',
|
|
|
+ parent_id: admin_id,
|
|
|
+ path: '/detail/v1/admin',
|
|
|
+ type: '2',
|
|
|
+ config: {
|
|
|
+ api: [
|
|
|
+ {
|
|
|
+ is_use: true,
|
|
|
+ module: 'admin',
|
|
|
+ func: 'fetch',
|
|
|
+ opera: 'search',
|
|
|
+ desc: '单数据查询',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ is_use: true,
|
|
|
+ module: 'admin',
|
|
|
+ func: 'create',
|
|
|
+ opera: 'create',
|
|
|
+ desc: '创建',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ is_use: true,
|
|
|
+ module: 'admin',
|
|
|
+ func: 'update',
|
|
|
+ opera: 'update',
|
|
|
+ desc: '修改',
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ table_btn: [],
|
|
|
+ btn_area: [],
|
|
|
+ },
|
|
|
+ page_type: 'detail',
|
|
|
+ };
|
|
|
+ await ctx.model.Menu.create(sys_admin_child);
|
|
|
+ console.log(colors.bgGreen.italic('菜单=>系统菜单=>初始化 管理员管理'));
|
|
|
+ console.log(colors.bgGreen.italic('菜单=>初始化 系统菜单'));
|
|
|
+
|
|
|
+ console.log('初始化总管理员菜单结束'.green);
|
|
|
+ } else console.log('无需初始化总管理员菜单'.yellow);
|
|
|
+ }
|
|
|
+}
|
|
|
+module.exports = AppBootHook;
|