package model

import (
	model2 "cold-delivery/common/model"
)

type SysMenu struct {
	model2.Model
	ParentId   int    `json:"parentId" gorm:"size:11;"`                // 父id
	Sort       int    `json:"sort" gorm:"size:4;"`                     // 排序
	Visible    string `json:"visible" gorm:"size:1;default:1"`         // 1-显示 0-隐藏
	MenuPath   string `json:"-" gorm:"size:128;" swaggerignore:"true"` // 菜单id路径 /0/1
	Redirect   string `json:"redirect" gorm:"size:128;"`               // 重定向
	Title      string `json:"title" gorm:"size:128;"`                  // 菜单名称
	MenuType   string `json:"menuType" gorm:"size:1;"`                 // 菜单类型 M-目录 C-菜单 F-按钮
	Icon       string `json:"icon" gorm:"size:128;"`                   // 图标
	Component  string `json:"component" gorm:"size:255;"`              // 组件路径
	IsFrame    string `json:"-" gorm:"size:128;default:0"`             // 是否外链 1-是 0-否
	Path       string `json:"-" gorm:"size:128;"`                      // 后端路由地址
	Name       string `json:"name" gorm:"size:255;"`                   // 路由名称
	Permission string `json:"-" gorm:"size:255;"`                      // 权限标识
	IsDept     int    `json:"-" gorm:"size:255;default:1"`             // 是否为企业菜单

	Children []SysMenu `json:"children,omitempty" gorm:"-"`
	model2.ControlBy
	model2.ModelTime
}

type SysMenuSlice []SysMenu

func (x SysMenuSlice) Len() int           { return len(x) }
func (x SysMenuSlice) Less(i, j int) bool { return x[i].Sort < x[j].Sort }
func (x SysMenuSlice) Swap(i, j int)      { x[i], x[j] = x[j], x[i] }
func (SysMenu) TableName() string {
	return "sys_menu"
}

func (e *SysMenu) Generate() model2.ActiveRecord {
	o := *e
	return &o
}

func (e *SysMenu) GetId() interface{} {
	return e.Id
}
