classify.go 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package pc
  2. import (
  3. "errors"
  4. "fmt"
  5. "hongze/hongze_yb/global"
  6. "hongze/hongze_yb/models/response/pc"
  7. "hongze/hongze_yb/models/tables/rddp/classify"
  8. "hongze/hongze_yb/services/user"
  9. "sort"
  10. )
  11. // GetClassifyFirstList 获取一级分类列表
  12. func GetClassifyFirstList(user user.UserInfo) (list pc.ClassifyFirstList, err error) {
  13. var errMsg string
  14. defer func() {
  15. if err != nil {
  16. global.LOG.Critical(fmt.Sprintf("GetClassifyFirstList: userId=%d, err:%s, errMsg:%s", user.UserID, err.Error(), errMsg))
  17. }
  18. }()
  19. classifyParents, err := classify.GetParentList()
  20. if err != nil {
  21. errMsg = err.Error()
  22. err = errors.New("分类查询出错")
  23. return
  24. }
  25. if len(classifyParents) == 0 {
  26. err = errors.New("分类不存在")
  27. return
  28. }
  29. classifyIconMap := make(map[string]string)
  30. classifySortMap := make(map[string]int)
  31. var names []string
  32. for _, v := range classifyParents {
  33. classifyIconMap[v.ClassifyName] = v.YbFiccPcIcon
  34. classifySortMap[v.ClassifyName] = v.YbFiccSort
  35. names = append(names, v.ClassifyName)
  36. }
  37. reportList,err := pc.GetLatestStage(names)
  38. if err != nil {
  39. errMsg = err.Error()
  40. err = errors.New("报告查询出错")
  41. return
  42. }
  43. for _, item := range classifyParents {
  44. temp := new(pc.ClassifyFirstListItem)
  45. temp.ClassifyIdFirst = item.Id
  46. temp.ClassifyNameFirst = item.ClassifyName
  47. temp.BackImgUrl = classifyIconMap[item.ClassifyName]
  48. temp.Sort = classifySortMap[item.ClassifyName]
  49. if temp.Sort == 0 {
  50. continue
  51. }
  52. // ShowType展示类型:1-列表 2-专栏; RedirectType跳转类型:1-专栏列表 2-报告列表 3-专栏详情
  53. temp.RedirectType = 2
  54. if item.ShowType == 2 {
  55. temp.RedirectType = 1
  56. classifyChild, _ := classify.GetChildByPid(item.Id)
  57. if classifyChild != nil && len(classifyChild) == 1 {
  58. // 存在二级分类且仅有一个时直接跳转专栏详情
  59. temp.ClassifyIdSecond = classifyChild[0].Id
  60. temp.ClassifyNameSecond = classifyChild[0].ClassifyName
  61. temp.RedirectType = 3
  62. }
  63. }
  64. list = append(list, temp)
  65. }
  66. for _, item := range list {
  67. for _, report := range reportList {
  68. if report.ClassifyNameFirst == item.ClassifyNameFirst {
  69. item.Latest = report.Stage
  70. }
  71. }
  72. }
  73. if len(list) > 0 {
  74. sort.Sort(list)
  75. }
  76. return
  77. }