english_video.go 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356
  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. //o := orm.NewOrmUsingDB("rddp")
  36. //_, err = o.Insert(item)
  37. err = global.DmSQL["rddp"].Create(item).Error
  38. return
  39. }
  40. func ModifyEnglishVideoCode(id int, VideoCode string) (err error) {
  41. //o := orm.NewOrmUsingDB("rddp")
  42. sql := `UPDATE english_video SET video_code=? WHERE id=? `
  43. //_, err = o.Raw(sql, VideoCode, id).Exec()
  44. err = global.DmSQL["rddp"].Exec(sql, VideoCode, id).Error
  45. return
  46. }
  47. type SaveEnglishVideoReq struct {
  48. Id int `description:"路演视频ID"`
  49. ClassifyIdFirst int `description:"一级分类id"`
  50. //ClassifyNameFirst string `description:"一级分类名称"`
  51. ClassifyIdSecond int `description:"二级分类id"`
  52. //ClassifyNameSecond string `description:"二级分类名称"`
  53. Title string `description:"标题"`
  54. Abstract string `description:"摘要"`
  55. Author string `description:"作者"`
  56. State int `description:"状态:1:未发布,2:已发布"`
  57. VideoUrl string `description:"视频文件URL"`
  58. VideoCoverUrl string `description:"视频文件封面地址"`
  59. VideoSeconds string `description:"视频时长"`
  60. Overview string `description:"英文概述部分"`
  61. }
  62. type SaveEnglishVideoResp struct {
  63. Id int `description:"路演视频ID"`
  64. VideoCode string `description:"报告code"`
  65. }
  66. type ElasticEnglishVideoDetail struct {
  67. Id int `description:"路演视频ID"`
  68. ClassifyIdFirst int `description:"一级分类id"`
  69. ClassifyNameFirst string `description:"一级分类名称"`
  70. ClassifyIdSecond int `description:"二级分类id"`
  71. ClassifyNameSecond string `description:"二级分类名称"`
  72. StageStr string `description:"报告期数"`
  73. Title string `description:"标题"`
  74. Abstract string `description:"摘要"`
  75. Author string `description:"作者"`
  76. Frequency string `description:"频度"`
  77. PublishState int `description:"状态:1:未发布,2:已发布"`
  78. BodyContent string `description:"内容"`
  79. ContentSub string `description:"前两段内容"`
  80. CreateTime string `description:"创建时间"`
  81. PublishTime string `description:"发布时间"`
  82. VideoCode string `description:"报告唯一编码"`
  83. Overview string `description:"英文概述部分"`
  84. }
  85. func EditEnglishVideo(item *EnglishVideo, Id int) (err error) {
  86. //o := orm.NewOrmUsingDB("rddp")
  87. sql := `UPDATE english_video
  88. SET
  89. classify_id_first =?,
  90. classify_name_first = ?,
  91. classify_id_second = ?,
  92. classify_name_second = ?,
  93. title = ?,
  94. abstract = ?,
  95. state = ?,
  96. modify_time = ?,
  97. overview = ?,
  98. video_url = ?,
  99. video_cover_url = ?,
  100. video_seconds = ?
  101. WHERE id = ? `
  102. //_, err = o.Raw(sql, item.ClassifyIdFirst, item.ClassifyNameFirst, item.ClassifyIdSecond, item.ClassifyNameSecond, item.Title,
  103. // item.Abstract, item.State, time.Now(), item.Overview, item.VideoUrl, item.VideoCoverUrl, item.VideoSeconds, Id).Exec()
  104. err = global.DmSQL["rddp"].Exec(sql, item.ClassifyIdFirst, item.ClassifyNameFirst, item.ClassifyIdSecond, item.ClassifyNameSecond, item.Title,
  105. item.Abstract, item.State, time.Now(), item.Overview, item.VideoUrl, item.VideoCoverUrl, item.VideoSeconds, Id).Error
  106. return
  107. }
  108. type EnglishVideoDetail struct {
  109. Id int `description:"路演视频ID"`
  110. ClassifyIdFirst int `description:"一级分类id"`
  111. ClassifyNameFirst string `description:"一级分类名称"`
  112. ClassifyIdSecond int `description:"二级分类id"`
  113. ClassifyNameSecond string `description:"二级分类名称"`
  114. Title string `description:"标题"`
  115. Abstract string `description:"摘要"`
  116. Author string `description:"作者"`
  117. CreateTime string `description:"创建时间"`
  118. ModifyTime string `description:"修改时间"`
  119. State int `description:"1:未发布,2:已发布"`
  120. PublishTime string `description:"发布时间"`
  121. MsgIsSend int `description:"消息是否已发送,0:否,1:是"`
  122. VideoCode string `description:"报告唯一编码"`
  123. VideoUrl string `description:"视频文件URL"`
  124. VideoCoverUrl string `description:"视频文件封面地址"`
  125. VideoSeconds string `description:"视频时长"`
  126. Pv int `description:"Pv"`
  127. Overview string `description:"英文概述部分"`
  128. }
  129. func GetEnglishVideoById(Id int) (item *EnglishVideoDetail, err error) {
  130. //o := orm.NewOrmUsingDB("rddp")
  131. sql := `SELECT * FROM english_video WHERE id=?`
  132. //err = o.Raw(sql, Id).QueryRow(&item)
  133. err = global.DmSQL["rddp"].Raw(sql, Id).First(&item).Error
  134. return
  135. }
  136. func GetEnglishVideoItemById(Id int) (item *EnglishVideo, err error) {
  137. //o := orm.NewOrmUsingDB("rddp")
  138. sql := `SELECT * FROM english_video WHERE id = ? LIMIT 1`
  139. //err = o.Raw(sql, Id).QueryRow(&item)
  140. err = global.DmSQL["rddp"].Raw(sql, Id).First(&item).Error
  141. return
  142. }
  143. type EnglishVideoList struct {
  144. Id int `description:"id"`
  145. ClassifyIdFirst int `description:"一级分类id"`
  146. ClassifyNameFirst string `description:"一级分类名称"`
  147. ClassifyIdSecond int `description:"二级分类id"`
  148. ClassifyNameSecond string `description:"二级分类名称"`
  149. Title string `description:"标题"`
  150. Abstract string `description:"摘要"`
  151. CreateTime string `description:"创建时间"`
  152. ModifyTime string `description:"修改时间"`
  153. State int `description:"1:未发布,2:已发布"`
  154. PublishTime string `description:"发布时间"`
  155. VideoUrl string `description:"视频文件URL"`
  156. VideoCoverUrl string `description:"视频文件封面地址"`
  157. VideoSeconds string `description:"视频时长"`
  158. VideoCode string `description:"报告唯一编码"`
  159. Pv int `description:"Pv"`
  160. ShareUrl string `description:"分享url"`
  161. PvEmail int `description:"邮箱PV"`
  162. UvEmail int `description:"邮箱UV"`
  163. EmailState int `description:"群发邮件状态: 0-未发送; 1-已发送"`
  164. EmailAuth bool `description:"是否有权限群发邮件"`
  165. EmailHasFail bool `description:"是否存在邮件发送失败的记录"`
  166. Overview string `description:"英文概述部分"`
  167. AdminId int `description:"上传视频的管理员账号"`
  168. AdminRealName string `description:"上传视频的管理员姓名"`
  169. }
  170. type EnglishVideoListResp struct {
  171. List []*EnglishVideoList
  172. Paging *paging.PagingItem `description:"分页数据"`
  173. }
  174. type EnglishVideoReq struct {
  175. Id int `description:"路演视频id"`
  176. }
  177. func GetEnglishVideoListCount(condition string, pars []interface{}) (count int, err error) {
  178. //产品权限
  179. // oRddp := orm.NewOrmUsingDB("rddp")
  180. sql := `SELECT COUNT(1) AS count FROM english_video WHERE 1=1 `
  181. if condition != "" {
  182. sql += condition
  183. }
  184. //err = oRddp.Raw(sql, pars).QueryRow(&count)
  185. err = global.DmSQL["rddp"].Raw(sql, pars...).Scan(&count).Error
  186. return
  187. }
  188. func GetEnglishVideoList(condition string, pars []interface{}, startSize, pageSize int) (items []*EnglishVideoList, err error) {
  189. //o := orm.NewOrmUsingDB("rddp")
  190. sql := `SELECT *
  191. FROM english_video WHERE 1=1 `
  192. if condition != "" {
  193. sql += condition
  194. }
  195. sql += `ORDER BY modify_time DESC LIMIT ?,?`
  196. //_, err = o.Raw(sql, pars...).QueryRows(&items)
  197. pars = append(pars, startSize)
  198. pars = append(pars, pageSize)
  199. err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&items).Error
  200. return
  201. }
  202. func GetEnglishVideoByCondition(condition string, pars []interface{}) (items []*EnglishVideo, err error) {
  203. //o := orm.NewOrmUsingDB("rddp")
  204. sql := `SELECT *
  205. FROM english_video WHERE 1=1 `
  206. if condition != "" {
  207. sql += condition
  208. }
  209. //_, err = o.Raw(sql, pars).QueryRows(&items)
  210. err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&items).Error
  211. return
  212. }
  213. // 发布报告
  214. func PublishEnglishVideoById(Id int) (err error) {
  215. // o := orm.NewOrmUsingDB("rddp")
  216. sql := `UPDATE english_video SET state=2,publish_time=now(),modify_time=NOW() WHERE id = ? `
  217. //_, err = o.Raw(sql, Id).Exec()
  218. err = global.DmSQL["rddp"].Exec(sql, Id).Error
  219. return
  220. }
  221. // 取消发布报告
  222. func PublishCancelEnglishVideo(Ids int) (err error) {
  223. // o := orm.NewOrmUsingDB("rddp")
  224. sql := ` UPDATE english_video SET state=1,publish_time=null WHERE id =? `
  225. //_, err = o.Raw(sql, Ids).Exec()
  226. err = global.DmSQL["rddp"].Exec(sql, Ids).Error
  227. return
  228. }
  229. // DeleteEnglishVideo 删除路演视频
  230. func DeleteEnglishVideo(Id int) (err error) {
  231. // o := orm.NewOrmUsingDB("rddp")
  232. sql := ` DELETE FROM english_video WHERE id=? `
  233. //_, err = o.Raw(sql, Id).Exec()
  234. err = global.DmSQL["rddp"].Exec(sql, Id).Error
  235. return
  236. }
  237. func UpdateEnglishVideoClassifyByFirstSecondClassifyId(classifyId, parentId int) (err error) {
  238. //o := orm.NewOrmUsingDB("rddp")
  239. // 更新相关联的二级分类的parentId,和classify_name_second
  240. sql := `update english_video r
  241. LEFT JOIN english_classify c ON r.classify_id_second = c.id
  242. SET r.classify_id_first=c.parent_id, r.classify_name_second=c.classify_name
  243. where (r.classify_id_first != c.parent_id or r.classify_name_second != c.classify_name) and r.classify_id_second =?`
  244. //_, err = o.Raw(sql, classifyId).Exec()
  245. err = global.DmSQL["rddp"].Exec(sql, classifyId).Error
  246. if err != nil {
  247. return
  248. }
  249. //更新一级分类名
  250. sql = `update english_video r
  251. LEFT JOIN english_classify c ON r.classify_id_first = c.id
  252. SET r.classify_name_first=c.classify_name
  253. where r.classify_name_first != c.classify_name and r.classify_id_first=?`
  254. //_, err = o.Raw(sql, parentId).Exec()
  255. err = global.DmSQL["rddp"].Exec(sql, parentId).Error
  256. if err != nil {
  257. return
  258. }
  259. //更新一级分类名
  260. sql = `update english_video r
  261. LEFT JOIN english_classify c ON r.classify_id_first = c.id
  262. SET r.classify_name_first=c.classify_name
  263. where r.classify_name_first != c.classify_name and r.classify_id_first=?`
  264. //_, err = o.Raw(sql, classifyId).Exec()
  265. err = global.DmSQL["rddp"].Exec(sql, classifyId).Error
  266. return
  267. }
  268. // Update 更新
  269. func (item *EnglishVideo) Update(cols []string) (err error) {
  270. //o := orm.NewOrmUsingDB("rddp")
  271. //_, err = o.Update(item, cols...)
  272. err = global.DmSQL["rddp"].Select(cols).Updates(item).Error
  273. return
  274. }
  275. func GetEnglishVideoCounts(classifyId, parentId int) (count int, err error) {
  276. //o := orm.NewOrmUsingDB("rddp")
  277. sql := ``
  278. if parentId == 0 {
  279. sql = `SELECT COUNT(1) AS count FROM english_video WHERE classify_id_first=? `
  280. } else {
  281. sql = `SELECT COUNT(1) AS count FROM english_video WHERE classify_id_second=? `
  282. }
  283. // err = o.Raw(sql, classifyId).QueryRow(&count)
  284. err = global.DmSQL["rddp"].Raw(sql, classifyId).Scan(&count).Error
  285. return
  286. }
  287. // UpdateEnglishVideoSecondClassifyNameByClassifyId 更新报告分类名称字段
  288. func UpdateEnglishVideoSecondClassifyNameByClassifyId(classifyId int, classifyName string) (err error) {
  289. //o := orm.NewOrmUsingDB("rddp")
  290. sql := " UPDATE english_video SET classify_name_second = ? WHERE classify_id_second = ? "
  291. //_, err = o.Raw(sql, classifyName, classifyId).Exec()
  292. err = global.DmSQL["rddp"].Exec(sql, classifyName, classifyId).Error
  293. return
  294. }
  295. // UpdateEnglishVideoFirstClassifyNameByClassifyId 更新报告分类名称字段
  296. func UpdateEnglishVideoFirstClassifyNameByClassifyId(classifyId int, classifyName string) (err error) {
  297. //o := orm.NewOrmUsingDB("rddp")
  298. sql := " UPDATE english_video SET classify_name_first = ? WHERE classify_id_first = ? "
  299. //_, err = o.Raw(sql, classifyName, classifyId).Exec()
  300. err = global.DmSQL["rddp"].Exec(sql, classifyName, classifyId).Error
  301. return
  302. }
  303. // UpdateEnglishVideoFirstClassifyNameByClassifyId 更新报告分类名称字段
  304. func UpdateEnglishVideoByClassifyId(classifyFirstName, classifySecondName string, firstClassifyId, secondClassifyId int, ids string) (err error) {
  305. //o := orm.NewOrmUsingDB("rddp")
  306. sql := " UPDATE english_video SET classify_name_first = ?,classify_name_second = ?,classify_id_first=?, classify_id_second =? WHERE id IN (" + ids + ") "
  307. //_, err = o.Raw(sql, classifyFirstName, classifySecondName, firstClassifyId, secondClassifyId).Exec()
  308. err = global.DmSQL["rddp"].Exec(sql, classifyFirstName, classifySecondName, firstClassifyId, secondClassifyId).Error
  309. return
  310. }
  311. // GetEnglishVideoByIds 根据IDs获取英文报告列表
  312. func GetEnglishVideoByIds(Ids []int, fieldArr []string) (list []*EnglishVideo, err error) {
  313. listLen := len(Ids)
  314. if listLen == 0 {
  315. return
  316. }
  317. fields := ` * `
  318. if len(fieldArr) > 0 {
  319. fields = strings.Join(fieldArr, ",")
  320. }
  321. //o := orm.NewOrmUsingDB("rddp")
  322. sql := `SELECT ` + fields + ` FROM english_video WHERE id IN (` + utils.GetOrmInReplace(listLen) + `)`
  323. //_, err = o.Raw(sql, Ids).QueryRows(&list)
  324. err = global.DmSQL["rddp"].Raw(sql, Ids).Find(&list).Error
  325. return
  326. }