resource_data.go 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. package services
  2. import (
  3. "errors"
  4. "fmt"
  5. "hongze/hongze_web_mfyx/models"
  6. "hongze/hongze_web_mfyx/utils"
  7. "strconv"
  8. "strings"
  9. "time"
  10. )
  11. func GetResourceDataList(condition string, pars []interface{}, startSize, pageSize int, user *models.WxUserItem) (items []*models.CygxResourceDataNewResp, err error) {
  12. uid := user.UserId
  13. list, e := models.GetResourceDataList(condition, pars, startSize, pageSize)
  14. if e != nil {
  15. err = errors.New("GetResourceDataList, Err: " + e.Error())
  16. return
  17. }
  18. mapItems := make(map[string]*models.CygxResourceDataNewResp)
  19. for _, v := range list {
  20. //预处理文章
  21. item := new(models.CygxResourceDataNewResp)
  22. item.Id = v.Id
  23. item.SourceId = v.SourceId
  24. item.Source = v.Source
  25. //item.Title = v.Title
  26. //item.Annotation = v.Annotation
  27. //item.Abstract = v.Abstract
  28. item.PublishDate = utils.TimeRemoveHms2(v.PublishDate)
  29. mapItems[fmt.Sprint(v.Source, v.SourceId)] = item
  30. }
  31. var articleIds []int //报告
  32. var activityIds []int //活动
  33. var activityvideoIds []string // 活动视频
  34. var activityvoiceIds []string //活动音频
  35. var activityspecialIds []int //专项调研活动
  36. var reportselectionIds []int // 报告精选
  37. var yanxuanSpecialIds []int // 研选专栏
  38. //Source string `description:"资源类型 报告 :article 、图表 :newchart、微路演 :roadshow、活动 :activity、活动视频:activityvideo、活动音频:activityvoice、专项调研活动:activityspecial 、 本周研究汇总: researchsummary 、 上周纪要汇总 :minutessummary 、晨会精华 :meetingreviewchapt 、 产品内测:productinterior
  39. for _, v := range list {
  40. if v.Source == "article" {
  41. articleIds = append(articleIds, v.SourceId)
  42. } else if v.Source == "activity" {
  43. activityIds = append(activityIds, v.SourceId)
  44. } else if v.Source == "activityvideo" {
  45. activityvideoIds = append(activityvideoIds, strconv.Itoa(v.SourceId))
  46. } else if v.Source == "activityvoice" {
  47. activityvoiceIds = append(activityvoiceIds, strconv.Itoa(v.SourceId))
  48. } else if v.Source == "activityspecial" {
  49. activityspecialIds = append(activityspecialIds, v.SourceId)
  50. } else if v.Source == "reportselection" {
  51. reportselectionIds = append(reportselectionIds, v.SourceId)
  52. } else if v.Source == utils.CYGX_OBJ_YANXUANSPECIAL {
  53. yanxuanSpecialIds = append(yanxuanSpecialIds, v.SourceId)
  54. }
  55. }
  56. detail, e := models.GetConfigByCode("city_img_url")
  57. if e != nil {
  58. err = errors.New("GetResourceDataList, Err: " + e.Error())
  59. return
  60. }
  61. detailChart, e := models.GetConfigByCode("chart_img_url")
  62. if e != nil {
  63. err = errors.New("GetResourceDataList, Err: " + e.Error())
  64. return
  65. }
  66. addressList := strings.Split(detail.ConfigValue, "{|}")
  67. mapAddress := make(map[string]string)
  68. chartList := strings.Split(detailChart.ConfigValue, "{|}")
  69. mapChart := make(map[string]string)
  70. var cityName string
  71. var chartName string
  72. var imgUrl string
  73. var imgUrlChart string
  74. for _, v := range addressList {
  75. vslice := strings.Split(v, "_")
  76. cityName = vslice[0]
  77. imgUrl = vslice[len(vslice)-1]
  78. mapAddress[cityName] = imgUrl
  79. }
  80. for _, v := range chartList {
  81. vslice := strings.Split(v, "_")
  82. chartName = vslice[0]
  83. imgUrlChart = vslice[len(vslice)-1]
  84. mapChart[chartName] = imgUrlChart
  85. }
  86. var imgUrlResp string
  87. //处理文章
  88. if len(articleIds) > 0 {
  89. pars = make([]interface{}, 0)
  90. condition = ` AND a.article_id IN (` + utils.GetOrmInReplace(len(articleIds)) + `)`
  91. pars = append(pars, articleIds)
  92. articleList, e := models.GetHomeListPublic(condition, pars, 0, len(articleIds))
  93. if e != nil {
  94. err = errors.New("GetResourceDataList, Err: " + e.Error())
  95. return
  96. }
  97. articleList, e = HandleArticleCategoryImg(articleList, user)
  98. if e != nil {
  99. err = errors.New("HandleArticleCategoryImg, Err: " + e.Error())
  100. return
  101. }
  102. for _, v := range articleList {
  103. v.Body = ""
  104. mapItems[fmt.Sprint("article", v.ArticleId)].Article = v
  105. }
  106. }
  107. //处理活动
  108. if len(activityIds) > 0 {
  109. //for _, vss := range activityIds {
  110. // imgUrlResp += strconv.Itoa(vss) + ","
  111. //}
  112. pars = make([]interface{}, 0)
  113. condition = ` AND art.activity_id IN (` + utils.GetOrmInReplace(len(activityIds)) + `) `
  114. pars = append(pars, activityIds)
  115. activityList, e := models.GetActivityListNew(condition, pars, uid, 0, len(activityIds), 0, 0, "")
  116. if e != nil {
  117. err = errors.New("GetResourceDataList, Err: " + e.Error())
  118. return
  119. }
  120. var activityListRersp []*models.ActivityListResp
  121. //for _, v := range activityList {
  122. // activityListRersp = append(activityListRersp, ActivityButtonShow(v, user, make([]string, 0)))
  123. //}
  124. activityListRersp = ActivityArrButtonShow(activityList, user, make([]string, 0))
  125. //处理不同的报名方式按钮回显
  126. mapActivitySignup, e := GetActivitySignupResp(activityIds, user)
  127. if e != nil {
  128. err = errors.New("GetActivitySignupResp, Err: " + e.Error())
  129. return
  130. }
  131. for _, v := range activityListRersp {
  132. if v == nil {
  133. continue
  134. }
  135. if v.ActivityType == 0 {
  136. if mapAddress[v.City] != "" {
  137. imgUrlResp = mapAddress[v.City]
  138. } else {
  139. imgUrlResp = mapAddress["其它"]
  140. }
  141. } else {
  142. if mapChart[v.ChartPermissionName] != "" {
  143. imgUrlResp = mapChart[v.ChartPermissionName]
  144. }
  145. }
  146. v.ImgUrl = imgUrlResp
  147. v.SourceType = mapActivitySignup[v.ActivityId]
  148. mapItems[fmt.Sprint("activity", v.ActivityId)].Activity = v
  149. }
  150. }
  151. fmt.Println(time.Now().UnixMilli())
  152. //处理研选专栏
  153. lenyanxuanSpecialIds := len(yanxuanSpecialIds)
  154. if lenyanxuanSpecialIds > 0 {
  155. pars = make([]interface{}, 0)
  156. condition = ` AND a.id IN (` + utils.GetOrmInReplace(lenyanxuanSpecialIds) + `) `
  157. pars = append(pars, yanxuanSpecialIds)
  158. listyanxuanSpecial, e := models.GetYanxuanSpecialListHome(user.UserId, condition, pars, 0, 0)
  159. if e != nil {
  160. err = errors.New("GetYanxuanSpecialList, Err: " + e.Error())
  161. return
  162. }
  163. yanxuanSpecialPv := GetYanxuanSpecialRecordByYanxuanSpecialId(yanxuanSpecialIds) // 专栏Pv
  164. for _, v := range listyanxuanSpecial {
  165. v.PublishTime = utils.TimeRemoveHms2(v.PublishTime)
  166. v.Annotation, _ = GetReportContentTextSubNew(v.Content)
  167. v.Content = ""
  168. v.Pv = yanxuanSpecialPv[v.Id]
  169. v.LabelKeywordImgLink = utils.LABEL_ICO_4
  170. mapItems[fmt.Sprint(utils.CYGX_OBJ_YANXUANSPECIAL, v.Id)].YanxuanSpecial = v
  171. }
  172. }
  173. fmt.Println(time.Now().UnixMilli())
  174. for _, vList := range list {
  175. for _, v := range mapItems {
  176. //如果这些类型都为空,那么就不合并
  177. if v.Article == nil && v.Newchart == nil && v.Roadshow == nil && v.Activity == nil && v.Activityvideo == nil && v.Activityvoice == nil && v.Activityspecial == nil && v.Researchsummary == nil && v.Minutessummary == nil && v.Meetingreviewchapt == nil && v.ProductInterior == nil && v.IndustrialResource == nil && v.ReportSelection == nil && v.YanxuanSpecial == nil && v.AskserieVideo == nil {
  178. continue
  179. }
  180. if v.SourceId == vList.SourceId && v.Source == vList.Source {
  181. items = append(items, v)
  182. }
  183. }
  184. }
  185. return
  186. }