user_source_click_flow.go 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. package services
  2. import (
  3. "eta/eta_mini_crm_ht/models"
  4. "eta/eta_mini_crm_ht/utils"
  5. "strings"
  6. "sync"
  7. )
  8. func GetUserSourceClickFlowListCountByUserId(userId int, condition string, pars []interface{}, permissionIds []int, product models.SourceType) (total int, conditionNew string, parsNew []interface{}, err error) {
  9. if len(permissionIds) == 0 {
  10. total, err = models.GetUserSourceClickFlowListCountByUserId(userId, condition, pars)
  11. conditionNew = condition
  12. parsNew = pars
  13. return
  14. }
  15. if product == models.AudioSourceType || product == models.VideoSourceType {
  16. mediaType := transMediaType(product)
  17. videoIds, queryErr := GetMediaIdsByPermissionIds(permissionIds, mediaType)
  18. if queryErr != nil || len(videoIds) == 0 {
  19. return
  20. }
  21. condition = condition + " and source_id in (" + utils.GetOrmReplaceHolder(len(videoIds)) + ") "
  22. pars = append(pars, videoIds)
  23. } else if product == models.ReportSourceType {
  24. reportIds, queryErr := GetReportIdsByPermissionIds(permissionIds)
  25. if queryErr != nil || len(reportIds) == 0 {
  26. return
  27. }
  28. condition = condition + " and source_id in (" + utils.GetOrmReplaceHolder(len(reportIds)) + ") "
  29. pars = append(pars, reportIds)
  30. } else {
  31. reportIds, reportErr := GetReportIdsByPermissionIds(permissionIds)
  32. addReport := false
  33. addVideo := false
  34. addAudio := false
  35. var permissionCondition string
  36. var permissionPars []interface{}
  37. if reportErr == nil && len(reportIds) > 0 {
  38. permissionCondition = permissionCondition + " (source_id in (" + utils.GetOrmReplaceHolder(len(reportIds)) + ") and source_type=?)"
  39. permissionPars = append(permissionPars, reportIds)
  40. permissionPars = append(permissionPars, models.ReportSourceType)
  41. addReport = true
  42. }
  43. videoIds, videoErr := GetMediaIdsByPermissionIds(permissionIds, models.Video)
  44. if videoErr == nil && len(videoIds) > 0 {
  45. if addReport {
  46. permissionCondition = permissionCondition + "or (source_id in (" + utils.GetOrmReplaceHolder(len(videoIds)) + ") and source_type=?)"
  47. } else {
  48. permissionCondition = permissionCondition + " (source_id in (" + utils.GetOrmReplaceHolder(len(videoIds)) + ") and source_type=?)"
  49. }
  50. permissionPars = append(permissionPars, videoIds)
  51. permissionPars = append(permissionPars, models.VideoSourceType)
  52. addVideo = true
  53. }
  54. audioIds, audioErr := GetMediaIdsByPermissionIds(permissionIds, models.Audio)
  55. if audioErr == nil && len(audioIds) > 0 {
  56. if addReport || addVideo {
  57. permissionCondition = permissionCondition + "or (source_id in (" + utils.GetOrmReplaceHolder(len(audioIds)) + ") and source_type=?)"
  58. } else {
  59. permissionCondition = permissionCondition + " (source_id in (" + utils.GetOrmReplaceHolder(len(audioIds)) + ") and source_type=?)"
  60. }
  61. permissionPars = append(permissionPars, audioIds)
  62. permissionPars = append(permissionPars, models.AudioSourceType)
  63. addAudio = true
  64. }
  65. if addReport || addVideo || addAudio {
  66. condition = condition + " and ( " + permissionCondition + " ) "
  67. pars = append(pars, permissionPars...)
  68. }
  69. }
  70. if condition == "" {
  71. utils.FileLog.Warn("没有符合要求的阅读记录")
  72. return
  73. }
  74. total, err = models.GetUserSourceClickFlowListCountByUserId(userId, condition, pars)
  75. conditionNew = condition
  76. parsNew = pars
  77. return
  78. }
  79. func GetUserSourceClickFlowListByUserId(userId int, condition string, pars []interface{}, startSize, pageSize int) (items []models.UserSourceClickFlowView, err error) {
  80. list, err := models.GetUserSourceClickFlowListByUserId(userId, condition, pars, startSize, pageSize)
  81. if err != nil {
  82. return
  83. }
  84. var wg sync.WaitGroup
  85. wg.Add(len(list))
  86. for _, item := range list {
  87. go func(item *models.UserSourceClickFlow) {
  88. defer wg.Done()
  89. viewItem := item.ToView()
  90. switch item.SourceType {
  91. case models.ReportSourceType:
  92. viewItem.PermissionNames = getReportPermissionNames(item.SourceId)
  93. case models.AudioSourceType, models.VideoSourceType:
  94. mediaType := transMediaType(item.SourceType)
  95. viewItem.PermissionNames = getMediaPermissionNames(item.SourceId, mediaType)
  96. }
  97. items = append(items, viewItem)
  98. }(item)
  99. }
  100. wg.Wait()
  101. return
  102. }
  103. func transMediaType(sourceType models.SourceType) models.MediaType {
  104. switch sourceType {
  105. case models.AudioSourceType:
  106. return models.Audio
  107. case models.VideoSourceType:
  108. return models.Video
  109. default:
  110. return ""
  111. }
  112. }
  113. func getReportPermissionNames(reportId int) (permissionNames string) {
  114. report, err := models.GetReportById(reportId)
  115. if err != nil {
  116. return
  117. }
  118. if report.Source == models.SourceETA {
  119. permissionIds, queryErr := models.GetByPermissionIdsByClassifyId(report.OrgId)
  120. if queryErr != nil {
  121. return
  122. }
  123. permissionNameList, nameErr := models.GetPermissionNames(permissionIds)
  124. if nameErr != nil {
  125. utils.FileLog.Error("获取品种名称列表失败", err.Error())
  126. return
  127. }
  128. permissionNames = strings.Join(permissionNameList, ",")
  129. return
  130. }
  131. if report.Source == models.SourceHT {
  132. return report.PlateName
  133. }
  134. return
  135. }
  136. func getMediaPermissionNames(mediaId int, mediaType models.MediaType) (permissionNames string) {
  137. media, err := models.GetMediaById(mediaType, mediaId)
  138. if err != nil {
  139. utils.FileLog.Error("获取媒体失败,Err:" + err.Error())
  140. return
  141. }
  142. permissionIds, queryErr := models.GetPermissionIdsByMediaId(media.MediaType, media.Id)
  143. if queryErr != nil {
  144. utils.FileLog.Error("获取媒体权限失败,Err:" + queryErr.Error())
  145. return
  146. }
  147. permissionNameList, nameErr := models.GetPermissionNames(permissionIds)
  148. if nameErr != nil {
  149. utils.FileLog.Error("获取品种名称列表信息失败", nameErr.Error())
  150. return
  151. }
  152. permissionNames = strings.Join(permissionNameList, ",")
  153. return
  154. }