package model import ( "SciencesServer/app/common/model" "SciencesServer/serve/orm" "fmt" ) type SysNavigation struct { *model.SysNavigation } type SysNavigationInfo struct { *model.SysNavigation model.Area } func (m *SysNavigation) Navigation(where ...*model.ModelWhere) ([]*SysNavigationInfo, error) { out := make([]*SysNavigationInfo, 0) db := orm.GetDB().Table(m.TableName()+" AS n"). Select("n.*", "t.province", "t.city"). Joins(fmt.Sprintf("LEFT JOIN %s AS t ON n.tenant_id = t.id", model.NewSysTenant().TableName())). Where("n.is_deleted = ?", model.DeleteStatusForNot). Order("n.sort " + model.OrderModeToAsc).Order("n.parent_id " + model.OrderModeToAsc). Order("n.id " + model.OrderModeToDesc) if len(where) > 0 { for _, v := range where { db = db.Where(v.Condition, v.Value) } } err := db.Scan(&out).Error return out, err } func NewSysNavigation() *SysNavigation { return &SysNavigation{model.NewSysNavigation()} }