edb_classify.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. package data
  2. import (
  3. "fmt"
  4. "hongze/hongze_chart_lib/models"
  5. "hongze/hongze_chart_lib/models/data_manage"
  6. )
  7. func EdbClassifyListMakeTree(allNode []*data_manage.EdbClassifyItems, node *data_manage.EdbClassifyItems) {
  8. childs, _ := edbClassifyHaveChild(allNode, node) //判断节点是否有子节点并返回
  9. allEdbInfo, _ := GetEdbClassifyEdbInfo()
  10. if len(childs) > 0 {
  11. node.Children = append(node.Children, childs[0:]...) //添加子节点
  12. for _, v := range childs { //查询子节点的子节点,并添加到子节点
  13. _, has := edbClassifyHaveChild(allNode, v)
  14. if has {
  15. EdbClassifyListMakeTree(allNode, v) //递归添加节点
  16. } else {
  17. edbInfoList := allEdbInfo[v.ClassifyId]
  18. v.Children = edbInfoList
  19. if v.Children == nil {
  20. childrenArr := make([]*data_manage.EdbClassifyItems, 0)
  21. v.Children = childrenArr
  22. }
  23. }
  24. }
  25. } else {
  26. childrenArr := make([]*data_manage.EdbClassifyItems, 0)
  27. node.Children = childrenArr
  28. }
  29. }
  30. func edbClassifyHaveChild(allNode []*data_manage.EdbClassifyItems, node *data_manage.EdbClassifyItems) (childs []*data_manage.EdbClassifyItems, yes bool) {
  31. for _, v := range allNode {
  32. if v.ParentId == node.ClassifyId {
  33. childs = append(childs, v)
  34. }
  35. }
  36. if len(childs) > 0 {
  37. yes = true
  38. }
  39. return
  40. }
  41. func GetEdbClassifyEdbInfo() (result map[int][]*data_manage.EdbClassifyItems, err error) {
  42. cMap := make(map[int][]*data_manage.EdbClassifyItems)
  43. items, err := data_manage.GetEdbInfoAll()
  44. if err != nil {
  45. return
  46. }
  47. for _, v := range items {
  48. childrenArr := make([]*data_manage.EdbClassifyItems, 0)
  49. v.Children = childrenArr
  50. if items, ok := cMap[v.ClassifyId]; ok {
  51. items = append(items, v)
  52. cMap[v.ClassifyId] = items
  53. } else {
  54. infoList := make([]*data_manage.EdbClassifyItems, 0)
  55. infoList = append(infoList, v)
  56. cMap[v.ClassifyId] = infoList
  57. }
  58. }
  59. result = cMap
  60. return
  61. }
  62. func EdbClassifyItemsMakeTree(allNode []*data_manage.EdbClassifyItems, node *data_manage.EdbClassifyItems) {
  63. childs, _ := edbClassifyHaveChild(allNode, node) //判断节点是否有子节点并返回
  64. if len(childs) > 0 {
  65. node.Children = append(node.Children, childs[0:]...) //添加子节点
  66. for _, v := range childs { //查询子节点的子节点,并添加到子节点
  67. _, has := edbClassifyHaveChild(allNode, v)
  68. if has {
  69. EdbClassifyItemsMakeTree(allNode, v) //递归添加节点
  70. } else {
  71. childrenArr := make([]*data_manage.EdbClassifyItems, 0)
  72. v.Children = childrenArr
  73. }
  74. }
  75. } else {
  76. childrenArr := make([]*data_manage.EdbClassifyItems, 0)
  77. node.Children = childrenArr
  78. }
  79. }
  80. // GetEdbClassifyListByAdminId 根据账户类型获取分类id集合
  81. func GetEdbClassifyListByAdminId(adminId int64) (classifyIdList []string, err error) {
  82. list, err := models.GetEdbdataClassify(adminId)
  83. if err != nil {
  84. return
  85. }
  86. for _, parent := range list {
  87. if parent.Child != nil {
  88. for _, classify := range parent.Child {
  89. classifyIdList = append(classifyIdList, fmt.Sprint(classify.ClassifyId))
  90. }
  91. }
  92. }
  93. return
  94. }
  95. // GetEdbClassifyNameListByAdminId 根据账户类型获取分类名称集合
  96. func GetEdbClassifyNameListByAdminId(adminId int64) (classifyNameList []string, edbDataClassifyMap map[string]*models.EdbdataClassify, err error) {
  97. list, err := models.GetEdbdataClassify(adminId)
  98. edbDataClassifyMap = make(map[string]*models.EdbdataClassify)
  99. if err != nil {
  100. return
  101. }
  102. for _, parent := range list {
  103. if parent.Child != nil {
  104. for _, classify := range parent.Child {
  105. classifyNameList = append(classifyNameList, classify.ClassifyName)
  106. edbDataClassifyMap[classify.ClassifyName] = classify
  107. }
  108. }
  109. }
  110. return
  111. }