variety_tag.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. package services
  2. import (
  3. "errors"
  4. "hongze/hongze_yb/models/tables/variety_classify"
  5. "hongze/hongze_yb/models/tables/variety_tag"
  6. "hongze/hongze_yb/models/tables/yb_price_driven_tag"
  7. )
  8. // TagTreeItem 标签树
  9. type TagTreeItem struct {
  10. ClassifyId int `json:"classify_id" description:"分类ID"`
  11. ClassifyName string `json:"classify_name" description:"分类名称"`
  12. //TagId int `json:"tag_id" description:"分类ID(用于前端组件)"`
  13. //TagName string `json:"tag_name" description:"分类名称(用于前端组件)"`
  14. Sort int `json:"sort" description:"排序"`
  15. Tags []*TagItem `json:"tags" description:"标签"`
  16. }
  17. // TagItem 标签
  18. type TagItem struct {
  19. TagId int `json:"tag_id" description:"标签ID"`
  20. TagName string `json:"tag_name" description:"标签名称"`
  21. Sort int `json:"sort" description:"排序"`
  22. ClassifyId int `json:"classify_id" description:"分类ID"`
  23. ChartPermissionId int `json:"chart_permission_id" description:"品种权限ID"`
  24. PriceDrivenState int `json:"price_driven_state" description:"价格驱动状态:0-关闭 1-开启"`
  25. //ResearcherList []*TagResearcher `json:"researcher_list" description:"研究员列表"`
  26. }
  27. // TagResearcher 研究员信息
  28. type TagResearcher struct {
  29. AdminId int `json:"admin_id"`
  30. AdminName string `json:"admin_name"`
  31. }
  32. // 获取标签树
  33. func GetTagTree() (respList []*TagTreeItem, err error) {
  34. respList = make([]*TagTreeItem, 0)
  35. // 获取标签分类
  36. classifyList, e := variety_classify.GetVarietyClassifyList()
  37. if e != nil {
  38. err = errors.New("获取标签分类列表失败, Err: " + e.Error())
  39. return
  40. }
  41. classifyLen := len(classifyList)
  42. if classifyLen == 0 {
  43. return
  44. }
  45. // 获取标签列表
  46. tagList, e := variety_tag.GetVarietyTagList()
  47. if e != nil {
  48. err = errors.New("获取标签列表失败, Err: " + e.Error())
  49. return
  50. }
  51. // 价格驱动标签
  52. priceTagList, e := yb_price_driven_tag.GetPriceDrivenTagList()
  53. if e != nil {
  54. err = errors.New("获取价格驱动标签列表失败, Err:" + e.Error())
  55. return
  56. }
  57. priceTagLen := len(priceTagList)
  58. priceTagMap := make(map[int]int, 0)
  59. for i := 0; i < priceTagLen; i++ {
  60. priceTagMap[priceTagList[i].VarietyTagID] = priceTagList[i].State
  61. }
  62. // 价格驱动状态
  63. tagsArr := make([]*TagItem, 0)
  64. tagLen := len(tagList)
  65. for i := 0; i < tagLen; i++ {
  66. item := tagList[i]
  67. priceState := priceTagMap[item.VarietyTagID]
  68. tagsArr = append(tagsArr, &TagItem{
  69. TagId: item.VarietyTagID,
  70. TagName: item.TagName,
  71. Sort: item.Sort,
  72. ClassifyId: item.VarietyClassifyID,
  73. ChartPermissionId: item.ChartPermissionID,
  74. PriceDrivenState: priceState,
  75. })
  76. }
  77. // 分类标签
  78. for i := 0; i < classifyLen; i++ {
  79. classifyItem := new(TagTreeItem)
  80. classifyItem.ClassifyId = classifyList[i].VarietyClassifyID
  81. classifyItem.ClassifyName = classifyList[i].ClassifyName
  82. //classifyItem.TagId = classifyList[i].VarietyClassifyID
  83. //classifyItem.TagName = classifyList[i].ClassifyName
  84. classifyItem.Sort = classifyList[i].Sort
  85. classifyItem.Tags = make([]*TagItem, 0)
  86. for _, t := range tagsArr {
  87. if classifyItem.ClassifyId == t.ClassifyId {
  88. classifyItem.Tags = append(classifyItem.Tags, t)
  89. }
  90. }
  91. respList = append(respList, classifyItem)
  92. }
  93. return
  94. }