micro_roadshow.go 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. package services
  2. import (
  3. "encoding/json"
  4. "errors"
  5. "fmt"
  6. "hongze/hongze_cygx/models"
  7. "hongze/hongze_cygx/utils"
  8. )
  9. // GetMicroRoadShowDefaultImgConfig 获取微路演默认图/分享图配置
  10. func GetMicroRoadShowDefaultImgConfig() (audioMap, videoMap, audioShareMap, videoShareMap map[int]string, err error) {
  11. audioMap = make(map[int]string, 0)
  12. videoMap = make(map[int]string, 0)
  13. audioShareMap = make(map[int]string, 0)
  14. videoShareMap = make(map[int]string, 0)
  15. key := models.MicroRoadshowDefaultImgKey
  16. conf, e := models.GetConfigByCode(key)
  17. if e != nil {
  18. err = errors.New("获取微路演默认图配置失败, Err: " + e.Error())
  19. return
  20. }
  21. if conf.ConfigValue == "" {
  22. err = errors.New("获取微路演默认图配置有误")
  23. return
  24. }
  25. list := new(models.MicroRoadShowDefaultImgList)
  26. if e = json.Unmarshal([]byte(conf.ConfigValue), &list); e != nil {
  27. err = errors.New("微路演默认图配置配置值解析失败, Err: " + e.Error())
  28. return
  29. }
  30. audioList := list.Audio
  31. for i := range audioList {
  32. audioMap[audioList[i].ChartPermissionId] = audioList[i].ImgUrl
  33. audioShareMap[audioList[i].ChartPermissionId] = audioList[i].ShareImg
  34. }
  35. videoList := list.Video
  36. for i := range videoList {
  37. videoMap[videoList[i].ChartPermissionId] = videoList[i].ImgUrl
  38. videoShareMap[videoList[i].ChartPermissionId] = videoList[i].ShareImg
  39. }
  40. return
  41. }
  42. // GetHomeNewestList 获取首页最新列表
  43. func GetHomeNewestList(userId, companyId, startSize, pageSize int, condition string, pars []interface{}) (resp []*models.HomeArticle, total int, err error) {
  44. resp = make([]*models.HomeArticle, 0)
  45. unionList, e := models.GetHomeNewestListUnionList(condition, pars, startSize, pageSize)
  46. if e != nil {
  47. err = errors.New("获取首页最新列表失败")
  48. return
  49. }
  50. unionTotal, e := models.GetHomeNewestListUnionCount(condition, pars)
  51. if e != nil {
  52. err = errors.New("获取首页最新列表总数失败")
  53. return
  54. }
  55. total = unionTotal
  56. // 用户权限
  57. authInfo, permissionArr, e := GetUserRaiPermissionInfo(userId, companyId)
  58. if e != nil {
  59. err = errors.New("获取用户权限失败, Err: " + e.Error())
  60. return
  61. }
  62. // 获取默认图配置
  63. audioMap, videoMap, audioShareMap, videoShareMap, e := GetMicroRoadShowDefaultImgConfig()
  64. if e != nil {
  65. err = errors.New("获取微路演默认图配置失败, Err: " + e.Error())
  66. return
  67. }
  68. // 此处没有直接使用HomeArticle结构体而是多加了一层, 纯粹是为了方便前端区分纪要和微路演音频=_=!
  69. for _, v := range unionList {
  70. item := new(models.HomeArticle)
  71. item.HomeType = v.HomeType
  72. // 纪要
  73. if item.HomeType == 0 {
  74. item.ArticleId = v.ArticleId
  75. item.Title = v.Title
  76. item.TitleEn = v.TitleEn
  77. item.UpdateFrequency = v.UpdateFrequency
  78. item.CreateDate = v.CreateDate
  79. item.PublishDate = v.PublishDate
  80. item.Body = v.Body
  81. item.BodyHtml = v.BodyHtml
  82. item.Abstract = v.Abstract
  83. item.CategoryName = v.CategoryName
  84. item.SubCategoryName = v.SubCategoryName
  85. item.ExpertBackground = v.ExpertBackground
  86. item.IsResearch = v.IsResearch
  87. item.Pv = v.Pv
  88. item.ImgUrlPc = v.ImgUrlPc
  89. item.CategoryId = v.CategoryId
  90. item.HttpUrl = v.HttpUrl
  91. item.IsNeedJump = v.IsNeedJump
  92. item.Source = v.Source
  93. item.Annotation = v.Annotation
  94. }
  95. // 音频
  96. if v.HomeType == 1 {
  97. ad := new(models.MicroAudioUnionList)
  98. ad.Id = v.Id
  99. ad.AudioTitle = v.AudioTitle
  100. ad.AudioResourceUrl = v.AudioResourceUrl
  101. ad.AudioType = v.AudioType
  102. ad.AudioPublishTime = utils.StrTimeToTime(v.AudioPublishTime).Format(utils.FormatDate)
  103. ad.AudioImgUrl = v.AudioImgUrl
  104. ad.AudioChartPermissionId = v.AudioChartPermissionId
  105. ad.AudioChartPermissionName = v.AudioChartPermissionName
  106. ad.AudioPlaySeconds = v.AudioPlaySeconds
  107. ad.AudioPlaySeconds = v.AudioPlaySeconds
  108. ad.AudioActivityId = v.AudioActivityId
  109. item.MicroAudio = ad
  110. // 默认图
  111. if ad.AudioImgUrl == "" {
  112. if ad.AudioType == 1 {
  113. ad.AudioImgUrl = audioMap[ad.AudioChartPermissionId]
  114. } else {
  115. ad.AudioImgUrl = videoMap[ad.AudioChartPermissionId]
  116. }
  117. }
  118. // 分享图
  119. if ad.AudioType == 1 {
  120. ad.AudioShareImg = audioShareMap[ad.AudioChartPermissionId]
  121. } else {
  122. ad.AudioShareImg = videoShareMap[ad.AudioChartPermissionId]
  123. }
  124. // 权限
  125. au := new(models.UserPermissionAuthInfo)
  126. au.SellerName = authInfo.SellerName
  127. au.SellerMobile = authInfo.SellerMobile
  128. au.HasPermission = authInfo.HasPermission
  129. au.OperationMode = authInfo.OperationMode
  130. if au.HasPermission == 1 {
  131. // 非宏观权限进一步判断是否有权限
  132. if ad.AudioChartPermissionId != utils.HONG_GUAN_ID && !utils.InArrayByStr(permissionArr, ad.AudioChartPermissionName) {
  133. au.HasPermission = 2
  134. }
  135. }
  136. // 无权限的弹框提示
  137. if au.HasPermission != 1 {
  138. if au.OperationMode == UserPermissionOperationModeCall {
  139. if ad.AudioType == 1 {
  140. au.PopupMsg = UserPermissionPopupMsgCallActivity
  141. } else {
  142. au.PopupMsg = UserPermissionPopupMsgCallMicroVideo
  143. }
  144. } else {
  145. if ad.AudioType == 1 {
  146. au.PopupMsg = UserPermissionPopupMsgApplyActivity
  147. } else {
  148. au.PopupMsg = UserPermissionPopupMsgApplyMicroVideo
  149. }
  150. }
  151. }
  152. ad.AuthInfo = au
  153. }
  154. resp = append(resp, item)
  155. }
  156. return
  157. }
  158. // GetMicroRoadShowPageList 获取微路演列表添加活动视频 更新与8.1版本
  159. func GetMicroRoadShowPageListV8(pageSize, currentIndex, audioId, videoId, activityVideoId, filter int, keywords string) (respList []*models.MicroRoadShowPageList, total int, err error) {
  160. var e error
  161. // 根据每页数据量获取音视频配比
  162. startSize := utils.StartIndex(currentIndex, pageSize)
  163. videoList := make([]*models.MicroRoadShowPageList, 0)
  164. if keywords != "" {
  165. keywords = "%" + keywords + "%"
  166. }
  167. //音频的查询
  168. var audioCond string
  169. var audioPars []interface{}
  170. // 如果筛选条件为指定视频ID或只看视频则不做音频查询
  171. fmt.Println("filter:", filter)
  172. if videoId > 0 || activityVideoId > 0 || filter == 1{
  173. fmt.Println("11111")
  174. audioCond = ""
  175. } else {
  176. // 活动已发布且已结束
  177. audioCond += ` AND b.publish_status = 1 AND b.active_state = 3`
  178. //活动音频,设置有效时间为30天,失效后该活动就不再支持音频回放。有效期起始时间为活动的开始时间
  179. //endTime := time.Now().AddDate(0, 0, -30).Format("2006-01-02 15:04:05")
  180. //audioCond += ` AND b.activity_time > ? `
  181. //audioPars = append(audioPars, endTime)
  182. if keywords != "" {
  183. audioCond += ` AND a.voice_name LIKE ? OR b.label LIKE ?`
  184. audioPars = append(audioPars, keywords, keywords)
  185. }
  186. if audioId > 0 {
  187. audioCond += ` AND a.activity_voice_id = ?`
  188. audioPars = append(audioPars, audioId)
  189. }
  190. }
  191. //视频的处理
  192. var videoCond string
  193. var videoCondAct string
  194. var videoPars []interface{}
  195. var videoParsAct []interface{}
  196. if audioId > 0 || filter == 2{
  197. fmt.Println("22222")
  198. videoCond = ""
  199. } else {
  200. if keywords != "" {
  201. videoCond += ` AND video_name LIKE ?`
  202. videoPars = append(videoPars, keywords)
  203. videoCondAct += ` AND video_name LIKE ?`
  204. videoParsAct = append(videoParsAct, keywords)
  205. }
  206. if videoId > 0 {
  207. videoCond += ` AND video_id = ?`
  208. videoPars = append(videoPars, videoId)
  209. }
  210. if activityVideoId > 0 {
  211. videoCondAct += ` AND video_id = ?`
  212. videoParsAct = append(videoParsAct, activityVideoId)
  213. }
  214. //如果传了路演的或者活动的视频ID只查询一个
  215. if videoId > 0 {
  216. videoCondAct += ` AND video_id = 0 `
  217. }
  218. if activityVideoId > 0 {
  219. videoCond += ` AND video_id = 0 `
  220. }
  221. //if videoId == 0 {
  222. // endTime := time.Now().AddDate(0, 0, -30).Format("2006-01-02 15:04:05")
  223. // videoCondAct += ` AND art.activity_time > ? `
  224. // videoParsAct = append(videoParsAct, endTime)
  225. //}
  226. videoCond += ` AND publish_status = 1`
  227. }
  228. total, videoList, e = models.GetMicroRoadShowVideoPageListV8(startSize, pageSize, videoCond, videoPars, videoCondAct, videoParsAct, audioCond, audioPars, audioId, videoId, activityVideoId, filter)
  229. if e != nil {
  230. err = errors.New("获取微路演音视频列表失败, Err: " + e.Error())
  231. return
  232. }
  233. respList = videoList
  234. return
  235. }