report.go 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. package services
  2. import (
  3. "encoding/json"
  4. "errors"
  5. "eta/eta_mini_bridge/models"
  6. "eta/eta_mini_bridge/models/response"
  7. "eta/eta_mini_bridge/services/elastic"
  8. "eta/eta_mini_bridge/utils"
  9. "html"
  10. "strings"
  11. "time"
  12. "github.com/rdlucklib/rdluck_tools/paging"
  13. )
  14. // addAliasToKeyword 品种别名
  15. func addAliasToKeyword(keyword string) string {
  16. if keyword == "" {
  17. return ""
  18. }
  19. keywordArr := make([]string, 0)
  20. keywordArr = append(keywordArr, keyword)
  21. if strings.Contains(keyword, "沥青") || strings.Contains(keyword, "BU") {
  22. keywordArr = append(keywordArr, "沥青", "BU")
  23. }
  24. if strings.Contains(keyword, "MEG") || strings.Contains(keyword, "EG") || strings.Contains(keyword, "乙二醇") {
  25. keywordArr = append(keywordArr, "MEG", "EG", "乙二醇")
  26. }
  27. if strings.Contains(keyword, "聚酯") || strings.Contains(keyword, "长丝") || strings.Contains(keyword, "短纤") || strings.Contains(keyword, "瓶片") {
  28. keywordArr = append(keywordArr, "聚酯", "长丝", "短纤", "瓶片")
  29. }
  30. if strings.Contains(keyword, "纯苯") || strings.Contains(keyword, "苯乙烯") || strings.Contains(keyword, "EB") {
  31. keywordArr = append(keywordArr, "纯苯", "苯乙烯", "EB")
  32. }
  33. if strings.Contains(keyword, "甲醇") || strings.Contains(keyword, "MA") {
  34. keywordArr = append(keywordArr, "甲醇", "MA")
  35. }
  36. if strings.Contains(keyword, "橡胶") || strings.Contains(keyword, "RU") {
  37. keywordArr = append(keywordArr, "橡胶", "RU")
  38. }
  39. if strings.Contains(keyword, "聚乙烯") || strings.Contains(keyword, "PP") || strings.Contains(keyword, "PE") {
  40. keywordArr = append(keywordArr, "聚乙烯", "PP", "PE")
  41. }
  42. if strings.Contains(keyword, "玻璃") || strings.Contains(keyword, "纯碱") || strings.Contains(keyword, "FG") || strings.Contains(keyword, "SA") {
  43. keywordArr = append(keywordArr, "玻璃", "纯碱", "FG", "SA")
  44. }
  45. keyword = strings.Join(keywordArr, ",")
  46. return keyword
  47. }
  48. func SearchReport(keyWord string, pageIndex, pageSize int) (ret *response.ReportSearchResp, err error, errMsg string) {
  49. //查询正常状态的分类
  50. keyWord = addAliasToKeyword(keyWord)
  51. searchResp, total, err := elastic.SearchReport(keyWord, []int{}, []int{}, pageIndex, pageSize)
  52. if err != nil {
  53. errMsg = err.Error()
  54. err = errors.New("查询失败")
  55. return
  56. }
  57. var reportList []*models.ReportCollectListItem
  58. if searchResp.Hits != nil {
  59. for _, v := range searchResp.Hits.Hits {
  60. temp := new(models.ReportCollectListItem)
  61. itemJson, tmpErr := v.Source.MarshalJSON()
  62. if tmpErr != nil {
  63. errMsg = tmpErr.Error()
  64. err = errors.New("解析出错")
  65. return
  66. }
  67. reportItem := new(response.EsReportItem)
  68. tmpErr = json.Unmarshal(itemJson, &reportItem)
  69. if tmpErr != nil {
  70. errMsg = tmpErr.Error()
  71. err = errors.New("解析json出错")
  72. return
  73. }
  74. temp.ReportId = reportItem.ReportId
  75. temp.ReportChapterId = reportItem.ReportChapterId
  76. temp.ClassifyIdFirst = reportItem.ClassifyIdFirst
  77. temp.ClassifyNameFirst = reportItem.ClassifyNameFirst
  78. temp.ClassifyIdSecond = reportItem.ClassifyIdSecond
  79. temp.ClassifyNameSecond = reportItem.ClassifyNameSecond
  80. temp.Title = reportItem.Title
  81. temp.ContentSub = reportItem.BodyContent
  82. temp.PublishTime, err = time.ParseInLocation(utils.FormatDateTime, reportItem.PublishTime, time.Local)
  83. temp.Abstract = reportItem.Abstract
  84. temp.Author = reportItem.Author
  85. temp.Stage = reportItem.StageStr
  86. if len(v.Highlight["Title"]) > 0 {
  87. temp.Title = v.Highlight["Title"][0]
  88. }
  89. if len(v.Highlight["BodyContent"]) > 0 {
  90. temp.ContentSub = v.Highlight["BodyContent"][0]
  91. }
  92. //if len(v.Highlight["Categories"]) > 0 {
  93. // if temp.ClassifyNameSecond != "" {
  94. // temp.ClassifyNameSecond = "<span style=\"color:#E3B377\">"+temp.ClassifyNameSecond+"</span>"
  95. // }
  96. // if temp.ClassifyNameFirst != "" {
  97. // temp.ClassifyNameFirst = "<span style=\"color:#E3B377\">"+temp.ClassifyNameFirst+"</span>"
  98. // }
  99. //}
  100. temp.ContentSub = GetReportContentSub(temp.ContentSub, false)
  101. reportList = append(reportList, temp)
  102. }
  103. }
  104. ret = new(response.ReportSearchResp)
  105. ret.List = reportList
  106. ret.Paging = paging.GetPaging(pageIndex, pageSize, int(total))
  107. return
  108. }
  109. // GetReportContentSub 特殊处理contentSub
  110. func GetReportContentSub(content string, scapeFlag bool) (contentSub string) {
  111. if scapeFlag {
  112. content = html.UnescapeString(content)
  113. content = utils.TrimHtml(content) //只展示纯文本
  114. }
  115. contentSub = "<div style=\"-webkit-line-clamp: 3;-webkit-box-orient: vertical;display: -webkit-box;overflow: hidden;text-overflow: ellipsis;\">" + content + "</div>"
  116. return
  117. }