aeus-admin/models/model.go

191 lines
3.6 KiB
Go

package models
import (
"errors"
"git.nobla.cn/golang/aeus-admin/pb"
"git.nobla.cn/golang/aeus-admin/types"
restTypes "git.nobla.cn/golang/rest/types"
"gorm.io/gorm"
)
type (
User struct {
pb.UserModel
}
Menu struct {
pb.MenuModel
}
Login struct {
pb.LoginModel
}
Department struct {
pb.DepartmentModel
}
Role struct {
pb.RoleModel
}
Permission struct {
pb.PermissionModel
}
RolePermission struct {
pb.RolePermissionModel
}
Setting struct {
pb.SettingModel
}
Activity struct {
pb.ActivityModel
}
)
func (m *User) GetMenu() *types.Menu {
return &types.Menu{
Name: "OrganizeUser",
Parent: "Organize",
}
}
func (m *Login) GetMenu() *types.Menu {
return &types.Menu{
Name: "OrganizeLogin",
Parent: "Organize",
}
}
func (m *Login) Scenario() []string {
return []string{restTypes.ScenarioList, restTypes.ScenarioExport}
}
func (m *Menu) GetMenu() *types.Menu {
return &types.Menu{
Name: "OrganizeMenu",
Parent: "Organize",
}
}
func (m *Menu) BeforeDelete(tx *gorm.DB) (err error) {
var count int64
if err = tx.Model(&Menu{}).Where("`parent` = ?", m.Name).Count(&count).Error; err != nil {
return
}
if count > 0 {
err = errors.New("please delete sub menus first")
}
return
}
func (m *Menu) ModelPermissions() map[string]string {
return map[string]string{
"organize:permission:list": "权限",
}
}
func (m *Department) GetMenu() *types.Menu {
return &types.Menu{
Name: "OrganizeDepartment",
Parent: "Organize",
}
}
func (m *Department) BeforeDelete(tx *gorm.DB) (err error) {
var count int64
if err = tx.Model(&Department{}).Where("`parent_id` = ?", m.Id).Count(&count).Error; err != nil {
return
}
if count > 0 {
return errors.New("please delete sub department first")
}
if err = tx.Model(&User{}).Where("`dept_id` = ?", m.Id).Count(&count).Error; err != nil {
return
}
if count > 0 {
err = errors.New("please delete user first")
}
return
}
func (m *Role) GetMenu() *types.Menu {
return &types.Menu{
Name: "OrganizeRole",
Parent: "Organize",
}
}
func (m *Role) ModelPermissions() map[string]string {
return map[string]string{
"organize:role_permission:list": "权限",
}
}
func (m *Role) BeforeDelete(tx *gorm.DB) (err error) {
var count int64
if err = tx.Model(&User{}).Where("`role` = ?", m.Name).Count(&count).Error; err != nil {
return
}
if count > 0 {
err = errors.New("please delete user first")
}
return
}
func (m *Permission) GetMenu() *types.Menu {
return &types.Menu{
Name: "OrganizePermission",
Parent: "Organize",
Hidden: true,
Uri: "/organize/menu/permission/:id",
ViewPath: "../views/organize/menu/Permission.vue",
}
}
func (m *Permission) GetPermission(s string) string {
return "organize:permission:list"
}
func (m *RolePermission) GetMenu() *types.Menu {
return &types.Menu{
Name: "OrganizeRolePermission",
Parent: "Organize",
Hidden: true,
Uri: "/organize/role/permission/:id",
ViewPath: "../views/organize/role/Permission.vue",
}
}
func (m *RolePermission) GetPermission(s string) string {
return "organize:role_permission:list"
}
func (m *Setting) GetMenu() *types.Menu {
return &types.Menu{
Name: "SystemSetting",
Parent: "System",
}
}
func (m *Setting) ModuleName() string {
return "system"
}
func (m *Activity) GetMenu() *types.Menu {
return &types.Menu{
Name: "SystemActivity",
Parent: "System",
}
}
func (m *Activity) Scenario() []string {
return []string{restTypes.ScenarioList, restTypes.ScenarioExport}
}
func (m *Activity) ModuleName() string {
return "system"
}
func (m *Activity) GetPermission(s string) string {
return "system:activity:list"
}