classify.go 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. package models
  2. import (
  3. "fmt"
  4. "github.com/beego/beego/v2/client/orm"
  5. "strings"
  6. "time"
  7. )
  8. // MiniClassify 小程序分类
  9. type MiniClassify struct {
  10. Id int `description:"分类ID"`
  11. ClassifyName string `description:"分类名称"`
  12. ParentId int `description:"父级分类ID"`
  13. Level int `description:"分类层级"`
  14. LevelPath string `description:"层级路径"`
  15. Sort int `description:"排序"`
  16. IconUrl string `description:"图标地址"`
  17. DiamondDistrict int `description:"是否金刚区"`
  18. Frequency int `description:"报告频度:1-高频;2-中频;3-低频"`
  19. HotComment int `description:"是否热点点评"`
  20. KeyPoint int `description:"是否重点数据更新"`
  21. Enabled int `description:"状态:0-禁用;1-启用"`
  22. CreateTime time.Time `description:"创建时间"`
  23. ModifyTime time.Time `description:"修改时间"`
  24. }
  25. func (m *MiniClassify) TableName() string {
  26. return "mini_classify"
  27. }
  28. type MultipleFactorSeriesCols struct {
  29. PrimaryId string
  30. ClassifyName string
  31. ParentId string
  32. Level string
  33. LevelPath string
  34. Sort string
  35. IconUrl string
  36. DiamondDistrict string
  37. Frequency string
  38. HotComment string
  39. KeyPoint string
  40. Enabled string
  41. CreateTime string
  42. ModifyTime string
  43. }
  44. func (m *MiniClassify) Cols() MultipleFactorSeriesCols {
  45. return MultipleFactorSeriesCols{
  46. PrimaryId: "id",
  47. ClassifyName: "classify_name",
  48. ParentId: "parent_id",
  49. Level: "level",
  50. LevelPath: "level_path",
  51. Sort: "sort",
  52. IconUrl: "icon_url",
  53. DiamondDistrict: "diamond_district",
  54. Frequency: "frequency",
  55. HotComment: "hot_comment",
  56. KeyPoint: "key_point",
  57. Enabled: "enabled",
  58. CreateTime: "create_time",
  59. ModifyTime: "modify_time",
  60. }
  61. }
  62. func (m *MiniClassify) GetItemById(id int) (item *MiniClassify, err error) {
  63. o := orm.NewOrm()
  64. sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
  65. err = o.Raw(sql, id).QueryRow(&item)
  66. return
  67. }
  68. func (m *MiniClassify) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*MiniClassify, err error) {
  69. o := orm.NewOrm()
  70. fields := strings.Join(fieldArr, ",")
  71. if len(fieldArr) == 0 {
  72. fields = `*`
  73. }
  74. order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
  75. if orderRule != "" {
  76. order = ` ORDER BY ` + orderRule
  77. }
  78. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
  79. _, err = o.Raw(sql, pars).QueryRows(&items)
  80. return
  81. }
  82. // MiniClassifyItem 小程序分类
  83. type MiniClassifyItem struct {
  84. Id int `description:"分类ID"`
  85. ClassifyName string `description:"分类名称"`
  86. ParentId int `description:"父级分类ID"`
  87. Level int `description:"分类层级"`
  88. LevelPath string `description:"层级路径"`
  89. Sort int `description:"排序"`
  90. IconUrl string `description:"图标地址"`
  91. DiamondDistrict int `description:"是否金刚区"`
  92. Frequency int `description:"报告频度:1-高频;2-中频;3-低频"`
  93. HotComment int `description:"是否热点点评"`
  94. KeyPoint int `description:"是否重点数据更新"`
  95. Children []*MiniClassifyItem `description:"子分类"`
  96. }
  97. func (m *MiniClassify) Format2Item() (item *MiniClassifyItem) {
  98. item = new(MiniClassifyItem)
  99. item.Id = m.Id
  100. item.ClassifyName = m.ClassifyName
  101. item.ParentId = m.ParentId
  102. item.Level = m.Level
  103. item.LevelPath = m.LevelPath
  104. item.Sort = m.Sort
  105. item.IconUrl = m.IconUrl
  106. item.DiamondDistrict = m.DiamondDistrict
  107. item.Frequency = m.Frequency
  108. item.HotComment = m.HotComment
  109. item.KeyPoint = m.KeyPoint
  110. item.Children = make([]*MiniClassifyItem, 0)
  111. return
  112. }
  113. func (m *MiniClassify) GetChildClassifyIdsByParentId(parentId int) (classifyIds []int, err error) {
  114. o := orm.NewOrm()
  115. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE FIND_IN_SET(?, %s)`, m.Cols().PrimaryId, m.TableName(), m.Cols().LevelPath)
  116. _, err = o.Raw(sql, parentId).QueryRows(&classifyIds)
  117. return
  118. }