package defaults import ( "errors" "git.nobla.cn/golang/aeus-admin/models" "gorm.io/gorm" ) var ( defaultRoles = []*models.Role{} defaultUsers = []*models.User{} defaultMenus = []*models.Menu{} defaultDepartments = []*models.Department{} ) func init() { adminRole := &models.Role{} adminRole.Name = "admin" adminRole.Label = "管理员" adminRole.Description = "管理员角色" defaultRoles = append(defaultRoles, adminRole) adminUser := &models.User{} adminUser.Uid = "admin" adminUser.Username = "管理员" adminUser.Password = "admin" adminUser.Role = "admin" adminUser.Admin = true adminUser.DeptId = 1 guestUser := &models.User{} guestUser.Uid = "test" guestUser.Username = "测试人员" guestUser.Password = "test" guestUser.Role = "admin" guestUser.DeptId = 1 defaultUsers = append(defaultUsers, adminUser, guestUser) dashboardMenu := &models.Menu{} dashboardMenu.Icon = "dashboard" dashboardMenu.Label = "系统首页" dashboardMenu.Name = "Dashboard" dashboardMenu.Public = true dashboardMenu.Uri = "/dashboard" dashboardMenu.ViewPath = "../views/dashboard/Index.vue" orgMenu := &models.Menu{} orgMenu.Icon = "org" orgMenu.Label = "组织机构" orgMenu.Name = "Organize" orgMenu.Public = true orgMenu.Uri = "/organize" profileMenu := &models.Menu{} profileMenu.Label = "个人信息" profileMenu.Name = "OrganizeUserProfile" profileMenu.Public = true profileMenu.Hidden = true profileMenu.Parent = "Organize" profileMenu.Uri = "/organize/user/profile" profileMenu.ViewPath = "../views/organize/user/Profile.vue" settingMenu := &models.Menu{} settingMenu.Icon = "connect" settingMenu.Label = "系统设置" settingMenu.Name = "System" settingMenu.Public = true settingMenu.Uri = "/system" schemaMenu := &models.Menu{} schemaMenu.Label = "字段设置" schemaMenu.Parent = "System" schemaMenu.Name = "SystemSchema" schemaMenu.Uri = "/system/schemas" schemaMenu.Public = true schemaMenu.Hidden = true schemaMenu.ViewPath = "../views/system/schema/Index.vue" defaultMenus = append(defaultMenus, dashboardMenu, orgMenu, settingMenu, profileMenu, schemaMenu) systemDepartment := &models.Department{} systemDepartment.Name = "系统部门" systemDepartment.Description = "" defaultDepartments = append(defaultDepartments, systemDepartment) } func MergeMenu(db *gorm.DB, model *models.Menu) (err error) { if err = db.Where("name = ?", model.Name).First(model).Error; err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { err = db.Create(model).Error } } return } func Generate(db *gorm.DB) (err error) { var ( n int64 ) for _, row := range defaultMenus { if err = MergeMenu(db, row); err != nil { return } } if db.Model(&models.Role{}).Count(&n); n == 0 { db.Create(defaultRoles) permissions := make([]*models.Permission, 0) db.Find(&permissions) for _, row := range defaultRoles { items := make([]*models.RolePermission, 0) for _, perm := range permissions { item := &models.RolePermission{} item.Role = row.Name item.Permission = perm.Permission items = append(items, item) } db.Save(items) } } if db.Model(&models.Department{}).Count(&n); n == 0 { db.Create(defaultDepartments) } if db.Model(&models.User{}).Count(&n); n == 0 { db.Create(defaultUsers) } return }