user_source_click_flow.go 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  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. total, err = models.GetUserSourceClickFlowListCountByUserId(userId, condition, pars)
  71. conditionNew = condition
  72. parsNew = pars
  73. return
  74. }
  75. func GetUserSourceClickFlowListByUserId(userId int, condition string, pars []interface{}, startSize, pageSize int) (items []models.UserSourceClickFlowView, err error) {
  76. list, err := models.GetUserSourceClickFlowListByUserId(userId, condition, pars, startSize, pageSize)
  77. if err != nil {
  78. return
  79. }
  80. var wg sync.WaitGroup
  81. wg.Add(len(list))
  82. for _, item := range list {
  83. go func(item *models.UserSourceClickFlow) {
  84. defer wg.Done()
  85. viewItem := item.ToView()
  86. switch item.SourceType {
  87. case models.ReportSourceType:
  88. viewItem.PermissionNames = getReportPermissionNames(item.SourceId)
  89. case models.AudioSourceType, models.VideoSourceType:
  90. mediaType := transMediaType(item.SourceType)
  91. viewItem.PermissionNames = getMediaPermissionNames(item.SourceId, mediaType)
  92. }
  93. items = append(items, viewItem)
  94. }(item)
  95. }
  96. wg.Wait()
  97. return
  98. }
  99. func transMediaType(sourceType models.SourceType) models.MediaType {
  100. switch sourceType {
  101. case models.AudioSourceType:
  102. return models.Audio
  103. case models.VideoSourceType:
  104. return models.Video
  105. default:
  106. return ""
  107. }
  108. }
  109. func getReportPermissionNames(reportId int) (permissionNames string) {
  110. report, err := models.GetReportById(reportId)
  111. if err != nil {
  112. return
  113. }
  114. if report.Source == models.SourceETA {
  115. permissionIds, queryErr := models.GetByPermissionIdsByClassifyId(report.OrgId)
  116. if queryErr != nil {
  117. return
  118. }
  119. permissionNameList, nameErr := models.GetPermissionNames(permissionIds)
  120. if nameErr != nil {
  121. utils.FileLog.Error("获取品种名称列表失败", err.Error())
  122. return
  123. }
  124. permissionNames = strings.Join(permissionNameList, ",")
  125. return
  126. }
  127. if report.Source == models.SourceHT {
  128. return report.PlateName
  129. }
  130. return
  131. }
  132. func getMediaPermissionNames(mediaId int, mediaType models.MediaType) (permissionNames string) {
  133. media, err := models.GetMediaById(mediaType, mediaId)
  134. if err != nil {
  135. utils.FileLog.Error("获取媒体失败,Err:" + err.Error())
  136. return
  137. }
  138. permissionIds, queryErr := models.GetPermissionIdsByMediaId(media.MediaType, media.Id)
  139. if queryErr != nil {
  140. utils.FileLog.Error("获取媒体权限失败,Err:" + queryErr.Error())
  141. return
  142. }
  143. permissionNameList, nameErr := models.GetPermissionNames(permissionIds)
  144. if nameErr != nil {
  145. utils.FileLog.Error("获取品种名称列表信息失败", nameErr.Error())
  146. return
  147. }
  148. permissionNames = strings.Join(permissionNameList, ",")
  149. return
  150. }