english_video.go 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  1. package models
  2. import (
  3. "eta_gn/eta_api/global"
  4. "eta_gn/eta_api/utils"
  5. "strings"
  6. "time"
  7. "github.com/rdlucklib/rdluck_tools/paging"
  8. )
  9. type EnglishVideo struct {
  10. Id int `gorm:"column:id;primaryKey;auto_increment:true" description:"路演视频Id"`
  11. ClassifyIdFirst int `gorm:"column:classify_id_first" description:"一级分类id"`
  12. ClassifyNameFirst string `gorm:"column:classify_name_first" description:"一级分类名称"`
  13. ClassifyIdSecond int `gorm:"column:classify_id_second" description:"二级分类id"`
  14. ClassifyNameSecond string `gorm:"column:classify_name_second" description:"二级分类名称"`
  15. Title string `gorm:"column:title" description:"标题"`
  16. Abstract string `gorm:"column:abstract" description:"摘要"`
  17. Author string `gorm:"column:author" description:"作者"`
  18. CreateTime time.Time `gorm:"column:create_time" description:"创建时间"`
  19. ModifyTime time.Time `gorm:"column:modify_time" description:"修改时间"`
  20. State int `gorm:"column:state" description:"1:未发布,2:已发布"`
  21. PublishTime time.Time `gorm:"column:publish_time" description:"发布时间"`
  22. VideoUrl string `gorm:"column:video_url" description:"视频文件URL"`
  23. VideoCoverUrl string `gorm:"column:video_cover_url" description:"视频文件封面地址"`
  24. VideoSeconds string `gorm:"column:video_seconds" description:"视频时长"`
  25. VideoCode string `gorm:"column:video_code" description:"报告唯一编码"`
  26. Pv int `gorm:"column:pv" description:"Pv"`
  27. PvEmail int `gorm:"column:pv_email" description:"邮箱PV"`
  28. UvEmail int `gorm:"column:uv_email" description:"邮箱UV"`
  29. EmailState int `gorm:"column:email_state" description:"群发邮件状态: 0-未发送; 1-已发送"`
  30. Overview string `gorm:"column:overview" description:"英文概述部分"`
  31. AdminId int `gorm:"column:admin_id" description:"上传视频的管理员账号"`
  32. AdminRealName string `gorm:"column:admin_real_name" description:"上传视频的管理员姓名"`
  33. }
  34. func AddEnglishVideo(item *EnglishVideo) (err error) {
  35. err = global.DmSQL["rddp"].Create(item).Error
  36. return
  37. }
  38. func ModifyEnglishVideoCode(id int, VideoCode string) (err error) {
  39. sql := `UPDATE english_video SET video_code=? WHERE id=? `
  40. err = global.DmSQL["rddp"].Exec(sql, VideoCode, id).Error
  41. return
  42. }
  43. type SaveEnglishVideoReq struct {
  44. Id int `description:"路演视频ID"`
  45. ClassifyIdFirst int `description:"一级分类id"`
  46. ClassifyIdSecond int `description:"二级分类id"`
  47. Title string `description:"标题"`
  48. Abstract string `description:"摘要"`
  49. Author string `description:"作者"`
  50. State int `description:"状态:1:未发布,2:已发布"`
  51. VideoUrl string `description:"视频文件URL"`
  52. VideoCoverUrl string `description:"视频文件封面地址"`
  53. VideoSeconds string `description:"视频时长"`
  54. Overview string `description:"英文概述部分"`
  55. }
  56. type SaveEnglishVideoResp struct {
  57. Id int `description:"路演视频ID"`
  58. VideoCode string `description:"报告code"`
  59. }
  60. type ElasticEnglishVideoDetail struct {
  61. Id int `description:"路演视频ID"`
  62. ClassifyIdFirst int `description:"一级分类id"`
  63. ClassifyNameFirst string `description:"一级分类名称"`
  64. ClassifyIdSecond int `description:"二级分类id"`
  65. ClassifyNameSecond string `description:"二级分类名称"`
  66. StageStr string `description:"报告期数"`
  67. Title string `description:"标题"`
  68. Abstract string `description:"摘要"`
  69. Author string `description:"作者"`
  70. Frequency string `description:"频度"`
  71. PublishState int `description:"状态:1:未发布,2:已发布"`
  72. BodyContent string `description:"内容"`
  73. ContentSub string `description:"前两段内容"`
  74. CreateTime string `description:"创建时间"`
  75. PublishTime string `description:"发布时间"`
  76. VideoCode string `description:"报告唯一编码"`
  77. Overview string `description:"英文概述部分"`
  78. }
  79. func EditEnglishVideo(item *EnglishVideo, Id int) (err error) {
  80. sql := `UPDATE english_video
  81. SET
  82. classify_id_first =?,
  83. classify_name_first = ?,
  84. classify_id_second = ?,
  85. classify_name_second = ?,
  86. title = ?,
  87. abstract = ?,
  88. state = ?,
  89. modify_time = ?,
  90. overview = ?,
  91. video_url = ?,
  92. video_cover_url = ?,
  93. video_seconds = ?
  94. WHERE id = ? `
  95. err = global.DmSQL["rddp"].Exec(sql, item.ClassifyIdFirst, item.ClassifyNameFirst, item.ClassifyIdSecond, item.ClassifyNameSecond, item.Title,
  96. item.Abstract, item.State, time.Now(), item.Overview, item.VideoUrl, item.VideoCoverUrl, item.VideoSeconds, Id).Error
  97. return
  98. }
  99. type EnglishVideoDetail struct {
  100. Id int `description:"路演视频ID"`
  101. ClassifyIdFirst int `description:"一级分类id"`
  102. ClassifyNameFirst string `description:"一级分类名称"`
  103. ClassifyIdSecond int `description:"二级分类id"`
  104. ClassifyNameSecond string `description:"二级分类名称"`
  105. Title string `description:"标题"`
  106. Abstract string `description:"摘要"`
  107. Author string `description:"作者"`
  108. CreateTime string `description:"创建时间"`
  109. ModifyTime string `description:"修改时间"`
  110. State int `description:"1:未发布,2:已发布"`
  111. PublishTime string `description:"发布时间"`
  112. MsgIsSend int `description:"消息是否已发送,0:否,1:是"`
  113. VideoCode string `description:"报告唯一编码"`
  114. VideoUrl string `description:"视频文件URL"`
  115. VideoCoverUrl string `description:"视频文件封面地址"`
  116. VideoSeconds string `description:"视频时长"`
  117. Pv int `description:"Pv"`
  118. Overview string `description:"英文概述部分"`
  119. }
  120. func GetEnglishVideoById(Id int) (item *EnglishVideoDetail, err error) {
  121. sql := `SELECT * FROM english_video WHERE id=?`
  122. err = global.DmSQL["rddp"].Raw(sql, Id).First(&item).Error
  123. return
  124. }
  125. func GetEnglishVideoItemById(Id int) (item *EnglishVideo, err error) {
  126. sql := `SELECT * FROM english_video WHERE id = ? LIMIT 1`
  127. err = global.DmSQL["rddp"].Raw(sql, Id).First(&item).Error
  128. return
  129. }
  130. type EnglishVideoList struct {
  131. Id int `description:"id"`
  132. ClassifyIdFirst int `description:"一级分类id"`
  133. ClassifyNameFirst string `description:"一级分类名称"`
  134. ClassifyIdSecond int `description:"二级分类id"`
  135. ClassifyNameSecond string `description:"二级分类名称"`
  136. Title string `description:"标题"`
  137. Abstract string `description:"摘要"`
  138. CreateTime string `description:"创建时间"`
  139. ModifyTime string `description:"修改时间"`
  140. State int `description:"1:未发布,2:已发布"`
  141. PublishTime string `description:"发布时间"`
  142. VideoUrl string `description:"视频文件URL"`
  143. VideoCoverUrl string `description:"视频文件封面地址"`
  144. VideoSeconds string `description:"视频时长"`
  145. VideoCode string `description:"报告唯一编码"`
  146. Pv int `description:"Pv"`
  147. ShareUrl string `description:"分享url"`
  148. PvEmail int `description:"邮箱PV"`
  149. UvEmail int `description:"邮箱UV"`
  150. EmailState int `description:"群发邮件状态: 0-未发送; 1-已发送"`
  151. EmailAuth bool `description:"是否有权限群发邮件"`
  152. EmailHasFail bool `description:"是否存在邮件发送失败的记录"`
  153. Overview string `description:"英文概述部分"`
  154. AdminId int `description:"上传视频的管理员账号"`
  155. AdminRealName string `description:"上传视频的管理员姓名"`
  156. }
  157. type EnglishVideoListResp struct {
  158. List []*EnglishVideoList
  159. Paging *paging.PagingItem `description:"分页数据"`
  160. }
  161. type EnglishVideoReq struct {
  162. Id int `description:"路演视频id"`
  163. }
  164. func GetEnglishVideoListCount(condition string, pars []interface{}) (count int, err error) {
  165. //产品权限
  166. sql := `SELECT COUNT(1) AS count FROM english_video WHERE 1=1 `
  167. if condition != "" {
  168. sql += condition
  169. }
  170. err = global.DmSQL["rddp"].Raw(sql, pars...).Scan(&count).Error
  171. return
  172. }
  173. func GetEnglishVideoList(condition string, pars []interface{}, startSize, pageSize int) (items []*EnglishVideoList, err error) {
  174. sql := `SELECT *
  175. FROM english_video WHERE 1=1 `
  176. if condition != "" {
  177. sql += condition
  178. }
  179. sql += `ORDER BY modify_time DESC LIMIT ?,?`
  180. pars = append(pars, startSize)
  181. pars = append(pars, pageSize)
  182. err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&items).Error
  183. return
  184. }
  185. func GetEnglishVideoByCondition(condition string, pars []interface{}) (items []*EnglishVideo, err error) {
  186. sql := `SELECT *
  187. FROM english_video WHERE 1=1 `
  188. if condition != "" {
  189. sql += condition
  190. }
  191. err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&items).Error
  192. return
  193. }
  194. // 发布报告
  195. func PublishEnglishVideoById(Id int) (err error) {
  196. sql := `UPDATE english_video SET state=2,publish_time=now(),modify_time=NOW() WHERE id = ? `
  197. err = global.DmSQL["rddp"].Exec(sql, Id).Error
  198. return
  199. }
  200. // 取消发布报告
  201. func PublishCancelEnglishVideo(Ids int) (err error) {
  202. sql := ` UPDATE english_video SET state=1,publish_time=null WHERE id =? `
  203. err = global.DmSQL["rddp"].Exec(sql, Ids).Error
  204. return
  205. }
  206. // DeleteEnglishVideo 删除路演视频
  207. func DeleteEnglishVideo(Id int) (err error) {
  208. sql := ` DELETE FROM english_video WHERE id=? `
  209. err = global.DmSQL["rddp"].Exec(sql, Id).Error
  210. return
  211. }
  212. func UpdateEnglishVideoClassifyByFirstSecondClassifyId(classifyId, parentId int) (err error) {
  213. // 更新相关联的二级分类的parentId,和classify_name_second
  214. sql := `update english_video r
  215. LEFT JOIN english_classify c ON r.classify_id_second = c.id
  216. SET r.classify_id_first=c.parent_id, r.classify_name_second=c.classify_name
  217. where (r.classify_id_first != c.parent_id or r.classify_name_second != c.classify_name) and r.classify_id_second =?`
  218. err = global.DmSQL["rddp"].Exec(sql, classifyId).Error
  219. if err != nil {
  220. return
  221. }
  222. //更新一级分类名
  223. sql = `update english_video r
  224. LEFT JOIN english_classify c ON r.classify_id_first = c.id
  225. SET r.classify_name_first=c.classify_name
  226. where r.classify_name_first != c.classify_name and r.classify_id_first=?`
  227. err = global.DmSQL["rddp"].Exec(sql, parentId).Error
  228. if err != nil {
  229. return
  230. }
  231. //更新一级分类名
  232. sql = `update english_video r
  233. LEFT JOIN english_classify c ON r.classify_id_first = c.id
  234. SET r.classify_name_first=c.classify_name
  235. where r.classify_name_first != c.classify_name and r.classify_id_first=?`
  236. err = global.DmSQL["rddp"].Exec(sql, classifyId).Error
  237. return
  238. }
  239. // Update 更新
  240. func (item *EnglishVideo) Update(cols []string) (err error) {
  241. err = global.DmSQL["rddp"].Select(cols).Updates(item).Error
  242. return
  243. }
  244. func GetEnglishVideoCounts(classifyId, parentId int) (count int, err error) {
  245. sql := ``
  246. if parentId == 0 {
  247. sql = `SELECT COUNT(1) AS count FROM english_video WHERE classify_id_first=? `
  248. } else {
  249. sql = `SELECT COUNT(1) AS count FROM english_video WHERE classify_id_second=? `
  250. }
  251. err = global.DmSQL["rddp"].Raw(sql, classifyId).Scan(&count).Error
  252. return
  253. }
  254. // GetEnglishVideoByIds 根据IDs获取英文报告列表
  255. func GetEnglishVideoByIds(Ids []int, fieldArr []string) (list []*EnglishVideo, err error) {
  256. listLen := len(Ids)
  257. if listLen == 0 {
  258. return
  259. }
  260. fields := ` * `
  261. if len(fieldArr) > 0 {
  262. fields = strings.Join(fieldArr, ",")
  263. }
  264. sql := `SELECT ` + fields + ` FROM english_video WHERE id IN (` + utils.GetOrmInReplace(listLen) + `)`
  265. err = global.DmSQL["rddp"].Raw(sql, Ids).Find(&list).Error
  266. return
  267. }