package migrate import ( "errors" "git.nobla.cn/golang/aeus-admin/models" "gorm.io/gorm" ) // Menu 合并菜单 func Menu(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 } // 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 } // 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 }