user_source_click_flow.go 5.4 KB

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