aeus-admin/defaults/default.go

130 lines
3.3 KiB
Go

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
}