micro_roadshow.go 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. package models
  2. import (
  3. "github.com/beego/beego/v2/client/orm"
  4. "github.com/rdlucklib/rdluck_tools/paging"
  5. "time"
  6. )
  7. // MicroRoadShowListResp 微路演列表响应体
  8. type MicroRoadShowListResp struct {
  9. Paging *paging.PagingItem
  10. List []*MicroRoadShowPageList
  11. }
  12. // MicroRoadShowPageList 微路演列表
  13. type MicroRoadShowPageList struct {
  14. Id int `description:"音视频ID"`
  15. Title string `description:"标题"`
  16. ResourceUrl string `description:"链接"`
  17. Type int `description:"类型: 1-音频; 2-视频"`
  18. PublishTime string `description:"发布时间"`
  19. BackgroundImg string `description:"背景图"`
  20. ChartPermissionId int `description:"行业ID"`
  21. ChartPermissionName string `description:"行业名称"`
  22. PlaySeconds string `description:"音视频时长"`
  23. ActivityId int `description:"活动ID"`
  24. AuthInfo *UserPermissionAuthInfo
  25. }
  26. // GetMicroRoadShowAudioPageList 获取微路演音频列表-分页
  27. func GetMicroRoadShowAudioPageList(startSize, pageSize int, condition string, pars []interface{}) (total int, list []*MicroRoadShowPageList, err error) {
  28. o := orm.NewOrm()
  29. sql := `SELECT
  30. a.activity_voice_id AS id,
  31. a.voice_name AS title,
  32. a.voice_url AS resource_url,
  33. 1 AS type,
  34. b.activity_time AS publish_time,
  35. b.chart_permission_id,
  36. b.chart_permission_name,
  37. a.voice_play_seconds AS play_seconds,
  38. a.img_url AS background_img,
  39. a.activity_id
  40. FROM
  41. cygx_activity_voice AS a
  42. JOIN cygx_activity AS b ON a.activity_id = b.activity_id `
  43. if condition != `` {
  44. sql += condition
  45. }
  46. sql += ` ORDER BY publish_time DESC`
  47. totalSql := `SELECT COUNT(1) total FROM (` + sql + `) z `
  48. err = o.Raw(totalSql, pars).QueryRow(&total)
  49. if err != nil {
  50. return
  51. }
  52. sql += ` LIMIT ?,?`
  53. _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&list)
  54. return
  55. }
  56. // GetMicroRoadShowVideoPageList 获取微路演视频列表-分页
  57. func GetMicroRoadShowVideoPageList(startSize, pageSize int, condition string, pars []interface{}) (total int, list []*MicroRoadShowPageList, err error) {
  58. o := orm.NewOrm()
  59. sql := `SELECT
  60. video_id AS id,
  61. video_name AS title,
  62. video_url AS resource_url,
  63. 2 AS type,
  64. publish_date AS publish_time,
  65. chart_permission_id,
  66. chart_permission_name,
  67. video_duration AS play_seconds,
  68. img_url AS background_img
  69. FROM
  70. cygx_micro_roadshow_video
  71. WHERE
  72. publish_status = 1 `
  73. if condition != `` {
  74. sql += condition
  75. }
  76. sql += ` ORDER BY publish_time DESC`
  77. totalSql := `SELECT COUNT(1) total FROM (` + sql + `) z `
  78. err = o.Raw(totalSql, pars).QueryRow(&total)
  79. if err != nil {
  80. return
  81. }
  82. sql += ` LIMIT ?,?`
  83. _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&list)
  84. return
  85. }
  86. type AddVideoHistoryReq struct {
  87. VideoId int `description:"视频ID"`
  88. PlaySeconds string `description:"播放时长"`
  89. }
  90. type CygxMicroRoadshowVideoHistory struct {
  91. Id int `orm:"column(id);pk"description:"微路演视频浏览记录表id"`
  92. VideoId int `description:"微路演视频id"`
  93. UserId int `description:"用户id"`
  94. Mobile string `description:"手机号"`
  95. Email string `description:"邮箱"`
  96. CompanyId int `description:"公司Id"`
  97. CompanyName string `description:"公司名称"`
  98. RealName string `description:"用户实际名称"`
  99. SellerName string `description:"所属销售"`
  100. PlaySeconds string `description:"播放时间 单位s"`
  101. CreateTime time.Time `description:"视频创建时间"`
  102. ModifyTime time.Time `description:"视频修改时间"`
  103. }
  104. func GetLastCygxMicroRoadshowVideoHistory(videoId, userId int) (item *CygxMicroRoadshowVideoHistory, err error) {
  105. o := orm.NewOrm()
  106. sql := ` SELECT * FROM cygx_micro_roadshow_video_history WHERE video_id=? AND user_id=? ORDER BY create_time DESC limit 1 `
  107. err = o.Raw(sql, videoId, userId).QueryRow(&item)
  108. return
  109. }
  110. func AddCygxMicroRoadshowVideoHistory(item *CygxMicroRoadshowVideoHistory) (err error) {
  111. o := orm.NewOrm()
  112. _, err = o.Insert(item)
  113. return
  114. }
  115. // MicroAudioUnionList 微路演音频联合列表
  116. type MicroAudioUnionList struct {
  117. Id int `description:"音视频ID"`
  118. AudioTitle string `description:"标题"`
  119. AudioResourceUrl string `description:"链接"`
  120. AudioType int `description:"类型: 1-音频; 2-视频"`
  121. AudioPublishTime string `description:"发布时间"`
  122. AudioImgUrl string `description:"背景图"`
  123. AudioChartPermissionId int `description:"行业ID"`
  124. AudioChartPermissionName string `description:"行业名称"`
  125. AudioPlaySeconds string `description:"音视频时长"`
  126. AudioActivityId int `description:"活动ID"`
  127. AuthInfo *UserPermissionAuthInfo
  128. }
  129. // HomeNewestUnionList 首页最新纪要-音频联合查询结果
  130. type HomeNewestUnionList struct {
  131. ArticleId int `description:"文章id"`
  132. Title string `description:"标题"`
  133. TitleEn string `description:"英文标题 "`
  134. UpdateFrequency string `description:"更新周期"`
  135. CreateDate string `description:"创建时间"`
  136. PublishDate string `description:"发布时间"`
  137. Body string `description:"内容"`
  138. BodyHtml string `description:"内容带有HTML标签"`
  139. Abstract string `description:"摘要"`
  140. CategoryName string `description:"一级分类"`
  141. SubCategoryName string `description:"二级分类"`
  142. ExpertBackground string `description:"专家背景"`
  143. IsResearch bool `description:"是否属于研选"`
  144. Pv int `description:"PV"`
  145. ImgUrlPc string `description:"图片链接"`
  146. CategoryId string `description:"文章分类"`
  147. HttpUrl string `description:"文章链接跳转地址"`
  148. IsNeedJump bool `description:"是否需要跳转链接地址"`
  149. Source int `description:"来源 1:文章, 2:图表"`
  150. Annotation string `description:"核心观点"`
  151. HomeType int `description:"数据类型:0-纪要(默认); 1-微路演音频"`
  152. MicroAudioUnionList
  153. }
  154. // GetHomeNewestListUnionList 首页最新纪要-音频联合查询
  155. func GetHomeNewestListUnionList(condition string, pars []interface{}, startSize, pageSize int) (list []*HomeNewestUnionList, err error) {
  156. sql := `SELECT
  157. 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,
  158. (SELECT count(1) FROM cygx_article_history_record_newpv as h WHERE h.article_id = art.article_id ) as pv,
  159. 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,
  160. "" AS audio_play_seconds, "" AS audio_img_url, 0 AS audio_activity_id
  161. FROM
  162. cygx_article AS art
  163. WHERE
  164. art.publish_status = 1 `
  165. if condition != `` {
  166. sql += condition
  167. }
  168. sql += ` UNION ALL
  169. SELECT
  170. a.activity_voice_id, 0, "", "", "", "", b.activity_time, "", "", "", "", "", 0, 0, "",
  171. 0, 1, a.voice_name, a.voice_url, 1, b.activity_time,
  172. 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
  173. FROM
  174. cygx_activity_voice AS a
  175. JOIN cygx_activity AS b ON a.activity_id = b.activity_id`
  176. sql += ` ORDER BY publish_date DESC`
  177. sql += ` LIMIT ?,?`
  178. _, err = orm.NewOrm().Raw(sql, pars, startSize, pageSize).QueryRows(&list)
  179. return
  180. }
  181. // GetHomeNewestListUnionCount 首页最新纪要-音频联合查询总数
  182. func GetHomeNewestListUnionCount(condition string, pars []interface{}) (count int, err error) {
  183. o := orm.NewOrm()
  184. sql := `SELECT
  185. COUNT(1) AS count
  186. FROM
  187. (
  188. SELECT
  189. art.id
  190. FROM
  191. cygx_article AS art
  192. WHERE
  193. art.publish_status = 1 `
  194. if condition != `` {
  195. sql += condition
  196. }
  197. sql += ` UNION ALL
  198. SELECT
  199. a.activity_voice_id
  200. FROM
  201. cygx_activity_voice AS a
  202. JOIN cygx_activity AS b ON a.activity_id = b.activity_id
  203. ) z `
  204. err = o.Raw(sql, pars).QueryRow(&count)
  205. return
  206. }
  207. func UpdateLastCygxActivityVideoHistory(playSeconds string, lastId int) (err error) {
  208. o := orm.NewOrm()
  209. sql := ` UPDATE cygx_micro_roadshow_video_history SET play_seconds =? WHERE id=? `
  210. _, err = o.Raw(sql, playSeconds, lastId).Exec()
  211. return
  212. }