package system import ( "context" "hongze/fms_api/global" "hongze/fms_api/models/base" ) // 菜单表 type SysMenu struct { MenuId int64 `gorm:"primaryKey;column:menu_id;" json:"menu_id"` ParentId int64 `gorm:"column:parent_id" json:"parent_id"` //父级菜单ID RootId int64 `gorm:"column:root_id" json:"root_id"` //顶层菜单ID Name string `gorm:"column:name" json:"name"` //菜单名称或者按钮名称 Sort int8 `gorm:"column:sort" json:"sort"` //排序序号 Path string `gorm:"column:path" json:"path"` //路由地址 PathName string `gorm:"column:path_name" json:"path_name"` //路由名称 IconPath string `gorm:"column:icon_path" json:"icon_path"` //菜单图标地址 Component string `gorm:"column:component" json:"component"` //组件路径 Hidden int8 `gorm:"column:hidden" json:"hidden"` //是否隐藏:1-隐藏 0-显示 HiddenLayout int8 `gorm:"column:hidden_layout" json:"hidden_layout"` //是否隐藏layout:1-隐藏 0-显示 Level int8 `gorm:"column:level" json:"level"` MenuType int8 `gorm:"column:menu_type" json:"menu_type"` //菜单类型: 0-菜单, 1-按钮 ButtonCode string `gorm:"column:button_code" json:"button_code"` //按钮唯一标识 base.TimeBase } // TableName get sql table name.获取数据库表名 func (m *SysMenu) TableName() string { return "sys_menu" } type SysMenuAddReq struct { ParentId int64 `json:"parent_id"` //父级菜单ID Name string `json:"name" binding:"required"` //菜单名称或者按钮名称 Sort int8 `json:"sort"` //排序序号 Path string `json:"path"` //路由地址 PathName string `json:"path_name"` //路由名称 IconPath string `json:"icon_path"` //菜单图标地址 Component string `json:"component"` //组件路径 Hidden int8 `json:"hidden" binding:"oneof=0 1"` //是否隐藏:1-隐藏 0-显示 HiddenLayout int8 `json:"hidden_layout" binding:"oneof=0 1"` //是否隐藏layout:1-隐藏 0-显示 MenuType int8 `json:"menu_type" binding:"oneof=0 1"` //菜单类型: 0-菜单, 1-按钮 ButtonCode string `json:"button_code" binding:"required_if=menu_type 1"` //按钮唯一标识 } type SysMenuEditReq struct { MenuId int64 `json:"menu_id" binding:"required,gte=1"` SysMenuAddReq } // 新增 func (m *SysMenu) Add() (err error) { err = global.DEFAULT_MYSQL.Create(m).Error return } // 修改 func (m *SysMenu) Update(updateCols []string) (err error) { err = global.DEFAULT_MYSQL.Model(m).Select(updateCols).Updates(m).Error return } func (m *SysMenu) SelectPage(page base.IPage, condition string, pars []interface{}) (count int64,results []*SysMenu, err error) { results = make([]*SysMenu, 0) query := global.DEFAULT_MYSQL.WithContext(context.TODO()).Model(m). Where(condition, pars...) query.Count(&count) if len(page.GetOrderItemsString()) > 0 { query = query.Order(page.GetOrderItemsString()) } err = query.Limit(int(page.GetPageSize())).Offset(int(page.Offset())).Find(&results).Error return } type SysMenuButtonResp struct { MenuId int64 `json:"menu_id"` //菜单ID ParentId int64 `json:"parent_id"` //父级菜单ID Name string `json:"name" binding:"required"` //菜单名称或者按钮名称 MenuType int8 `json:"menu_type" binding:"oneof=0 1"` //菜单类型: 0-菜单, 1-按钮 ButtonCode string `json:"button_code" binding:"required_if=menu_type 1"` //按钮唯一标识 } func (m *SysMenu) GetMenuListByCondition(condition string, pars []interface{}, orderStr string) (results []*SysMenu, err error) { results = make([]*SysMenu, 0) if orderStr == "" { orderStr = "sort asc, create_time desc" } err = global.DEFAULT_MYSQL.WithContext(context.TODO()).Model(m). Where(condition, pars...).Order(orderStr).Find(&results).Error return } type MenuShortListItem struct { MenuId int64 `json:"menu_id" form:"menu_id"` //菜单ID } type MenuListReq struct { base.PageReq Name string `json:"name" form:"name"` //菜单名称或者按钮名称 HideLevel3 int8 `json:"hide_level3" form:"hide_level3"` //返回值是否需要隐藏三级的菜单和三级按钮(1-隐藏,0-不隐藏) HideButton int8 `json:"hide_button" form:"hide_button"` //返回值是否需要隐藏按钮(1-隐藏,0-不隐藏) } type MenuListItemResp struct { MenuId int64 `json:"menu_id"` //菜单ID ParentId int64 `json:"parent_id"` //父级菜单ID Name string `json:"name"` //菜单名称或者按钮名称 Sort int8 `json:"sort"` //排序序号 Path string `json:"path"` //页面地址或者Api请求地址 PathName string `json:"path_name"` //路由名称 IconPath string `json:"icon_path"` //菜单图标地址 Component string `json:"component"` //组件路径 Hidden int8 `json:"hidden"` //是否隐藏:1-隐藏 0-显示 HiddenLayout int8 `json:"hidden_layout"` //是否隐藏layout:1-隐藏 0-显示 Level int8 `json:"level"` MenuType int8 `json:"menu_type"` //菜单类型: 0-菜单, 1-按钮 ButtonCode string `json:"button_code"` //按钮唯一标识 HasBind bool `json:"has_bind"` //是否已绑定,true 已绑定,false 未绑定 CreateTime string `json:"create_time"` //创建时间 ModifyTime string `json:"modify_time"` //最后更新时间 Children []*MenuListItemResp `json:"children"` } func (m *SysMenu) GetMenuByName(name string) (list []*SysMenu, err error) { err = global.DEFAULT_MYSQL.Model(m).Where("name like ?", name).Find(&list).Error return } func (m *SysMenu) GetMenuByMenuId(menuId int64) (item *SysMenu, err error) { err = global.DEFAULT_MYSQL.Model(m).Where("menu_id = ?", menuId).First(&item).Error return } // 删除 func (m *SysMenu) DeleteByCondition(condition string, pars []interface{}) (err error) { err = global.DEFAULT_MYSQL.Where(condition, pars...).Delete(m).Error return }