package models import ( "fmt" "github.com/beego/beego/v2/client/orm" "strings" "time" ) // MiniClassify 小程序分类 type MiniClassify struct { Id int `description:"分类ID"` ClassifyName string `description:"分类名称"` ParentId int `description:"父级分类ID"` Level int `description:"分类层级"` LevelPath string `description:"层级路径"` Sort int `description:"排序"` IconUrl string `description:"图标地址"` DiamondDistrict int `description:"是否金刚区"` Frequency int `description:"报告频度:1-高频;2-中频;3-低频"` HotComment int `description:"是否热点点评"` KeyPoint int `description:"是否重点数据更新"` Enabled int `description:"状态:0-禁用;1-启用"` CreateTime time.Time `description:"创建时间"` ModifyTime time.Time `description:"修改时间"` } func (m *MiniClassify) TableName() string { return "mini_classify" } type MultipleFactorSeriesCols struct { PrimaryId string ClassifyName string ParentId string Level string LevelPath string Sort string IconUrl string DiamondDistrict string Frequency string HotComment string KeyPoint string Enabled string CreateTime string ModifyTime string } func (m *MiniClassify) Cols() MultipleFactorSeriesCols { return MultipleFactorSeriesCols{ PrimaryId: "id", ClassifyName: "classify_name", ParentId: "parent_id", Level: "level", LevelPath: "level_path", Sort: "sort", IconUrl: "icon_url", DiamondDistrict: "diamond_district", Frequency: "frequency", HotComment: "hot_comment", KeyPoint: "key_point", Enabled: "enabled", CreateTime: "create_time", ModifyTime: "modify_time", } } func (m *MiniClassify) GetItemById(id int) (item *MiniClassify, err error) { o := orm.NewOrm() sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId) err = o.Raw(sql, id).QueryRow(&item) return } func (m *MiniClassify) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*MiniClassify, err error) { o := orm.NewOrm() fields := strings.Join(fieldArr, ",") if len(fieldArr) == 0 { fields = `*` } order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime) if orderRule != "" { order = ` ORDER BY ` + orderRule } sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order) _, err = o.Raw(sql, pars).QueryRows(&items) return } // MiniClassifyItem 小程序分类 type MiniClassifyItem struct { Id int `description:"分类ID"` ClassifyName string `description:"分类名称"` ParentId int `description:"父级分类ID"` Level int `description:"分类层级"` LevelPath string `description:"层级路径"` Sort int `description:"排序"` IconUrl string `description:"图标地址"` DiamondDistrict int `description:"是否金刚区"` Frequency int `description:"报告频度:1-高频;2-中频;3-低频"` HotComment int `description:"是否热点点评"` KeyPoint int `description:"是否重点数据更新"` Children []*MiniClassifyItem `description:"子分类"` } func (m *MiniClassify) Format2Item() (item *MiniClassifyItem) { item = new(MiniClassifyItem) item.Id = m.Id item.ClassifyName = m.ClassifyName item.ParentId = m.ParentId item.Level = m.Level item.LevelPath = m.LevelPath item.Sort = m.Sort item.IconUrl = m.IconUrl item.DiamondDistrict = m.DiamondDistrict item.Frequency = m.Frequency item.HotComment = m.HotComment item.KeyPoint = m.KeyPoint item.Children = make([]*MiniClassifyItem, 0) return } func (m *MiniClassify) GetChildClassifyIdsByParentId(parentId int) (classifyIds []int, err error) { o := orm.NewOrm() sql := fmt.Sprintf(`SELECT %s FROM %s WHERE FIND_IN_SET(?, %s)`, m.Cols().PrimaryId, m.TableName(), m.Cols().LevelPath) _, err = o.Raw(sql, parentId).QueryRows(&classifyIds) return }