114 lines
2.7 KiB
Go
114 lines
2.7 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 = "org"
|
|
dashboardMenu.Label = "控制面板"
|
|
dashboardMenu.Name = "Dashboard"
|
|
dashboardMenu.Public = true
|
|
dashboardMenu.Uri = "/dashboard"
|
|
|
|
orgMenu := &models.Menu{}
|
|
orgMenu.Icon = "org"
|
|
orgMenu.Label = "组织机构"
|
|
orgMenu.Name = "Organize"
|
|
orgMenu.Public = true
|
|
orgMenu.Uri = "/organize"
|
|
|
|
settingMenu := &models.Menu{}
|
|
settingMenu.Icon = "connect"
|
|
settingMenu.Label = "系统设置"
|
|
settingMenu.Name = "System"
|
|
settingMenu.Public = true
|
|
settingMenu.Uri = "/system"
|
|
defaultMenus = append(defaultMenus, dashboardMenu, orgMenu, settingMenu)
|
|
|
|
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 Menu(db *gorm.DB) (err error) {
|
|
for _, row := range defaultMenus {
|
|
if err = MergeMenu(db, row); err != nil {
|
|
return
|
|
}
|
|
}
|
|
return
|
|
}
|
|
|
|
func Data(db *gorm.DB) (err error) {
|
|
var (
|
|
n int64
|
|
)
|
|
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.PermissionId = perm.Id
|
|
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
|
|
}
|