76 lines
1.8 KiB
Go
76 lines
1.8 KiB
Go
package migrate
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"git.nobla.cn/golang/aeus-admin/models"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
// Menu 合并菜单
|
|
func Menu(db *gorm.DB, datas ...*models.Menu) (err error) {
|
|
tx := db.Begin()
|
|
for _, model := range datas {
|
|
if err = tx.Where("name = ?", model.Name).First(model).Error; err != nil {
|
|
if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
if err = tx.Create(model).Error; err != nil {
|
|
tx.Rollback()
|
|
return err
|
|
}
|
|
}
|
|
}
|
|
}
|
|
err = tx.Commit().Error
|
|
return
|
|
}
|
|
|
|
// Permission 合并权限数据
|
|
func Permission(db *gorm.DB, menuName string, permission string, label string) (permissionModel *models.Permission, err error) {
|
|
permissionModel = &models.Permission{}
|
|
if err = db.Where("permission = ? AND menu = ?", permission, menuName).First(permissionModel).Error; err != nil {
|
|
if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
permissionModel.Menu = menuName
|
|
permissionModel.Label = label
|
|
permissionModel.Permission = permission
|
|
err = db.Create(permissionModel).Error
|
|
}
|
|
}
|
|
return
|
|
}
|
|
|
|
// #2c7be5
|
|
// Default 合并初始化数据集
|
|
func Default(db *gorm.DB) (err error) {
|
|
var (
|
|
n int64
|
|
)
|
|
for _, row := range defaultMenus {
|
|
if err = Menu(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
|
|
}
|