package system import ( "context" "fmt" "time" "management/internal/erpserver/model/system" "github.com/google/uuid" ) func (r *menuRepository) Initialize(ctx context.Context) error { var count int64 if err := r.repo.DB(ctx).Model(&system.Menu{}).Count(&count).Error; err != nil { return err } if count > 0 { return nil } sys, err := r.Create(ctx, &system.Menu{ Name: "系统管理", DisplayName: "系统管理", Url: uuid.Must(uuid.NewRandom()).String(), Type: "node", ParentID: 0, ParentPath: ",0,", Avatar: "layui-icon layui-icon-set", Style: "", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } accountPermission, err := r.Create(ctx, &system.Menu{ Name: "账户权限", DisplayName: "账户权限", Url: uuid.Must(uuid.NewRandom()).String(), Type: "node", ParentID: sys.ID, ParentPath: fmt.Sprintf("%s%d,", sys.ParentPath, sys.ID), Avatar: "layui-icon layui-icon-vercode", Style: "", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } systemMenu, err := r.Create(ctx, &system.Menu{ Name: "菜单管理", DisplayName: "菜单管理", Url: "/system/menu/list", Type: "menu", ParentID: accountPermission.ID, ParentPath: fmt.Sprintf("%s%d,", accountPermission.ParentPath, accountPermission.ID), Avatar: "", Style: "", Visible: true, IsList: true, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } systemRole, err := r.Create(ctx, &system.Menu{ Name: "角色管理", DisplayName: "角色管理", Url: "/system/role/list", Type: "menu", ParentID: accountPermission.ID, ParentPath: fmt.Sprintf("%s%d,", accountPermission.ParentPath, accountPermission.ID), Avatar: "", Style: "", Visible: true, IsList: true, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } systemDepartment, err := r.Create(ctx, &system.Menu{ Name: "部门管理", DisplayName: "部门管理", Url: "/system/department/list", Type: "menu", ParentID: accountPermission.ID, ParentPath: fmt.Sprintf("%s%d,", accountPermission.ParentPath, accountPermission.ID), Avatar: "", Style: "", Visible: true, IsList: true, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } systemUser, err := r.Create(ctx, &system.Menu{ Name: "用户管理", DisplayName: "用户管理", Url: "/system/user/list", Type: "menu", ParentID: accountPermission.ID, ParentPath: fmt.Sprintf("%s%d,", accountPermission.ParentPath, accountPermission.ID), Avatar: "", Style: "", Visible: true, IsList: true, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } _, err = r.Create(ctx, &system.Menu{ Name: "登陆日志", DisplayName: "登陆日志", Url: "/system/login_log/list", Type: "menu", ParentID: accountPermission.ID, ParentPath: fmt.Sprintf("%s%d,", accountPermission.ParentPath, accountPermission.ID), Avatar: "", Style: "", Visible: true, IsList: true, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } _, err = r.Create(ctx, &system.Menu{ Name: "审计日志", DisplayName: "审计日志", Url: "/system/audit_log/list", Type: "menu", ParentID: accountPermission.ID, ParentPath: fmt.Sprintf("%s%d,", accountPermission.ParentPath, accountPermission.ID), Avatar: "", Style: "", Visible: true, IsList: true, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } // 菜单 _, err = r.Create(ctx, &system.Menu{ Name: "新增", DisplayName: "新增", Url: "/system/menu/add", Type: "btn", ParentID: systemMenu.ID, ParentPath: fmt.Sprintf("%s%d,", systemMenu.ParentPath, systemMenu.ID), Avatar: "layui-icon layui-icon-add-1", Style: "pear-btn-primary pear-btn-sm", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } _, err = r.Create(ctx, &system.Menu{ Name: "新增子菜单", DisplayName: "新增子菜单", Url: "/system/menu/add_children", Type: "btn", ParentID: systemMenu.ID, ParentPath: fmt.Sprintf("%s%d,", systemMenu.ParentPath, systemMenu.ID), Avatar: "layui-icon layui-icon-add-1", Style: "pear-btn-primary pear-btn-xs", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } _, err = r.Create(ctx, &system.Menu{ Name: "编辑", DisplayName: "编辑", Url: "/system/menu/edit", Type: "btn", ParentID: systemMenu.ID, ParentPath: fmt.Sprintf("%s%d,", systemMenu.ParentPath, systemMenu.ID), Avatar: "layui-icon layui-icon-edit", Style: "pear-btn-primary pear-btn-xs", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } _, err = r.Create(ctx, &system.Menu{ Name: "保存", DisplayName: "保存", Url: "/system/menu/save", Type: "btn", ParentID: systemMenu.ID, ParentPath: fmt.Sprintf("%s%d,", systemMenu.ParentPath, systemMenu.ID), Avatar: "layui-icon layui-icon-ok", Style: "pear-btn-primary pear-btn-sm", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } _, err = r.Create(ctx, &system.Menu{ Name: "数据", DisplayName: "数据", Url: "/system/menu/data", Type: "btn", ParentID: systemMenu.ID, ParentPath: fmt.Sprintf("%s%d,", systemMenu.ParentPath, systemMenu.ID), Avatar: "", Style: "", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } _, err = r.Create(ctx, &system.Menu{ Name: "刷新", DisplayName: "刷新", Url: "/system/menu/refresh_cache", Type: "btn", ParentID: systemMenu.ID, ParentPath: fmt.Sprintf("%s%d,", systemMenu.ParentPath, systemMenu.ID), Avatar: "layui-icon layui-icon-refresh", Style: "pear-btn-sm", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } // 角色 _, err = r.Create(ctx, &system.Menu{ Name: "新增", DisplayName: "新增", Url: "/system/role/add", Type: "btn", ParentID: systemRole.ID, ParentPath: fmt.Sprintf("%s%d,", systemRole.ParentPath, systemRole.ID), Avatar: "layui-icon layui-icon-add-1", Style: "pear-btn-primary pear-btn-sm", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } _, err = r.Create(ctx, &system.Menu{ Name: "编辑", DisplayName: "编辑", Url: "/system/role/edit", Type: "btn", ParentID: systemRole.ID, ParentPath: fmt.Sprintf("%s%d,", systemRole.ParentPath, systemRole.ID), Avatar: "layui-icon layui-icon-edit", Style: "pear-btn-primary pear-btn-xs", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } _, err = r.Create(ctx, &system.Menu{ Name: "保存", DisplayName: "保存", Url: "/system/role/save", Type: "btn", ParentID: systemRole.ID, ParentPath: fmt.Sprintf("%s%d,", systemRole.ParentPath, systemRole.ID), Avatar: "layui-icon layui-icon-ok", Style: "pear-btn-primary pear-btn-sm", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } _, err = r.Create(ctx, &system.Menu{ Name: "数据", DisplayName: "数据", Url: "/system/role/data", Type: "btn", ParentID: systemRole.ID, ParentPath: fmt.Sprintf("%s%d,", systemRole.ParentPath, systemRole.ID), Avatar: "", Style: "", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } _, err = r.Create(ctx, &system.Menu{ Name: "刷新", DisplayName: "刷新", Url: "/system/role/refresh", Type: "btn", ParentID: systemRole.ID, ParentPath: fmt.Sprintf("%s%d,", systemRole.ParentPath, systemRole.ID), Avatar: "layui-icon layui-icon-refresh", Style: "pear-btn-sm", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } _, err = r.Create(ctx, &system.Menu{ Name: "重建父路径", DisplayName: "重建父路径", Url: "/system/role/rebuild_parent_path", Type: "btn", ParentID: systemRole.ID, ParentPath: fmt.Sprintf("%s%d,", systemRole.ParentPath, systemRole.ID), Avatar: "layui-icon layui-icon-refresh", Style: "pear-btn-danger pear-btn-sm", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } _, err = r.Create(ctx, &system.Menu{ Name: "权限刷新", DisplayName: "权限刷新", Url: "/system/role/refresh_role_menus", Type: "btn", ParentID: systemRole.ID, ParentPath: fmt.Sprintf("%s%d,", systemRole.ParentPath, systemRole.ID), Avatar: "layui-icon layui-icon-refresh", Style: "pear-btn-xs", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } _, err = r.Create(ctx, &system.Menu{ Name: "设置权限", DisplayName: "设置权限", Url: "/system/role/set_menu", Type: "btn", ParentID: systemRole.ID, ParentPath: fmt.Sprintf("%s%d,", systemRole.ParentPath, systemRole.ID), Avatar: "layui-icon layui-icon-set", Style: "pear-btn-danger pear-btn-xs", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } // 部门 _, err = r.Create(ctx, &system.Menu{ Name: "新增", DisplayName: "新增", Url: "/system/department/add", Type: "btn", ParentID: systemDepartment.ID, ParentPath: fmt.Sprintf("%s%d,", systemDepartment.ParentPath, systemDepartment.ID), Avatar: "layui-icon layui-icon-add-1", Style: "pear-btn-primary pear-btn-sm", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } _, err = r.Create(ctx, &system.Menu{ Name: "新增子部门", DisplayName: "新增子部门", Url: "/system/department/add_children", Type: "btn", ParentID: systemDepartment.ID, ParentPath: fmt.Sprintf("%s%d,", systemDepartment.ParentPath, systemDepartment.ID), Avatar: "layui-icon layui-icon-add-1", Style: "pear-btn-primary pear-btn-xs", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } _, err = r.Create(ctx, &system.Menu{ Name: "编辑", DisplayName: "编辑", Url: "/system/department/edit", Type: "btn", ParentID: systemDepartment.ID, ParentPath: fmt.Sprintf("%s%d,", systemDepartment.ParentPath, systemDepartment.ID), Avatar: "layui-icon layui-icon-edit", Style: "pear-btn-primary pear-btn-xs", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } _, err = r.Create(ctx, &system.Menu{ Name: "保存", DisplayName: "保存", Url: "/system/department/save", Type: "btn", ParentID: systemDepartment.ID, ParentPath: fmt.Sprintf("%s%d,", systemDepartment.ParentPath, systemDepartment.ID), Avatar: "layui-icon layui-icon-ok", Style: "pear-btn-primary pear-btn-sm", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } _, err = r.Create(ctx, &system.Menu{ Name: "数据", DisplayName: "数据", Url: "/system/department/data", Type: "btn", ParentID: systemDepartment.ID, ParentPath: fmt.Sprintf("%s%d,", systemDepartment.ParentPath, systemDepartment.ID), Avatar: "", Style: "", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } _, err = r.Create(ctx, &system.Menu{ Name: "刷新", DisplayName: "刷新", Url: "/system/department/refresh", Type: "btn", ParentID: systemDepartment.ID, ParentPath: fmt.Sprintf("%s%d,", systemDepartment.ParentPath, systemDepartment.ID), Avatar: "layui-icon layui-icon-refresh", Style: "pear-btn-sm", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } _, err = r.Create(ctx, &system.Menu{ Name: "重建父路径", DisplayName: "重建父路径", Url: "/system/department/rebuild_parent_path", Type: "btn", ParentID: systemDepartment.ID, ParentPath: fmt.Sprintf("%s%d,", systemDepartment.ParentPath, systemDepartment.ID), Avatar: "layui-icon layui-icon-refresh", Style: "pear-btn-danger pear-btn-sm", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } // 用户 _, err = r.Create(ctx, &system.Menu{ Name: "新增", DisplayName: "新增", Url: "/system/user/add", Type: "btn", ParentID: systemUser.ID, ParentPath: fmt.Sprintf("%s%d,", systemUser.ParentPath, systemUser.ID), Avatar: "layui-icon layui-icon-add-1", Style: "pear-btn-primary pear-btn-sm", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } _, err = r.Create(ctx, &system.Menu{ Name: "编辑", DisplayName: "编辑", Url: "/system/user/edit", Type: "btn", ParentID: systemUser.ID, ParentPath: fmt.Sprintf("%s%d,", systemUser.ParentPath, systemUser.ID), Avatar: "layui-icon layui-icon-edit", Style: "pear-btn-primary pear-btn-xs", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } _, err = r.Create(ctx, &system.Menu{ Name: "基本资料", DisplayName: "基本资料", Url: "/system/user/profile", Type: "btn", ParentID: systemUser.ID, ParentPath: fmt.Sprintf("%s%d,", systemUser.ParentPath, systemUser.ID), Avatar: "", Style: "", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } _, err = r.Create(ctx, &system.Menu{ Name: "保存", DisplayName: "保存", Url: "/system/user/save", Type: "btn", ParentID: systemUser.ID, ParentPath: fmt.Sprintf("%s%d,", systemUser.ParentPath, systemUser.ID), Avatar: "layui-icon layui-icon-ok", Style: "pear-btn-primary pear-btn-sm", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } // 基础数据 basicData, err := r.Create(ctx, &system.Menu{ Name: "基础数据", DisplayName: "基础数据", Url: uuid.Must(uuid.NewRandom()).String(), Type: "node", ParentID: sys.ID, ParentPath: fmt.Sprintf("%s%d,", sys.ParentPath, sys.ID), Avatar: "layui-icon layui-icon-vercode", Style: "", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } // 系统配置 systemConfig, err := r.Create(ctx, &system.Menu{ Name: "系统属性", DisplayName: "系统属性", Url: "/system/config/list", Type: "menu", ParentID: basicData.ID, ParentPath: fmt.Sprintf("%s%d,", basicData.ParentPath, basicData.ID), Avatar: "", Style: "", Visible: true, IsList: true, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } _, err = r.Create(ctx, &system.Menu{ Name: "新增", DisplayName: "新增", Url: "/system/config/add", Type: "btn", ParentID: systemConfig.ID, ParentPath: fmt.Sprintf("%s%d,", systemConfig.ParentPath, systemConfig.ID), Avatar: "layui-icon layui-icon-add-1", Style: "pear-btn-primary pear-btn-sm", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } _, err = r.Create(ctx, &system.Menu{ Name: "编辑", DisplayName: "编辑", Url: "/system/config/edit", Type: "btn", ParentID: systemConfig.ID, ParentPath: fmt.Sprintf("%s%d,", systemConfig.ParentPath, systemConfig.ID), Avatar: "layui-icon layui-icon-edit", Style: "pear-btn-primary pear-btn-xs", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } _, err = r.Create(ctx, &system.Menu{ Name: "保存", DisplayName: "保存", Url: "/system/config/save", Type: "btn", ParentID: systemConfig.ID, ParentPath: fmt.Sprintf("%s%d,", systemConfig.ParentPath, systemConfig.ID), Avatar: "layui-icon layui-icon-ok", Style: "pear-btn-primary pear-btn-sm", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } _, err = r.Create(ctx, &system.Menu{ Name: "重置Pear", DisplayName: "重置Pear", Url: "/system/config/reset_pear", Type: "btn", ParentID: systemConfig.ID, ParentPath: fmt.Sprintf("%s%d,", systemConfig.ParentPath, systemConfig.ID), Avatar: "layui-icon layui-icon-refresh", Style: "pear-btn-danger pear-btn-sm", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } _, err = r.Create(ctx, &system.Menu{ Name: "刷新", DisplayName: "刷新", Url: "/system/config/refresh", Type: "btn", ParentID: systemConfig.ID, ParentPath: fmt.Sprintf("%s%d,", systemConfig.ParentPath, systemConfig.ID), Avatar: "layui-icon layui-icon-refresh", Style: "pear-btn-xs", Visible: true, IsList: false, Status: 0, Sort: 6666, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) if err != nil { return err } return nil }