micro_roadshow.go 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306
  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. // MicroRoadShowPageList 微路演列表
  14. type MicroRoadShowPageList struct {
  15. Id int `description:"音视频ID"`
  16. Title string `description:"标题"`
  17. ResourceUrl string `description:"链接"`
  18. Type int `description:"类型: 1-音频; 2-活动视频; 3-产业视频"`
  19. PublishTime string `description:"发布时间"`
  20. BackgroundImg string `description:"背景图"`
  21. ShareImg string `description:"分享封面图"`
  22. ChartPermissionId int `description:"行业ID"`
  23. ChartPermissionName string `description:"行业名称"`
  24. IndustryName string `description:"产业名称"`
  25. PlaySeconds string `description:"音视频时长"`
  26. ActivityId int `description:"活动ID"`
  27. AuthInfo *UserPermissionAuthInfo
  28. }
  29. // GetMicroRoadShowVideoPageList 获取微路演视频列表-分页
  30. func GetMicroRoadShowVideoPageListV8(startSize, pageSize int, condition string, pars []interface{}, conditionAct string, parsAct []interface{}, conditionAudio string, parsAudio []interface{}, audioId, videoId, activityVideoId, filter int) (total int, list []*MicroRoadShowPageList, err error) {
  31. o := orm.NewOrm()
  32. var sql string
  33. if audioId+activityVideoId == 0 && filter != 2{
  34. sql += `SELECT
  35. video_id AS id,
  36. video_name AS title,
  37. video_url AS resource_url,
  38. 3 AS type,
  39. publish_date AS publish_time,
  40. chart_permission_id,
  41. chart_permission_name,
  42. video_duration AS play_seconds,
  43. img_url AS background_img,
  44. industry_name,
  45. share_img_url AS share_img,
  46. "" as activity_id
  47. FROM
  48. cygx_micro_roadshow_video
  49. WHERE
  50. publish_status = 1 `
  51. if condition != `` {
  52. sql += condition
  53. }
  54. }
  55. if audioId+videoId+activityVideoId == 0 && filter != 2 {
  56. sql += ` UNION ALL `
  57. }
  58. if audioId+videoId == 0 && filter != 2{
  59. sql += `
  60. SELECT
  61. video_id AS id,
  62. video_name AS title,
  63. video_url AS resource_url,
  64. 2 AS type,
  65. art.activity_time as publish_time,
  66. art.chart_permission_id,
  67. art.chart_permission_name,
  68. "" AS play_seconds,
  69. "" AS background_img,
  70. "" AS industry_name,
  71. "" AS share_img,
  72. v.activity_id
  73. FROM
  74. cygx_activity_video as v
  75. INNER JOIN cygx_activity as art on art.activity_id = v.activity_id WHERE 1= 1 `
  76. if conditionAct != `` {
  77. sql += conditionAct
  78. }
  79. }
  80. if audioId+videoId+activityVideoId == 0 && filter == 0 {
  81. sql += ` UNION ALL `
  82. }
  83. if videoId+activityVideoId == 0 && filter != 1 {
  84. sql += `
  85. SELECT
  86. a.activity_voice_id AS id,
  87. a.voice_name AS title,
  88. a.voice_url AS resource_url,
  89. 1 AS type,
  90. b.activity_time AS publish_time,
  91. b.chart_permission_id,
  92. b.chart_permission_name,
  93. a.voice_play_seconds AS play_seconds,
  94. a.img_url AS background_img,
  95. "" AS industry_name,
  96. "" AS share_img,
  97. a.activity_id
  98. FROM
  99. cygx_activity_voice AS a
  100. JOIN cygx_activity AS b ON a.activity_id = b.activity_id WHERE 1= 1 `
  101. if conditionAudio != `` {
  102. sql += conditionAudio
  103. }
  104. }
  105. sql += ` ORDER BY publish_time DESC`
  106. totalSql := `SELECT COUNT(1) total FROM (` + sql + `) z `
  107. err = o.Raw(totalSql, pars, parsAct, parsAudio).QueryRow(&total)
  108. if err != nil {
  109. return
  110. }
  111. sql += ` LIMIT ?,?`
  112. _, err = o.Raw(sql, pars, parsAct, parsAudio, startSize, pageSize).QueryRows(&list)
  113. return
  114. }
  115. type AddVideoHistoryReq struct {
  116. VideoId int `description:"视频ID"`
  117. PlaySeconds int `description:"播放时长"`
  118. SourceType int `description:"视频来源: 1-微路演; 2-活动 (不传默认为1)"`
  119. }
  120. type CygxMicroRoadshowVideoHistory struct {
  121. Id int `orm:"column(id);pk"description:"微路演视频浏览记录表id"`
  122. VideoId int `description:"微路演视频id"`
  123. UserId int `description:"用户id"`
  124. Mobile string `description:"手机号"`
  125. Email string `description:"邮箱"`
  126. CompanyId int `description:"公司Id"`
  127. CompanyName string `description:"公司名称"`
  128. RealName string `description:"用户实际名称"`
  129. SellerName string `description:"所属销售"`
  130. PlaySeconds string `description:"播放时间 单位s"`
  131. CreateTime time.Time `description:"视频创建时间"`
  132. ModifyTime time.Time `description:"视频修改时间"`
  133. }
  134. func GetLastCygxMicroRoadshowVideoHistory(videoId, userId int) (item *CygxMicroRoadshowVideoHistory, err error) {
  135. o := orm.NewOrm()
  136. sql := ` SELECT * FROM cygx_micro_roadshow_video_history WHERE video_id=? AND user_id=? ORDER BY create_time DESC limit 1 `
  137. err = o.Raw(sql, videoId, userId).QueryRow(&item)
  138. return
  139. }
  140. func AddCygxMicroRoadshowVideoHistory(item *CygxMicroRoadshowVideoHistory) (err error) {
  141. o := orm.NewOrm()
  142. _, err = o.Insert(item)
  143. return
  144. }
  145. // MicroAudioUnionList 微路演音频联合列表
  146. type MicroAudioUnionList struct {
  147. Id int `description:"音视频ID"`
  148. AudioTitle string `description:"标题"`
  149. AudioResourceUrl string `description:"链接"`
  150. AudioType int `description:"类型: 1-音频; 2-视频"`
  151. AudioPublishTime string `description:"发布时间"`
  152. AudioImgUrl string `description:"背景图"`
  153. AudioShareImg string `description:"分享图"`
  154. AudioChartPermissionId int `description:"行业ID"`
  155. AudioChartPermissionName string `description:"行业名称"`
  156. AudioPlaySeconds string `description:"音视频时长"`
  157. AudioActivityId int `description:"活动ID"`
  158. AuthInfo *UserPermissionAuthInfo
  159. }
  160. // HomeNewestUnionList 首页最新纪要-音频联合查询结果
  161. type HomeNewestUnionList struct {
  162. ArticleId int `description:"文章id"`
  163. Title string `description:"标题"`
  164. TitleEn string `description:"英文标题 "`
  165. UpdateFrequency string `description:"更新周期"`
  166. CreateDate string `description:"创建时间"`
  167. PublishDate string `description:"发布时间"`
  168. Body string `description:"内容"`
  169. BodyHtml string `description:"内容带有HTML标签"`
  170. Abstract string `description:"摘要"`
  171. CategoryName string `description:"一级分类"`
  172. SubCategoryName string `description:"二级分类"`
  173. ExpertBackground string `description:"专家背景"`
  174. IsResearch bool `description:"是否属于研选"`
  175. Pv int `description:"PV"`
  176. ImgUrlPc string `description:"图片链接"`
  177. CategoryId string `description:"文章分类"`
  178. HttpUrl string `description:"文章链接跳转地址"`
  179. IsNeedJump bool `description:"是否需要跳转链接地址"`
  180. Source int `description:"来源 1:文章, 2:图表"`
  181. Annotation string `description:"核心观点"`
  182. HomeType int `description:"数据类型:0-纪要(默认); 1-微路演音频"`
  183. MicroAudioUnionList
  184. }
  185. // GetHomeNewestListUnionList 首页最新纪要-音频联合查询
  186. func GetHomeNewestListUnionList(condition string, pars []interface{}, startSize, pageSize int) (list []*HomeNewestUnionList, err error) {
  187. sql := `SELECT
  188. 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,
  189. (SELECT count(1) FROM cygx_article_history_record_newpv as h WHERE h.article_id = art.article_id ) as pv,
  190. 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,
  191. "" AS audio_play_seconds, "" AS audio_img_url, 0 AS audio_activity_id
  192. FROM
  193. cygx_article AS art
  194. WHERE
  195. art.publish_status = 1 `
  196. if condition != `` {
  197. sql += condition
  198. }
  199. sql += ` UNION ALL
  200. SELECT
  201. a.activity_voice_id, 0, "", "", "", "", b.activity_time, "", "", "", "", "", 0, 0, "",
  202. 0, 1, a.voice_name, a.voice_url, 1, b.activity_time,
  203. 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
  204. FROM
  205. cygx_activity_voice AS a
  206. JOIN cygx_activity AS b ON a.activity_id = b.activity_id`
  207. sql += ` ORDER BY publish_date DESC`
  208. sql += ` LIMIT ?,?`
  209. _, err = orm.NewOrm().Raw(sql, pars, startSize, pageSize).QueryRows(&list)
  210. return
  211. }
  212. // GetHomeNewestListUnionCount 首页最新纪要-音频联合查询总数
  213. func GetHomeNewestListUnionCount(condition string, pars []interface{}) (count int, err error) {
  214. o := orm.NewOrm()
  215. sql := `SELECT
  216. COUNT(1) AS count
  217. FROM
  218. (
  219. SELECT
  220. art.id
  221. FROM
  222. cygx_article AS art
  223. WHERE
  224. art.publish_status = 1 `
  225. if condition != `` {
  226. sql += condition
  227. }
  228. sql += ` UNION ALL
  229. SELECT
  230. a.activity_voice_id
  231. FROM
  232. cygx_activity_voice AS a
  233. JOIN cygx_activity AS b ON a.activity_id = b.activity_id
  234. ) z `
  235. err = o.Raw(sql, pars).QueryRow(&count)
  236. return
  237. }
  238. func UpdateLastCygxActivityVideoHistory(playSeconds string, lastId int) (err error) {
  239. o := orm.NewOrm()
  240. sql := ` UPDATE cygx_micro_roadshow_video_history SET play_seconds =? WHERE id=? `
  241. _, err = o.Raw(sql, playSeconds, lastId).Exec()
  242. return
  243. }
  244. // MicroRoadshowVideo 微路演视频
  245. type MicroRoadshowVideo struct {
  246. VideoId int `orm:"column(video_id);pk" description:"视频ID"`
  247. VideoName string `description:"视频标题"`
  248. ChartPermissionId int `description:"行业ID"`
  249. ChartPermissionName string `description:"行业名称"`
  250. IndustryId int `description:"产业ID"`
  251. IndustryName string `description:"产业名称"`
  252. PublishStatus int `description:"发布状态:0-未发布;1-已发布"`
  253. ModifyDate time.Time `description:"更新时间"`
  254. PublishDate time.Time `description:"发布时间"`
  255. VideoCounts int `description:"视频播放量"`
  256. VideoDuration int `description:"视频时长"`
  257. VideoUrl string `description:"视频地址"`
  258. CreateTime time.Time `description:"创建时间"`
  259. ImgUrl string `description:"背景图链接"`
  260. DetailImgUrl string `description:"产业详情页背景图"`
  261. }
  262. // GetMicroRoadshowVideoById 主键获取微路演视频
  263. func GetMicroRoadshowVideoById(videoId int) (item *MicroRoadshowVideo, err error) {
  264. sql := `SELECT * FROM cygx_micro_roadshow_video WHERE video_id = ? LIMIT 1`
  265. err = orm.NewOrm().Raw(sql, videoId).QueryRow(&item)
  266. return
  267. }
  268. func UpdateCygxActivityVideoCounts(activityId int) (err error) {
  269. sql := `UPDATE cygx_micro_roadshow_video SET video_counts = video_counts+1 WHERE video_id = ? `
  270. o := orm.NewOrm()
  271. _, err = o.Raw(sql, activityId).Exec()
  272. return
  273. }
  274. // GetMicroRoadshowVideoByIndustryIds 根据行业ID查询产业视频列表
  275. func GetMicroRoadshowVideoByIndustryIds(industrialIdArr []int) (list []*MicroRoadshowVideo, err error) {
  276. sql := `SELECT * FROM cygx_micro_roadshow_video WHERE industry_id in (` + utils.GetOrmInReplace(len(industrialIdArr)) + `) and publish_status = 1 `
  277. _, err = orm.NewOrm().Raw(sql, industrialIdArr).QueryRows(&list)
  278. return
  279. }
  280. // GetMicroRoadshowVideoByIndustryId 根据行业ID查询产业视频列表
  281. func GetMicroRoadshowVideoByIndustryId(industryId int) (item *MicroRoadshowVideo, err error) {
  282. sql := `SELECT * FROM cygx_micro_roadshow_video WHERE industry_id = ? and publish_status = 1`
  283. err = orm.NewOrm().Raw(sql, industryId).QueryRow(&item)
  284. return
  285. }