123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- package video
- import (
- "github.com/beego/beego/v2/client/orm"
- "github.com/rdlucklib/rdluck_tools/paging"
- "strconv"
- "strings"
- "time"
- )
- type Video struct {
- VideoId int `orm:"column(video_id);pk" description:"视频id"`
- Title string `description:"视频标题"`
- VideoUrl string `description:"视频地址"`
- VideoCoverUrl string `description:"视频封面地址"`
- Status int `description:"视频状态:0:未发布,1:已发布"`
- PublishTime time.Time `description:"视频发布时间"`
- PlaySeconds uint32 `description:"视频播放时长"`
- CreateTime time.Time `description:"视频创建时间"`
- ModifyTime time.Time `description:"视频修改时间"`
- }
- //视频保存请求参数
- type VideoSaveReq struct {
- Title string `description:"视频标题"`
- VideoUrl string `description:"视频地址"`
- VideoCoverUrl string `description:"视频封面地址"`
- TagsIdStr string `description:"标签id,多个用英文逗号隔开"`
- PlaySeconds uint32 `description:"视频播放时长"`
- }
- //视频保存返回参数
- type VideoSaveResp struct {
- VideoId int `description:"视频id"`
- }
- //新增视频
- func AddVideo(item *Video) (newId int64, err error) {
- o := orm.NewOrmUsingDB("rddp")
- newId, err = o.Insert(item)
- return
- }
- //申请转正请求参数
- type VideoDeleteReq struct {
- VideoId int `description:"视频id"`
- }
- func DeleteVideo(videoId int) (err error) {
- o := orm.NewOrmUsingDB("rddp")
- to, err := o.Begin()
- if err != nil {
- return
- }
- defer func() {
- if err != nil {
- _ = to.Rollback()
- } else {
- _ = to.Commit()
- }
- }()
- sql := `DELETE FROM video WHERE video_id=? `
- _, err = to.Raw(sql, videoId).Exec()
- if err != nil {
- return
- }
- tagSql := ` DELETE FROM video_tags WHERE video_id=? `
- _, err = to.Raw(tagSql, videoId).Exec()
- if err != nil {
- return
- }
- return
- }
- func GetVideoIdByKeyWord(keyWord string) (video_id string, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := ` SELECT GROUP_CONCAT(DISTINCT a.video_id) AS video_id FROM video_tags AS a
- INNER JOIN tags AS b ON a.tags_id=b.tags_id
- WHERE b.tags_name LIKE '%` + keyWord + `%'`
- err = o.Raw(sql).QueryRow(&video_id)
- return
- }
- func GetVideoListCount(condition string, pars []interface{}) (count int, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := `SELECT COUNT(1) AS count
- FROM video AS a
- WHERE 1=1 `
- if condition != "" {
- sql += condition
- }
- err = o.Raw(sql, pars).QueryRow(&count)
- return
- }
- type VideoList struct {
- VideoId int `description:"视频id"`
- Title string `description:"视频标题"`
- VideoUrl string `description:"视频地址"`
- VideoCoverUrl string `description:"视频封面地址"`
- Status int `description:"视频状态:0:未发布,1:已发布"`
- PublishTime time.Time `description:"视频发布时间"`
- PlaySeconds uint32 `description:"视频播放时长"`
- CreateTime time.Time `description:"视频创建时间"`
- ModifyTime time.Time `description:"视频修改时间"`
- TagsName string `description:"标签名称"`
- TagsId string `description:"标签ID"`
- }
- func GetVideoList(condition string, pars []interface{}, startSize, pageSize int) (items []*VideoList, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := `SELECT a.*,GROUP_CONCAT(c.tags_name SEPARATOR ',') AS tags_name
- ,GROUP_CONCAT(c.tags_id SEPARATOR ',') AS tags_id
- FROM video AS a
- INNER JOIN video_tags AS b ON a.video_id=b.video_id
- INNER JOIN tags AS c ON b.tags_id=c.tags_id `
- if condition != "" {
- sql += condition
- }
- sql += ` GROUP BY a.video_id ORDER BY a.modify_time DESC LIMIT ?,? `
- _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
- return
- }
- type VideoListResp struct {
- Paging *paging.PagingItem
- List []*VideoList
- }
- //申请转正请求参数
- type VideoPublishReq struct {
- VideoIds string `description:"视频id,多个用英文逗号隔开"`
- }
- func PublishVideo(videoIds string) (err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := `UPDATE video SET status=1,publish_time=NOW(),modify_time=NOW() WHERE video_id IN(` + videoIds + `)`
- _, err = o.Raw(sql).Exec()
- return
- }
- //视频保存请求参数
- type VideoEditReq struct {
- VideoId int `description:"视频id"`
- Title string `description:"视频标题"`
- VideoUrl string `description:"视频地址"`
- VideoCoverUrl string `description:"视频封面地址"`
- TagsIdStr string `description:"标签id,多个用英文逗号隔开"`
- PlaySeconds uint32 `description:"视频播放时长"`
- }
- //新增视频
- func EditVideo(item *Video, tagsIds string) (err error) {
- o := orm.NewOrmUsingDB("rddp")
- to, err := o.Begin()
- if err != nil {
- return
- }
- defer func() {
- if err != nil {
- _ = to.Rollback()
- } else {
- _ = to.Commit()
- }
- }()
- sql := ` UPDATE video SET title = ?, video_url = ?,video_cover_url = ?, modify_time = NOW(), play_seconds = ? WHERE video_id = ? `
- _, err = to.Raw(sql, item.Title, item.VideoUrl, item.VideoCoverUrl, item.PlaySeconds, item.VideoId).Exec()
- if err != nil {
- return
- }
- sql = ` DELETE FROM video_tags WHERE video_id = ? `
- _, err = to.Raw(sql, item.VideoId).Exec()
- if err != nil {
- return
- }
- if tagsIds != "" {
- tagsArr := strings.Split(tagsIds, ",")
- for _, v := range tagsArr {
- tagId, _ := strconv.Atoi(v)
- tagItem := new(VideoTags)
- tagItem.VideoId = item.VideoId
- tagItem.TagsId = tagId
- err = AddVideoTags(tagItem)
- if err != nil {
- return
- }
- }
- }
- return
- }
- func PublishVideoCancel(videoIds string) (err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := `UPDATE video SET status=0,publish_time=null,modify_time=NOW() WHERE video_id IN(` + videoIds + `)`
- _, err = o.Raw(sql).Exec()
- return
- }
- func GetVideoByTitle(title string) (count int, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := ` SELECT COUNT(1) AS count FROM video WHERE title =? `
- err = o.Raw(sql, title).QueryRow(&count)
- return
- }
|