micro_roadshow.go 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468
  1. package services
  2. import (
  3. "encoding/json"
  4. "errors"
  5. "hongze/hongze_clpt/models"
  6. "hongze/hongze_clpt/utils"
  7. )
  8. // GetMicroRoadShowDefaultImgConfig 获取微路演默认图/分享图配置
  9. func GetMicroRoadShowDefaultImgConfig() (audioMap, videoMap, audioShareMap, videoShareMap map[int]string, err error) {
  10. audioMap = make(map[int]string, 0)
  11. videoMap = make(map[int]string, 0)
  12. audioShareMap = make(map[int]string, 0)
  13. videoShareMap = make(map[int]string, 0)
  14. key := models.MicroRoadshowDefaultImgKey
  15. conf, e := models.GetConfigByCode(key)
  16. if e != nil {
  17. err = errors.New("获取微路演默认图配置失败, Err: " + e.Error())
  18. return
  19. }
  20. if conf.ConfigValue == "" {
  21. err = errors.New("获取微路演默认图配置有误")
  22. return
  23. }
  24. list := new(models.MicroRoadShowDefaultImgList)
  25. if e = json.Unmarshal([]byte(conf.ConfigValue), &list); e != nil {
  26. err = errors.New("微路演默认图配置配置值解析失败, Err: " + e.Error())
  27. return
  28. }
  29. audioList := list.Audio
  30. for i := range audioList {
  31. audioMap[audioList[i].ChartPermissionId] = audioList[i].ImgUrl
  32. audioShareMap[audioList[i].ChartPermissionId] = audioList[i].ShareImg
  33. }
  34. videoList := list.Video
  35. for i := range videoList {
  36. videoMap[videoList[i].ChartPermissionId] = videoList[i].ImgUrl
  37. videoShareMap[videoList[i].ChartPermissionId] = videoList[i].ShareImg
  38. }
  39. return
  40. }
  41. func GetindustryVideo(user *models.WxUserItem, industrialManagementId int) (industryVideo *models.MicroVideoSimpleInfo, AuthInfo *models.UserPermissionAuthInfo, err error) {
  42. total, e := models.GetMicroRoadshowVideoByIndustryIdCount(industrialManagementId)
  43. if e != nil {
  44. err = errors.New("获取产业关联的视频失败,GetMicroRoadshowVideoByIndustryIdCount " + e.Error())
  45. return
  46. }
  47. if total == 0 {
  48. return
  49. }
  50. // 用户权限
  51. authInfo, permissionArr, e := GetUserRaiPermissionInfo(user.UserId, user.CompanyId)
  52. if e != nil {
  53. err = errors.New("获取用户权限失败,GetUserRaiPermissionInfo " + e.Error())
  54. return
  55. }
  56. videoSimple := new(models.MicroVideoSimpleInfo)
  57. // 权限
  58. var au *models.UserPermissionAuthInfo
  59. video, e := models.GetMicroRoadshowVideoByIndustryId(industrialManagementId)
  60. if e != nil {
  61. err = errors.New("获取产业关联的视频失败,GetMicroRoadshowVideoByIndustryId " + e.Error())
  62. return
  63. } else {
  64. videoSimple.Id = video.VideoId
  65. videoSimple.Title = "5min【" + video.IndustryName + "】逻辑解析"
  66. videoSimple.BackgroundImg = video.ImgUrl
  67. videoSimple.DetailImgUrl = video.DetailImgUrl
  68. if videoSimple.BackgroundImg == "" {
  69. // 获取默认图配置
  70. _, videoMap, _, _, e := GetMicroRoadShowDefaultImgConfig()
  71. if e != nil {
  72. err = errors.New("获取视频默认配置图失败,GetMicroRoadshowVideoByIndustryId " + e.Error())
  73. return
  74. }
  75. videoSimple.BackgroundImg = videoMap[video.ChartPermissionId]
  76. }
  77. videoSimple.PlaySeconds = video.VideoDuration
  78. videoSimple.ResourceUrl = video.VideoUrl
  79. au = new(models.UserPermissionAuthInfo)
  80. au.SellerName = authInfo.SellerName
  81. au.SellerMobile = authInfo.SellerMobile
  82. au.HasPermission = authInfo.HasPermission
  83. au.OperationMode = authInfo.OperationMode
  84. if au.HasPermission == 1 {
  85. // 非宏观权限进一步判断是否有权限
  86. if video.ChartPermissionId != utils.HONG_GUAN_ID && !utils.InArrayByStr(permissionArr, video.ChartPermissionName) {
  87. au.HasPermission = 2
  88. }
  89. }
  90. // 无权限的弹框提示
  91. if au.HasPermission != 1 {
  92. if au.OperationMode == UserPermissionOperationModeCall {
  93. au.PopupMsg = UserPermissionPopupMsgCallMicroVideo
  94. } else {
  95. au.PopupMsg = UserPermissionPopupMsgApplyMicroVideo
  96. }
  97. videoSimple.ResourceUrl = ""
  98. }
  99. }
  100. industryVideo = videoSimple
  101. AuthInfo = au
  102. return
  103. }
  104. // GetindustryVideoDetailById 通过视频ID获取视频详情
  105. func GetindustryVideoDetailById(user *models.WxUserItem, videoId int) (industryVideo *models.MicroVideoSimpleInfo, AuthInfo *models.UserPermissionAuthInfo, err error) {
  106. total, e := models.GetMicroRoadshowVideoByVideoIdCount(videoId)
  107. if e != nil {
  108. err = errors.New("获取产业关联的视频失败,GetMicroRoadshowVideoByIndustryIdCount " + e.Error())
  109. return
  110. }
  111. if total == 0 {
  112. err = errors.New("视频不存在,或已取消发布")
  113. return
  114. }
  115. // 用户权限
  116. authInfo, permissionArr, e := GetUserRaiPermissionInfo(user.UserId, user.CompanyId)
  117. if e != nil {
  118. err = errors.New("获取用户权限失败,GetUserRaiPermissionInfo " + e.Error())
  119. return
  120. }
  121. videoSimple := new(models.MicroVideoSimpleInfo)
  122. // 权限
  123. var au *models.UserPermissionAuthInfo
  124. video, e := models.GetMicroRoadshowVideoById(videoId)
  125. if e != nil {
  126. err = errors.New("获取产业关联的视频失败,GetMicroRoadshowVideoByIndustryId " + e.Error())
  127. return
  128. } else {
  129. videoSimple.Id = video.VideoId
  130. videoSimple.Title = "5min【" + video.IndustryName + "】逻辑解析"
  131. videoSimple.BackgroundImg = video.ImgUrl
  132. videoSimple.DetailImgUrl = video.DetailImgUrl
  133. if videoSimple.BackgroundImg == "" {
  134. // 获取默认图配置
  135. _, videoMap, _, _, e := GetMicroRoadShowDefaultImgConfig()
  136. if e != nil {
  137. err = errors.New("获取视频默认配置图失败,GetMicroRoadshowVideoByIndustryId " + e.Error())
  138. return
  139. }
  140. videoSimple.BackgroundImg = videoMap[video.ChartPermissionId]
  141. }
  142. videoSimple.PlaySeconds = video.VideoDuration
  143. videoSimple.ResourceUrl = video.VideoUrl
  144. au = new(models.UserPermissionAuthInfo)
  145. au.SellerName = authInfo.SellerName
  146. au.SellerMobile = authInfo.SellerMobile
  147. au.HasPermission = authInfo.HasPermission
  148. au.OperationMode = authInfo.OperationMode
  149. if au.HasPermission == 1 {
  150. // 非宏观权限进一步判断是否有权限
  151. if video.ChartPermissionId != utils.HONG_GUAN_ID && !utils.InArrayByStr(permissionArr, video.ChartPermissionName) {
  152. au.HasPermission = 2
  153. }
  154. }
  155. // 无权限的弹框提示
  156. if au.HasPermission != 1 {
  157. if au.OperationMode == UserPermissionOperationModeCall {
  158. au.PopupMsg = UserPermissionPopupMsgCallMicroVideo
  159. } else {
  160. au.PopupMsg = UserPermissionPopupMsgApplyMicroVideo
  161. }
  162. videoSimple.ResourceUrl = ""
  163. }
  164. }
  165. industryVideo = videoSimple
  166. AuthInfo = au
  167. return
  168. }
  169. // GetMicroRoadshowVideoMap 获取已经发布的微路演的产业ID
  170. func GetMicroRoadshowVideoMap() (items map[int]int, err error) {
  171. list, e := models.GetMicroRoadshowVideoList()
  172. if e != nil && e.Error() != utils.ErrNoRow() {
  173. err = errors.New("获取已经发布的微路演的产业失败,GetMicroRoadshowVideoList " + e.Error())
  174. return
  175. }
  176. mapindustrialId := make(map[int]int)
  177. for _, v := range list {
  178. mapindustrialId[v.IndustryId] = v.IndustryId
  179. }
  180. items = mapindustrialId
  181. return
  182. }
  183. // GetMicroRoadShowPageList 获取微路演列表添加活动视频 更新与8.1版本
  184. func GetMicroRoadShowPageListV8(pageSize, currentIndex, audioId, videoId, activityVideoId int, filter, keywords string) (respList []*models.MicroRoadShowPageList, total int, err error) {
  185. var e error
  186. // 根据每页数据量获取音视频配比
  187. startSize := utils.StartIndex(currentIndex, pageSize)
  188. videoList := make([]*models.MicroRoadShowPageList, 0)
  189. if keywords != "" {
  190. keywords = "%" + keywords + "%"
  191. }
  192. //音频的查询
  193. var audioCond string
  194. var audioPars []interface{}
  195. // 如果筛选条件为指定视频ID或只看视频则不做音频查询
  196. // 活动已发布且已结束
  197. audioCond += ` AND b.publish_status = 1 AND b.active_state = 3`
  198. //活动音频,设置有效时间为30天,失效后该活动就不再支持音频回放。有效期起始时间为活动的开始时间
  199. //endTime := time.Now().AddDate(0, 0, -30).Format("2006-01-02 15:04:05")
  200. //audioCond += ` AND b.activity_time > ? `
  201. //audioPars = append(audioPars, endTime)
  202. if keywords != "" {
  203. audioCond += ` AND ( a.voice_name LIKE ? OR b.label LIKE ? )`
  204. audioPars = append(audioPars, keywords, keywords)
  205. }
  206. if audioId > 0 {
  207. audioCond += ` AND a.activity_voice_id = ?`
  208. audioPars = append(audioPars, audioId)
  209. }
  210. //}
  211. //视频的处理
  212. var videoCond string
  213. var videoCondAct string
  214. var videoPars []interface{}
  215. var videoParsAct []interface{}
  216. if keywords != "" {
  217. videoCond += ` AND video_name LIKE ?`
  218. videoPars = append(videoPars, keywords)
  219. videoCondAct += ` AND ( video_name LIKE ? OR art.label LIKE ? )`
  220. videoParsAct = append(videoParsAct, keywords, keywords)
  221. }
  222. if videoId > 0 {
  223. videoCond += ` AND video_id = ?`
  224. videoPars = append(videoPars, videoId)
  225. }
  226. if activityVideoId > 0 {
  227. videoCondAct += ` AND video_id = ?`
  228. videoParsAct = append(videoParsAct, activityVideoId)
  229. }
  230. //如果传了路演的或者活动的视频ID只查询一个
  231. if videoId > 0 {
  232. videoCondAct += ` AND video_id = 0 `
  233. audioCond += ` AND a.activity_voice_id = 0 `
  234. }
  235. if activityVideoId > 0 {
  236. videoCond += ` AND video_id = 0 `
  237. audioCond += ` AND a.activity_voice_id = 0 `
  238. }
  239. if audioId > 0 {
  240. videoCondAct += ` AND video_id = 0 `
  241. videoCond += ` AND video_id = 0 `
  242. }
  243. if filter == "1" {
  244. audioCond += ` AND a.activity_voice_id = 0 `
  245. } else if filter == "2" {
  246. videoCondAct += ` AND video_id = 0 `
  247. videoCond += ` AND video_id = 0 `
  248. }
  249. videoCond += ` AND publish_status = 1`
  250. total, videoList, e = models.GetMicroRoadShowVideoPageListV8(startSize, pageSize, videoCond, videoPars, videoCondAct, videoParsAct, audioCond, audioPars, audioId, videoId, activityVideoId, 0)
  251. if e != nil {
  252. err = errors.New("获取微路演音视频列表失败, Err: " + e.Error())
  253. return
  254. }
  255. if total == 0 {
  256. return
  257. }
  258. var activityIds []int
  259. for _, v := range videoList {
  260. if v.Type == 2 {
  261. activityIds = append(activityIds, v.ActivityId)
  262. }
  263. }
  264. if len(activityIds) > 0 {
  265. // 获取活动关联的产业
  266. var groupCond string
  267. var groupPars []interface{}
  268. groupCond += ` AND a.activity_id IN (` + utils.GetOrmInReplace(len(activityIds)) + `)`
  269. groupPars = append(groupPars, activityIds)
  270. groups, e := models.GetActivityIndustryRelationList(groupCond, groupPars)
  271. if e != nil {
  272. err = errors.New("获取活动产业关联列表失败, Err: " + e.Error())
  273. return
  274. }
  275. activityIndustryMap := make(map[int]int, 0)
  276. for _, v := range groups {
  277. activityIndustryMap[v.ActivityId] = v.IndustrialManagementId
  278. }
  279. for _, v := range videoList {
  280. if v.Type == 2 {
  281. v.IndustrialManagementId = activityIndustryMap[v.ActivityId]
  282. }
  283. }
  284. }
  285. respList = videoList
  286. return
  287. }
  288. // GetMicroRoadShowPageListIkWord 添加IK分词联想词 获取微路演列表添加活动视频 更新与8.1版本
  289. func CountMicroRoadShowPageListIkWord(audioId, videoId, activityVideoId int, keywordArr []string, filter string) (total int, err error) {
  290. var e error
  291. var keywords string
  292. if len(keywordArr) > 0 {
  293. keywords = KeyWordArrSqlRegexpAll(keywordArr)
  294. }
  295. //if keywords == "" {
  296. // return
  297. //}
  298. //音频的查询
  299. var audioCond string
  300. var audioPars []interface{}
  301. // 如果筛选条件为指定视频ID或只看视频则不做音频查询
  302. //if videoId > 0 || activityVideoId > 0 || filter == 1 {
  303. // audioCond += ` AND a.activity_voice_id = 0 `
  304. //} else {
  305. // 活动已发布且已结束
  306. audioCond += ` AND b.publish_status = 1 AND b.active_state = 3`
  307. if keywords != "" {
  308. audioCond += ` AND (a.voice_name REGEXP ? OR b.label REGEXP ? ) `
  309. audioPars = append(audioPars, keywords, keywords)
  310. }
  311. if audioId > 0 {
  312. audioCond += ` AND a.activity_voice_id = ?`
  313. audioPars = append(audioPars, audioId)
  314. }
  315. //视频的处理
  316. var videoCond string
  317. var videoCondAct string
  318. var videoPars []interface{}
  319. var videoParsAct []interface{}
  320. //if audioId > 0 || filter == 2 {
  321. // videoCond = ""
  322. //} else {
  323. if keywords != "" {
  324. videoCond += ` AND video_name REGEXP ?`
  325. videoPars = append(videoPars, keywords)
  326. videoCondAct += ` AND ( video_name REGEXP ? OR art.label REGEXP ? )`
  327. videoParsAct = append(videoParsAct, keywords, keywords)
  328. }
  329. if videoId > 0 {
  330. videoCond += ` AND video_id = ?`
  331. videoPars = append(videoPars, videoId)
  332. }
  333. if activityVideoId > 0 {
  334. videoCondAct += ` AND video_id = ?`
  335. videoParsAct = append(videoParsAct, activityVideoId)
  336. }
  337. //如果传了路演的或者活动的视频ID只查询一个
  338. if videoId > 0 {
  339. videoCondAct += ` AND video_id = 0 `
  340. audioCond += ` AND a.activity_voice_id = 0 `
  341. }
  342. if activityVideoId > 0 {
  343. videoCond += ` AND video_id = 0 `
  344. audioCond += ` AND a.activity_voice_id = 0 `
  345. }
  346. if audioId > 0 {
  347. videoCondAct += ` AND video_id = 0 `
  348. videoCond += ` AND video_id = 0 `
  349. }
  350. if filter == "1" {
  351. audioCond += ` AND a.activity_voice_id = 0 `
  352. } else if filter == "2" {
  353. videoCondAct += ` AND video_id = 0 `
  354. videoCond += ` AND video_id = 0 `
  355. }
  356. videoCond += ` AND publish_status = 1`
  357. //}
  358. total, e = models.CountMicroRoadShowVideoPageList(videoCond, videoPars, videoCondAct, videoParsAct, audioCond, audioPars)
  359. if e != nil {
  360. err = errors.New("获取微路演音视频列表失败, Err: " + e.Error())
  361. return
  362. }
  363. return
  364. }
  365. // GetMicroRoadShowPageListIkWord 添加IK分词联想词 获取微路演列表添加活动视频 更新与8.1版本
  366. func GetMicroRoadShowPageListIkWord(startSize, pageSize, audioId, videoId, activityVideoId int, keywordArr []string, filter, keywords string) (respList []*models.MicroRoadShowPageList, err error) {
  367. videoList := make([]*models.MicroRoadShowPageList, 0)
  368. var e error
  369. var keywordsIk string
  370. if len(keywordArr) > 1 {
  371. keywordsIk = KeyWordArrSqlRegexp(keywordArr)
  372. }
  373. if keywords != "" {
  374. keywords = "%" + keywords + "%"
  375. }
  376. //音频的查询
  377. var audioCond string
  378. var audioPars []interface{}
  379. // 如果筛选条件为指定视频ID或只看视频则不做音频查询
  380. //if videoId > 0 || activityVideoId > 0 || filter == 1 {
  381. // audioCond += ` AND a.activity_voice_id = 0 `
  382. //} else {
  383. // 活动已发布且已结束
  384. audioCond += ` AND b.publish_status = 1 AND b.active_state = 3`
  385. if keywordsIk != "" {
  386. audioCond += ` AND ( a.voice_name REGEXP ? OR b.label REGEXP ? )`
  387. audioCond += ` AND ( a.voice_name NOT LIKE ? AND b.label NOT LIKE ? )`
  388. audioPars = append(audioPars, keywordsIk, keywordsIk, keywords, keywords)
  389. }
  390. if audioId > 0 {
  391. audioCond += ` AND a.activity_voice_id = ?`
  392. audioPars = append(audioPars, audioId)
  393. }
  394. //视频的处理
  395. var videoCond string
  396. var videoCondAct string
  397. var videoPars []interface{}
  398. var videoParsAct []interface{}
  399. //if audioId > 0 || filter == 2 {
  400. // videoCond = ""
  401. //} else {
  402. if keywordsIk != "" {
  403. videoCond += ` AND video_name REGEXP ?`
  404. videoPars = append(videoPars, keywordsIk)
  405. videoCondAct += ` AND ( v.video_name REGEXP ? OR art.label REGEXP ? )`
  406. videoCondAct += ` AND ( v.video_name NOT LIKE ? AND art.label NOT LIKE ? )`
  407. videoParsAct = append(videoParsAct, keywordsIk, keywordsIk, keywords, keywords)
  408. }
  409. if videoId > 0 {
  410. videoCond += ` AND video_id = ?`
  411. videoPars = append(videoPars, videoId)
  412. }
  413. if activityVideoId > 0 {
  414. videoCondAct += ` AND video_id = ?`
  415. videoParsAct = append(videoParsAct, activityVideoId)
  416. }
  417. //如果传了路演的或者活动的视频ID只查询一个
  418. if videoId > 0 {
  419. videoCondAct += ` AND video_id = 0 `
  420. audioCond += ` AND a.activity_voice_id = 0 `
  421. }
  422. if activityVideoId > 0 {
  423. videoCond += ` AND video_id = 0 `
  424. audioCond += ` AND a.activity_voice_id = 0 `
  425. }
  426. if audioId > 0 {
  427. videoCondAct += ` AND video_id = 0 `
  428. videoCond += ` AND video_id = 0 `
  429. }
  430. if filter == "1" {
  431. audioCond += ` AND a.activity_voice_id = 0 `
  432. } else if filter == "2" {
  433. videoCondAct += ` AND video_id = 0 `
  434. videoCond += ` AND video_id = 0 `
  435. }
  436. videoCond += ` AND publish_status = 1`
  437. //}
  438. videoList, e = models.GetMicroRoadShowVideoPageListIkWord(startSize, pageSize, videoCond, videoPars, videoCondAct, videoParsAct, audioCond, audioPars, audioId, videoId, activityVideoId, 0)
  439. if e != nil {
  440. err = errors.New("获取微路演音视频列表失败分词, Err: " + e.Error())
  441. return
  442. }
  443. respList = videoList
  444. return
  445. }