123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- package dao
- type Menu struct {
- ID int `gorm:"type:int;primary_key" json:"id"`
- ParentId int `gorm:"type:int;default 0" json:"parentId"`
- Code string `gorm:"type:varchar(255)" json:"code"`
- Name string `gorm:"type:varchar(255)" json:"name"`
- Alias string `gorm:"type:varchar(255)" json:"alias"`
- Path string `gorm:"type:varchar(255)" json:"path"`
- Source string `gorm:"type:varchar(255)" json:"source"`
- Sort int `gorm:"type:int" json:"sort"`
- Category int `gorm:"type:int" json:"category"`
- Action int `gorm:"type:int;default 0" json:"action"`
- IsOpen int `gorm:"type:int;default 1" json:"isOpen"`
- Remark string `gorm:"type:varchar(255)" json:"remark"`
- IsDeleted int `gorm:"type:int" json:"isDeleted"`
- }
- func (Menu) TableName() string {
- return "menu"
- }
- func (c *Menu) Get() error {
- return Db.Model(&c).Where("id = ?", c.ID).Find(&c).Error
- }
- func (c *Menu) Save() error {
- return Db.Model(&c).Save(&c).Error
- }
- func (c *Menu) Update() error {
- return Db.Model(&c).Where(" id = ? ", c.ID).Updates(&c).Error
- }
- func (c *Menu) GetAll() ([]Menu, error) {
- var menus []Menu
- err := Db.Model(&c).Where(" is_deleted = 0 and category = 1").Order("sort").Find(&menus).Error
- return menus, err
- }
- func (c *Menu) GetByParentId() ([]Menu, error) {
- var menus []Menu
- db := Db.Model(&c).Where(" is_deleted = 0")
- if c.ParentId >= 0 {
- db = db.Where("parent_id = ?", c.ParentId)
- }
- if c.Name != "" {
- db = db.Where("name like ?", "%"+c.Name+"%")
- }
- if c.Code != "" {
- db = db.Where("code like ?", "%"+c.Code+"%")
- }
- if c.Alias != "" {
- db = db.Where("alias like ?", "%"+c.Alias+"%")
- }
- err := db.Order("sort").Find(&menus).Error
- return menus, err
- }
- func (c *Menu) HasChildren(parentIds []int) (map[int]bool, error) {
- type hasChildren struct {
- ParentId int `gorm:"type:int"`
- Count int `gorm:"type:int"`
- }
- var result []hasChildren
- err := Db.Table("menu").Select("parent_id, count(*) count").Where(" is_deleted = 0 and parent_id in (?)", parentIds).Group("parent_id").Find(&result).Error
- m := make(map[int]bool)
- for _, item := range result {
- m[item.ParentId] = item.Count > 0
- }
- return m, err
- }
- func (c *Menu) GetMenuTree() ([]Menu, error) {
- var menus []Menu
- err := Db.Model(&c).Select("id,name,parent_id").Where(" is_deleted = 0 and category = 1").Order("sort").Find(&menus).Error
- return menus, err
- }
|