tag.go 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. package services
  2. import (
  3. "errors"
  4. "fmt"
  5. "hongze/hongze_cygx/models"
  6. "hongze/hongze_cygx/utils"
  7. "strconv"
  8. "strings"
  9. "time"
  10. )
  11. func AddCygxTagHistory(user *models.WxUserItem, tagId int) (err error) {
  12. if user.UserId == 0 {
  13. return
  14. }
  15. defer func() {
  16. if err != nil {
  17. go utils.SendAlarmMsg("tag点击信息记录失败"+err.Error()+"tagId"+strconv.Itoa(tagId)+"userId:"+strconv.Itoa(user.UserId), 2)
  18. }
  19. }()
  20. historyRecord := new(models.CygxTagHistory)
  21. historyRecord.UserId = user.UserId
  22. historyRecord.TagId = tagId
  23. historyRecord.CreateTime = time.Now()
  24. historyRecord.Mobile = user.Mobile
  25. historyRecord.Email = user.Email
  26. historyRecord.CompanyId = user.CompanyId
  27. historyRecord.CompanyName = user.CompanyName
  28. historyRecord.RegisterPlatform = utils.REGISTER_PLATFORM
  29. sellerItem, err := models.GetSellerByCompanyIdCheckFicc(user.CompanyId, 2)
  30. if err != nil && err.Error() != utils.ErrNoRow() {
  31. return
  32. }
  33. historyRecord.RealName = user.RealName
  34. if sellerItem != nil {
  35. historyRecord.SellerName = sellerItem.RealName
  36. }
  37. _, err = models.AddCygxTagHistory(historyRecord)
  38. return
  39. }
  40. //func init() {
  41. // conditionInit, err := GetConditionInitByTagIds("20,21,26")
  42. // fmt.Println(err)
  43. // fmt.Println()
  44. // fmt.Println(conditionInit)
  45. //}
  46. func GetConditionInitByTagIds(tagIds string) (conditionInit string, err error) {
  47. if tagIds == "" {
  48. return
  49. }
  50. var condition string
  51. var pars []interface{}
  52. var searchTag, industries, subjectNames []string
  53. tagslice := strings.Split(tagIds, ",")
  54. condition = ` AND tag_id IN (` + utils.GetOrmInReplace(len(tagslice)) + `)`
  55. pars = append(pars, tagslice)
  56. listTag, e := models.GetCygxTagListCondition(condition, pars, 0, 0)
  57. if e != nil {
  58. err = errors.New("GetActivityListByCondition, Err: " + e.Error())
  59. return
  60. }
  61. for _, tagInfo := range listTag {
  62. //ActivityTypes 与 ArticleTypes 进行合并
  63. if tagInfo.ActivityTypes != "" {
  64. searchTag = append(searchTag, tagInfo.ActivityTypes)
  65. }
  66. if tagInfo.ArticleTypes != "" {
  67. searchTag = append(searchTag, tagInfo.ArticleTypes)
  68. }
  69. if tagInfo.Industries != "" {
  70. industries = append(industries, tagInfo.Industries)
  71. }
  72. if tagInfo.SubjectNames != "" {
  73. subjectNames = append(subjectNames, tagInfo.SubjectNames)
  74. }
  75. }
  76. //拼接search_tag 搜索内容
  77. if len(searchTag) > 0 {
  78. conditionInit += " AND search_tag IN ('" + strings.Join(searchTag, "','") + "')"
  79. }
  80. var resourceDataIds []int //cygx_resource_data 主键ID
  81. //如果产业有组合,那么就去捞产业相关的内容
  82. if len(industries) > 0 {
  83. // 获取近一个月产业报告阅读次数最多的产业
  84. var conditionIndustry string
  85. var parsIndustry []interface{}
  86. conditionIndustry += " AND industry_name IN ('" + strings.Join(industries, "','") + "')"
  87. listIndustry, e := models.GetTopOneMonthArtReadNumIndustryAll(conditionIndustry, parsIndustry)
  88. if e != nil {
  89. err = errors.New("GetTopOneMonthArtReadNumIndustryAll, Err: " + e.Error())
  90. return
  91. }
  92. var industrialManagementIds []int // 产业ID合集
  93. for _, v := range listIndustry {
  94. industrialManagementIds = append(industrialManagementIds, v.IndustrialManagementId)
  95. }
  96. var conditionIndustryResource string
  97. var parsIndustryResource []interface{}
  98. lenArrindustrial := len(industrialManagementIds)
  99. conditionIndustryResource = ` AND industrial_management_id IN (` + utils.GetOrmInReplace(lenArrindustrial) + `)`
  100. parsIndustryResource = append(parsIndustryResource, industrialManagementIds)
  101. if lenArrindustrial > 0 {
  102. listResourceDataIndustrial, e := models.GetCygxResourceDataIndustrialGroupManagementList(conditionIndustryResource, parsIndustryResource, 0, 0)
  103. //return
  104. if e != nil {
  105. err = errors.New("GetCygxResourceDataIndustrialGroupManagementList, Err: " + e.Error())
  106. return
  107. }
  108. for _, v := range listResourceDataIndustrial {
  109. resourceDataIds = append(resourceDataIds, v.ResourceDataId)
  110. }
  111. }
  112. }
  113. //return
  114. //如果标的有组合,那么就去捞标的相关的内容
  115. if len(subjectNames) > 0 {
  116. // 获取近一个月产业报告阅读次数最多的产业
  117. var conditionsubject string
  118. var parssubject []interface{}
  119. conditionsubject += " AND subject_name IN ('" + strings.Join(subjectNames, "','") + "')"
  120. listsubject, e := models.GetCygxIndustrialSubjectListCondition(conditionsubject, parssubject)
  121. if e != nil {
  122. err = errors.New("GetTopOneMonthArtReadNumIndustry, Err: " + e.Error())
  123. return
  124. }
  125. var industrialsubjectIds []int // 标的ID集合
  126. for _, v := range listsubject {
  127. industrialsubjectIds = append(industrialsubjectIds, v.IndustrialSubjectId)
  128. }
  129. var conditionsubjectResource string
  130. var parssubjectResource []interface{}
  131. lenArrsubject := len(industrialsubjectIds)
  132. conditionsubjectResource = ` AND industrial_subject_id IN (` + utils.GetOrmInReplace(lenArrsubject) + `)`
  133. parssubjectResource = append(parssubjectResource, industrialsubjectIds)
  134. if lenArrsubject > 0 {
  135. listResourceDatasubject, e := models.GetCygxResourceDataIndustrialGroupSubjectList(conditionsubjectResource, parssubjectResource, 0, 0)
  136. if e != nil {
  137. err = errors.New("GetCygxResourceDataIndustrialGroupSubjectList, Err: " + e.Error())
  138. return
  139. }
  140. for _, v := range listResourceDatasubject {
  141. resourceDataIds = append(resourceDataIds, v.ResourceDataId)
  142. }
  143. }
  144. }
  145. //拼接 cygx_resource_data 表主键查询ID
  146. if len(resourceDataIds) > 0 {
  147. var resourceDataIdStrs []string
  148. resourceDataIdMap := make(map[int]bool)
  149. for _, v := range resourceDataIds {
  150. if resourceDataIdMap[v] {
  151. continue
  152. }
  153. resourceDataIdStrs = append(resourceDataIdStrs, strconv.Itoa(v))
  154. resourceDataIdMap[v] = true
  155. }
  156. conditionInit += " AND id IN (" + strings.Join(resourceDataIdStrs, ",") + ") "
  157. }
  158. return
  159. }