micro_roadshow.go 13 KB

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