1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- package dao
- type Menu struct {
- ID int64 `gorm:"primary_key" json:"id"`
- ParentId int64 `gorm:"type:bigint; 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.Debug().Model(&c).Where("id = ?", c.ID).Find(&c).Error
- }
- func (c *Menu) Save() error {
- return Db.Debug().Model(&c).Save(&c).Error
- }
- func (c *Menu) Update() error {
- return Db.Debug().Model(&c).Where(" id = ? ", c.ID).Updates(&c).Error
- }
- func (c *Menu) GetAll() ([]Menu, error) {
- var menus []Menu
- err := Db.Debug().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.Debug().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 []int64) (map[int64]bool, error) {
- type hasChildren struct {
- ParentId int64 `gorm:"type:bigint"`
- Count int `gorm:"type:int"`
- }
- var result []hasChildren
- err := Db.Debug().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[int64]bool)
- for _, item := range result {
- m[item.ParentId] = item.Count > 0
- }
- return m, err
- }
|