helpCenter.go 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. package helpCenter
  2. import (
  3. util "app.yhyue.com/moapp/jybase/common"
  4. "app.yhyue.com/moapp/jybase/encrypt"
  5. "app.yhyue.com/moapp/jypkg/public"
  6. "fmt"
  7. "jy/src/jfw/config"
  8. "jy/src/jfw/jyutil"
  9. "log"
  10. "time"
  11. )
  12. var (
  13. mongodb = public.MQFW
  14. se = &encrypt.SimpleEncrypt{Key: "topnet2015topnet2015"}
  15. )
  16. // HelpHome 帮助中心 栏目
  17. // helpId栏目id isHome 是否帮助中心首页请求 num 获取数量
  18. func HelpHome(helpCode string, isHome bool, num int) []jyutil.HelpColumn {
  19. log.Printf("帮助中心参数helpCode:%s,isHome:%v,num:%d", helpCode, isHome, num)
  20. //获取帮助中心所有栏目
  21. if helpCode == "" {
  22. //获取帮助中心栏目id
  23. columnCode, _ := config.Sysconfig["columnCode"].(map[string]interface{})
  24. helpCode = util.InterfaceToStr(columnCode["帮助中心"])
  25. } else {
  26. var ss jyutil.HelpColumn
  27. data, ok := mongodb.FindOne("column", map[string]interface{}{
  28. "s_columncode": helpCode,
  29. })
  30. if ok && data != nil && len(*data) > 0 {
  31. //栏目页 获取下一级所有栏目
  32. ss.Name = util.InterfaceToStr((*data)["s_columnname"])
  33. ss.Code = util.InterfaceToStr((*data)["s_columncode"])
  34. ss.Href = fmt.Sprintf("/helpCenter/catalog/%s", ss.Code)
  35. if dataSeed := RecursiveQuery(ss.Code, true, num); dataSeed != nil && len(dataSeed) > 0 {
  36. ss.SeedData = dataSeed
  37. }
  38. }
  39. return []jyutil.HelpColumn{ss}
  40. }
  41. if isHome { //首页 最多获取两级目录
  42. data, ok := mongodb.Find("column", map[string]interface{}{
  43. "pid": helpCode,
  44. }, `{"i_order":1}`, nil, false, -1, -1)
  45. if ok && data != nil && len(*data) > 0 {
  46. var allColumn []jyutil.HelpColumn
  47. for _, v := range *data {
  48. var ss jyutil.HelpColumn
  49. ss.Name = util.InterfaceToStr(v["s_columnname"])
  50. ss.Code = util.InterfaceToStr(v["s_columncode"])
  51. ss.Href = fmt.Sprintf("/helpCenter/catalog/%s", ss.Code)
  52. if dataSeed := RecursiveQuery(ss.Code, true, num); dataSeed != nil && len(dataSeed) > 0 {
  53. ss.SeedData = dataSeed
  54. }
  55. allColumn = append(allColumn, ss)
  56. }
  57. return allColumn
  58. }
  59. }
  60. return RecursiveQuery(helpCode, isHome, num)
  61. }
  62. // RecursiveQuery pid:父级id isHome 是否首页展示(首页展示只获取一层子集) num 栏目&文章获取数量限制
  63. func RecursiveQuery(pid string, isHome bool, num int) []jyutil.HelpColumn {
  64. if pid == "" {
  65. return nil
  66. }
  67. start, end := -1, -1
  68. if num != 0 {
  69. start, end = 0, num
  70. }
  71. var allColumn []jyutil.HelpColumn
  72. data, ok := mongodb.Find("column", map[string]interface{}{
  73. "pid": pid,
  74. }, `{"i_order":1}`, nil, false, start, end)
  75. if ok && data != nil && len(*data) > 0 {
  76. //存在子栏目
  77. for _, v := range *data {
  78. var ss jyutil.HelpColumn
  79. ss.Code = util.InterfaceToStr(v["s_columncode"]) //栏目情况下不需要id 只需要code
  80. ss.Name = util.InterfaceToStr(v["s_columnname"])
  81. ss.Href = fmt.Sprintf("/helpCenter/catalog/%s", ss.Code)
  82. if !isHome {
  83. //子栏目信息
  84. ss.SeedData = RecursiveQuery(ss.Code, isHome, num)
  85. }
  86. //栏目信息
  87. allColumn = append(allColumn, ss)
  88. }
  89. return allColumn
  90. }
  91. //无子栏目信息 获取文章信息
  92. dataArticle, ok := mongodb.FindOne("column", map[string]interface{}{
  93. "s_columncode": pid,
  94. })
  95. if ok && dataArticle != nil && len(*dataArticle) > 0 {
  96. columnCode := util.InterfaceToStr((*dataArticle)["s_columncode"])
  97. typeName := util.InterfaceToStr((*dataArticle)["s_columnlevel"])
  98. dataAll, ok1 := mongodb.Find("content", map[string]interface{}{
  99. typeName: columnCode,
  100. "i_status": 1, "releasetime": map[string]interface{}{"$lt": time.Now().Unix()},
  101. }, `{"releasetime":-1,"l_createdate":-1}`, nil, false, start, num)
  102. if ok1 && dataAll != nil && len(*dataAll) > 0 {
  103. for _, v := range *dataAll {
  104. var ss jyutil.HelpColumn
  105. //文章信息
  106. ss.IsColumn = 1
  107. ss.Id = se.EncodeString(util.InterfaceToStr(v["_id"]))
  108. ss.Name = util.InterfaceToStr(v["s_title"])
  109. ss.Href = fmt.Sprintf("/helpCenter/detail/%s.html", ss.Id)
  110. ss.Code = columnCode
  111. allColumn = append(allColumn, ss)
  112. }
  113. }
  114. }
  115. return allColumn
  116. }