micro_roadshow.go 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520
  1. package models
  2. import (
  3. "github.com/beego/beego/v2/client/orm"
  4. "github.com/rdlucklib/rdluck_tools/paging"
  5. "hongze/hongze_cygx/utils"
  6. "time"
  7. )
  8. // MicroRoadShowListResp 微路演列表响应体
  9. type MicroRoadShowListResp struct {
  10. Paging *paging.PagingItem
  11. List []*MicroRoadShowPageList
  12. }
  13. type CygxMicroRoadshowVideo struct {
  14. VideoId int `orm:"column(video_id);pk"description:"微路演视频id"`
  15. VideoName string `description:"视频名称"`
  16. ChartPermissionId int `description:"行业Id"`
  17. ChartPermissionName string `description:"行业名称"`
  18. IndustryId int `description:"产业id"`
  19. IndustryName string `description:"产业名称"`
  20. PublishStatus int `description:"发布状态 1发布 0没有"`
  21. ModifyDate string `description:"更新时间"`
  22. PublishDate time.Time `description:"发布时间"`
  23. VideoDuration string `description:"视频时长"`
  24. VideoCounts int `description:"播放量"`
  25. VideoUrl string `description:"视频地址"`
  26. CreateTime string `description:"创建时间"`
  27. ImgUrl string `description:"视频封面图"`
  28. ShareImgUrl string `description:"视频分享图"`
  29. DetailImgUrl string `description:"产业详情页背景图"`
  30. CommentNum int `description:"留言总数"`
  31. IsSendWxMsg int `description:"是否推送过微信模板消息,1是,0:否"`
  32. }
  33. func GetMicroRoadshowVideoByVideoId(videoId int) (item *CygxMicroRoadshowVideo, err error) {
  34. o := orm.NewOrm()
  35. sql := `SELECT * from cygx_micro_roadshow_video where video_id = ? `
  36. err = o.Raw(sql, videoId).QueryRow(&item)
  37. return
  38. }
  39. // MicroRoadShowPageList 微路演列表
  40. type MicroRoadShowPageList struct {
  41. Id int `description:"音视频ID"`
  42. Title string `description:"标题"`
  43. ResourceUrl string `description:"链接"`
  44. Type int `description:"类型: 1-音频; 2-活动视频; 3-产业视频"`
  45. PublishTime string `description:"发布时间"`
  46. BackgroundImg string `description:"背景图"`
  47. ShareImg string `description:"分享封面图"`
  48. ChartPermissionId int `description:"行业ID"`
  49. ChartPermissionName string `description:"行业名称"`
  50. IndustryName string `description:"产业名称"`
  51. IndustryId int `description:"产业id"`
  52. PlaySeconds string `description:"音视频时长"`
  53. ActivityId int `description:"活动ID"`
  54. IsCollect bool `description:"是否收藏"`
  55. AuthInfo *UserPermissionAuthInfo
  56. }
  57. // GetMicroRoadShowVideoPageList 获取微路演视频列表-分页
  58. func GetMicroRoadShowVideoPageListV8(startSize, pageSize int, condition string, pars []interface{}, conditionAct string, parsAct []interface{}, conditionAudio string, parsAudio []interface{}) (total int, list []*MicroRoadShowPageList, err error) {
  59. o := orm.NewOrm()
  60. var sql string
  61. //if audioId+activityVideoId == 0 && filter != 2 {
  62. sql += `SELECT
  63. video_id AS id,
  64. video_name AS title,
  65. video_url AS resource_url,
  66. 3 AS type,
  67. publish_date AS publish_time,
  68. chart_permission_id,
  69. chart_permission_name,
  70. video_duration AS play_seconds,
  71. img_url AS background_img,
  72. industry_name,
  73. industry_id,
  74. share_img_url AS share_img,
  75. "" as activity_id
  76. FROM
  77. cygx_micro_roadshow_video
  78. WHERE
  79. publish_status = 1 `
  80. if condition != `` {
  81. sql += condition
  82. }
  83. //}
  84. //if audioId+videoId+activityVideoId == 0 && filter != 2 {
  85. // sql += ` UNION ALL `
  86. //}
  87. sql += ` UNION ALL `
  88. //if audioId+videoId == 0 && filter != 2 {
  89. sql += `
  90. SELECT
  91. video_id AS id,
  92. video_name AS title,
  93. video_url AS resource_url,
  94. 2 AS type,
  95. art.activity_time as publish_time,
  96. art.chart_permission_id,
  97. art.chart_permission_name,
  98. "" AS play_seconds,
  99. v.background_img,
  100. "" AS industry_name,
  101. "",
  102. v.share_img,
  103. v.activity_id
  104. FROM
  105. cygx_activity_video as v
  106. INNER JOIN cygx_activity as art on art.activity_id = v.activity_id WHERE 1= 1 `
  107. if conditionAct != `` {
  108. sql += conditionAct
  109. }
  110. //}
  111. //if audioId+videoId+activityVideoId == 0 && filter == 0 {
  112. // sql += ` UNION ALL `
  113. //}
  114. sql += ` UNION ALL `
  115. //if videoId+activityVideoId == 0 && filter != 1 {
  116. sql += `
  117. SELECT
  118. a.activity_voice_id AS id,
  119. a.voice_name AS title,
  120. a.voice_url AS resource_url,
  121. 1 AS type,
  122. b.activity_time AS publish_time,
  123. b.chart_permission_id,
  124. b.chart_permission_name,
  125. a.voice_play_seconds AS play_seconds,
  126. a.background_img,
  127. "" AS industry_name,
  128. "",
  129. a.share_img,
  130. a.activity_id
  131. FROM
  132. cygx_activity_voice AS a
  133. JOIN cygx_activity AS b ON a.activity_id = b.activity_id WHERE 1= 1 `
  134. if conditionAudio != `` {
  135. sql += conditionAudio
  136. }
  137. //}
  138. sql += ` ORDER BY publish_time DESC`
  139. totalSql := `SELECT COUNT(1) total FROM (` + sql + `) z `
  140. err = o.Raw(totalSql, pars, parsAct, parsAudio).QueryRow(&total)
  141. if err != nil {
  142. return
  143. }
  144. sql += ` LIMIT ?,?`
  145. _, err = o.Raw(sql, pars, parsAct, parsAudio, startSize, pageSize).QueryRows(&list)
  146. return
  147. }
  148. // CountMicroRoadShowVideoPageList 获取微路演视频数量
  149. func CountMicroRoadShowVideoPageList(condition string, pars []interface{}, conditionAct string, parsAct []interface{}, conditionAudio string, parsAudio []interface{}) (total int, err error) {
  150. o := orm.NewOrm()
  151. var sql string
  152. sql += `SELECT
  153. video_id AS id,
  154. video_name AS title,
  155. video_url AS resource_url,
  156. 3 AS type,
  157. publish_date AS publish_time,
  158. chart_permission_id,
  159. chart_permission_name,
  160. video_duration AS play_seconds,
  161. img_url AS background_img,
  162. industry_name,
  163. share_img_url AS share_img,
  164. "" as activity_id
  165. FROM
  166. cygx_micro_roadshow_video
  167. WHERE
  168. publish_status = 1 `
  169. if condition != `` {
  170. sql += condition
  171. }
  172. sql += ` UNION ALL `
  173. sql += `
  174. SELECT
  175. video_id AS id,
  176. video_name AS title,
  177. video_url AS resource_url,
  178. 2 AS type,
  179. art.activity_time as publish_time,
  180. art.chart_permission_id,
  181. art.chart_permission_name,
  182. "" AS play_seconds,
  183. v.background_img,
  184. "" AS industry_name,
  185. v.share_img,
  186. v.activity_id
  187. FROM
  188. cygx_activity_video as v
  189. INNER JOIN cygx_activity as art on art.activity_id = v.activity_id WHERE 1= 1 `
  190. if conditionAct != `` {
  191. sql += conditionAct
  192. }
  193. sql += ` UNION ALL `
  194. sql += `
  195. SELECT
  196. a.activity_voice_id AS id,
  197. a.voice_name AS title,
  198. a.voice_url AS resource_url,
  199. 1 AS type,
  200. b.activity_time AS publish_time,
  201. b.chart_permission_id,
  202. b.chart_permission_name,
  203. a.voice_play_seconds AS play_seconds,
  204. a.background_img,
  205. "" AS industry_name,
  206. a.share_img,
  207. a.activity_id
  208. FROM
  209. cygx_activity_voice AS a
  210. JOIN cygx_activity AS b ON a.activity_id = b.activity_id WHERE 1= 1 `
  211. if conditionAudio != `` {
  212. sql += conditionAudio
  213. }
  214. sql += ` ORDER BY publish_time DESC`
  215. totalSql := `SELECT COUNT(1) total FROM (` + sql + `) z `
  216. err = o.Raw(totalSql, pars, parsAct, parsAudio).QueryRow(&total)
  217. return
  218. }
  219. // GetMicroRoadShowVideoPageList 获取微路演视频列表-分页
  220. func GetMicroRoadShowVideoPageListIkWord(startSize, pageSize int, condition string, pars []interface{}, conditionAct string, parsAct []interface{}, conditionAudio string, parsAudio []interface{}) (list []*MicroRoadShowPageList, err error) {
  221. o := orm.NewOrm()
  222. var sql string
  223. //if audioId+activityVideoId == 0 && filter != 2 {
  224. sql += `SELECT
  225. video_id AS id,
  226. video_name AS title,
  227. video_url AS resource_url,
  228. 3 AS type,
  229. publish_date AS publish_time,
  230. chart_permission_id,
  231. chart_permission_name,
  232. video_duration AS play_seconds,
  233. img_url AS background_img,
  234. industry_name,
  235. share_img_url AS share_img,
  236. "" as activity_id
  237. FROM
  238. cygx_micro_roadshow_video
  239. WHERE
  240. publish_status = 1 `
  241. if condition != `` {
  242. sql += condition
  243. }
  244. //}
  245. //if audioId+videoId+activityVideoId == 0 && filter != 2 {
  246. // sql += ` UNION ALL `
  247. //}
  248. sql += ` UNION ALL `
  249. //if audioId+videoId == 0 && filter != 2 {
  250. sql += `
  251. SELECT
  252. video_id AS id,
  253. video_name AS title,
  254. video_url AS resource_url,
  255. 2 AS type,
  256. art.activity_time as publish_time,
  257. art.chart_permission_id,
  258. art.chart_permission_name,
  259. "" AS play_seconds,
  260. v.background_img,
  261. "" AS industry_name,
  262. v.share_img,
  263. v.activity_id
  264. FROM
  265. cygx_activity_video as v
  266. INNER JOIN cygx_activity as art on art.activity_id = v.activity_id WHERE 1= 1 `
  267. if conditionAct != `` {
  268. sql += conditionAct
  269. }
  270. //}
  271. //if audioId+videoId+activityVideoId == 0 && filter == 0 {
  272. // sql += ` UNION ALL `
  273. //}
  274. sql += ` UNION ALL `
  275. //if videoId+activityVideoId == 0 && filter != 1 {
  276. sql += `
  277. SELECT
  278. a.activity_voice_id AS id,
  279. a.voice_name AS title,
  280. a.voice_url AS resource_url,
  281. 1 AS type,
  282. b.activity_time AS publish_time,
  283. b.chart_permission_id,
  284. b.chart_permission_name,
  285. a.voice_play_seconds AS play_seconds,
  286. a.background_img,
  287. "" AS industry_name,
  288. a.share_img,
  289. a.activity_id
  290. FROM
  291. cygx_activity_voice AS a
  292. JOIN cygx_activity AS b ON a.activity_id = b.activity_id WHERE 1= 1 `
  293. if conditionAudio != `` {
  294. sql += conditionAudio
  295. }
  296. //}
  297. sql += ` ORDER BY publish_time DESC`
  298. sql += ` LIMIT ?,?`
  299. _, err = o.Raw(sql, pars, parsAct, parsAudio, startSize, pageSize).QueryRows(&list)
  300. return
  301. }
  302. type AddVideoHistoryReq struct {
  303. VideoId int `description:"视频ID"`
  304. PlaySeconds int `description:"播放时长"`
  305. SourceType int `description:"视频来源: 1-微路演; 2-活动 (不传默认为1)"`
  306. }
  307. func GetLastCygxMicroRoadshowVideoHistory(videoId, userId int) (item *CygxMicroRoadshowVideoHistory, err error) {
  308. o := orm.NewOrm()
  309. sql := ` SELECT * FROM cygx_micro_roadshow_video_history WHERE video_id=? AND user_id=? ORDER BY create_time DESC limit 1 `
  310. err = o.Raw(sql, videoId, userId).QueryRow(&item)
  311. return
  312. }
  313. func AddCygxMicroRoadshowVideoHistory(item *CygxMicroRoadshowVideoHistory) (err error) {
  314. o := orm.NewOrm()
  315. _, err = o.Insert(item)
  316. return
  317. }
  318. // MicroAudioUnionList 微路演音频联合列表
  319. type MicroAudioUnionList struct {
  320. Id int `description:"音视频ID"`
  321. AudioTitle string `description:"标题"`
  322. AudioResourceUrl string `description:"链接"`
  323. AudioType int `description:"类型: 1-音频; 2-视频"`
  324. AudioPublishTime string `description:"发布时间"`
  325. AudioImgUrl string `description:"背景图"`
  326. AudioShareImg string `description:"分享图"`
  327. AudioChartPermissionId int `description:"行业ID"`
  328. AudioChartPermissionName string `description:"行业名称"`
  329. AudioPlaySeconds string `description:"音视频时长"`
  330. AudioActivityId int `description:"活动ID"`
  331. AuthInfo *UserPermissionAuthInfo
  332. }
  333. // HomeNewestUnionList 首页最新纪要-音频联合查询结果
  334. type HomeNewestUnionList struct {
  335. ArticleId int `description:"文章id"`
  336. Title string `description:"标题"`
  337. TitleEn string `description:"英文标题 "`
  338. UpdateFrequency string `description:"更新周期"`
  339. CreateDate string `description:"创建时间"`
  340. PublishDate string `description:"发布时间"`
  341. Body string `description:"内容"`
  342. BodyHtml string `description:"内容带有HTML标签"`
  343. Abstract string `description:"摘要"`
  344. CategoryName string `description:"一级分类"`
  345. SubCategoryName string `description:"二级分类"`
  346. ExpertBackground string `description:"专家背景"`
  347. IsResearch bool `description:"是否属于研选"`
  348. Pv int `description:"PV"`
  349. ImgUrlPc string `description:"图片链接"`
  350. CategoryId string `description:"文章分类"`
  351. HttpUrl string `description:"文章链接跳转地址"`
  352. IsNeedJump bool `description:"是否需要跳转链接地址"`
  353. Source int `description:"来源 1:文章, 2:图表"`
  354. Annotation string `description:"核心观点"`
  355. HomeType int `description:"数据类型:0-纪要(默认); 1-微路演音频"`
  356. MicroAudioUnionList
  357. }
  358. // GetHomeNewestListUnionList 首页最新纪要-音频联合查询
  359. func GetHomeNewestListUnionList(condition string, pars []interface{}, startSize, pageSize int) (list []*HomeNewestUnionList, err error) {
  360. sql := `SELECT
  361. id, article_id, title, title_en, update_frequency, create_date, publish_date, body, abstract, category_name, sub_category_name, expert_background, category_id, source, annotation,
  362. (SELECT count(1) FROM cygx_article_history_record_newpv as h WHERE h.article_id = art.article_id ) as pv,
  363. 0 AS home_type, "" AS audio_title, "" AS audio_resource_url, 0 AS audio_type, "" AS audio_publish_time, 0 AS audio_chart_permission_id, "" AS audio_chart_permission_name,
  364. "" AS audio_play_seconds, "" AS audio_img_url, 0 AS audio_activity_id
  365. FROM
  366. cygx_article AS art
  367. WHERE
  368. art.publish_status = 1 `
  369. if condition != `` {
  370. sql += condition
  371. }
  372. sql += ` UNION ALL
  373. SELECT
  374. a.activity_voice_id, 0, "", "", "", "", b.activity_time, "", "", "", "", "", 0, 0, "",
  375. 0, 1, a.voice_name, a.voice_url, 1, b.activity_time,
  376. b.chart_permission_id, b.chart_permission_name, a.voice_play_seconds AS audio_play_seconds, a.img_url AS audio_img_url, a.activity_id AS audio_activity_id
  377. FROM
  378. cygx_activity_voice AS a
  379. JOIN cygx_activity AS b ON a.activity_id = b.activity_id`
  380. sql += ` ORDER BY publish_date DESC`
  381. sql += ` LIMIT ?,?`
  382. _, err = orm.NewOrm().Raw(sql, pars, startSize, pageSize).QueryRows(&list)
  383. return
  384. }
  385. // GetHomeNewestListUnionCount 首页最新纪要-音频联合查询总数
  386. func GetHomeNewestListUnionCount(condition string, pars []interface{}) (count int, err error) {
  387. o := orm.NewOrm()
  388. sql := `SELECT
  389. COUNT(1) AS count
  390. FROM
  391. (
  392. SELECT
  393. art.id
  394. FROM
  395. cygx_article AS art
  396. WHERE
  397. art.publish_status = 1 `
  398. if condition != `` {
  399. sql += condition
  400. }
  401. sql += ` UNION ALL
  402. SELECT
  403. a.activity_voice_id
  404. FROM
  405. cygx_activity_voice AS a
  406. JOIN cygx_activity AS b ON a.activity_id = b.activity_id
  407. ) z `
  408. err = o.Raw(sql, pars).QueryRow(&count)
  409. return
  410. }
  411. func UpdateLastCygxActivityVideoHistory(playSeconds string, lastId int) (err error) {
  412. o := orm.NewOrm()
  413. sql := ` UPDATE cygx_micro_roadshow_video_history SET play_seconds =? WHERE id=? `
  414. _, err = o.Raw(sql, playSeconds, lastId).Exec()
  415. return
  416. }
  417. // MicroRoadshowVideo 微路演视频
  418. type MicroRoadshowVideo struct {
  419. VideoId int `orm:"column(video_id);pk" description:"视频ID"`
  420. VideoName string `description:"视频标题"`
  421. ChartPermissionId int `description:"行业ID"`
  422. ChartPermissionName string `description:"行业名称"`
  423. IndustryId int `description:"产业ID"`
  424. IndustryName string `description:"产业名称"`
  425. PublishStatus int `description:"发布状态:0-未发布;1-已发布"`
  426. ModifyDate time.Time `description:"更新时间"`
  427. PublishDate time.Time `description:"发布时间"`
  428. VideoCounts int `description:"视频播放量"`
  429. VideoDuration int `description:"视频时长"`
  430. VideoUrl string `description:"视频地址"`
  431. CreateTime time.Time `description:"创建时间"`
  432. ImgUrl string `description:"背景图链接"`
  433. DetailImgUrl string `description:"产业详情页背景图"`
  434. }
  435. // GetMicroRoadshowVideoById 主键获取微路演视频
  436. func GetMicroRoadshowVideoById(videoId int) (item *MicroRoadshowVideo, err error) {
  437. sql := `SELECT * FROM cygx_micro_roadshow_video WHERE video_id = ? LIMIT 1`
  438. err = orm.NewOrm().Raw(sql, videoId).QueryRow(&item)
  439. return
  440. }
  441. func UpdateCygxActivityVideoCounts(activityId int) (err error) {
  442. sql := `UPDATE cygx_micro_roadshow_video SET video_counts = video_counts+1 WHERE video_id = ? `
  443. o := orm.NewOrm()
  444. _, err = o.Raw(sql, activityId).Exec()
  445. return
  446. }
  447. // GetMicroRoadshowVideoByIndustryIds 根据行业ID查询产业视频列表
  448. func GetMicroRoadshowVideoByIndustryIds(industrialIdArr []int) (list []*MicroRoadshowVideo, err error) {
  449. sql := `SELECT * FROM cygx_micro_roadshow_video WHERE industry_id in (` + utils.GetOrmInReplace(len(industrialIdArr)) + `) and publish_status = 1 `
  450. _, err = orm.NewOrm().Raw(sql, industrialIdArr).QueryRows(&list)
  451. return
  452. }
  453. // GetMicroRoadshowVideoByIndustryId 根据行业ID查询产业视频列表
  454. func GetMicroRoadshowVideoByIndustryId(industryId int) (item *MicroRoadshowVideo, err error) {
  455. sql := `SELECT * FROM cygx_micro_roadshow_video WHERE industry_id = ? and publish_status = 1`
  456. err = orm.NewOrm().Raw(sql, industryId).QueryRow(&item)
  457. return
  458. }
  459. type AddVideoCommnetReq struct {
  460. Id int `description:"活动或产业ID"`
  461. SourceType int `description:"视频来源: 1-音频; 2-活动视频; 3-微路演视频 (不传默认为1)"`
  462. Content string `description:"内容"`
  463. Title string `description:"标题"`
  464. }
  465. type MicroRoadshowCollectReq struct {
  466. Id int `description:"音频或视频ID"`
  467. SourceType int `description:"视频来源: 1-音频; 2-活动视频; 3-微路演视频 (不传默认为1)"`
  468. }
  469. // GetMicroRoadshowVideoListBycondition 根据搜索条件获取搜索列表
  470. func GetMicroRoadshowVideoListBycondition(condition string, pars []interface{}, startSize, pageSize int) (list []*MicroRoadshowVideo, err error) {
  471. sql := `SELECT * FROM cygx_micro_roadshow_video WHERE 1 =1 `
  472. if condition != "" {
  473. sql += condition
  474. }
  475. sql += ` LIMIT ?,? `
  476. _, err = orm.NewOrm().Raw(sql, pars, startSize, pageSize).QueryRows(&list)
  477. return
  478. }
  479. // GetMicroRoadshowVideoList 获取已经发布的微路演视频
  480. func GetMicroRoadshowVideoList() (list []*MicroRoadshowVideo, err error) {
  481. sql := `SELECT * FROM cygx_micro_roadshow_video WHERE publish_status = 1`
  482. _, err = orm.NewOrm().Raw(sql).QueryRows(&list)
  483. return
  484. }
  485. // GetMicroRoadshowVideoByIndustryIdCount 根据行业ID查询产业视频是否存在
  486. func GetMicroRoadshowVideoByIndustryIdCount(industryId int) (count int, err error) {
  487. o := orm.NewOrm()
  488. sql := `SELECT COUNT(1) count
  489. FROM cygx_micro_roadshow_video WHERE industry_id = ? and publish_status = 1`
  490. err = o.Raw(sql, industryId).QueryRow(&count)
  491. return
  492. }