69 lines
1.9 KiB
Go
69 lines
1.9 KiB
Go
|
package dao
|
|||
|
|
|||
|
import (
|
|||
|
"context"
|
|||
|
"go-common/app/service/bbq/common"
|
|||
|
video "go-common/app/service/bbq/video/api/grpc/v1"
|
|||
|
"go-common/library/ecode"
|
|||
|
"go-common/library/log"
|
|||
|
)
|
|||
|
|
|||
|
// BatchVideoInfo .
|
|||
|
func (d *Dao) BatchVideoInfo(c context.Context, svids []int64) (res map[int64]*video.VideoInfo, err error) {
|
|||
|
res = make(map[int64]*video.VideoInfo)
|
|||
|
|
|||
|
videoReq := &video.ListVideoInfoRequest{SvIDs: svids}
|
|||
|
reply, err := d.videoClient.ListVideoInfo(c, videoReq)
|
|||
|
if err != nil {
|
|||
|
log.Errorw(c, "log", "call video service list vidoe info fail", "req", videoReq.String())
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
for _, videoInfo := range reply.List {
|
|||
|
res[videoInfo.VideoBase.Svid] = videoInfo
|
|||
|
}
|
|||
|
log.V(10).Infow(c, "log", "batch video base", "video_info", res)
|
|||
|
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// VideoBase 获取单个svid的VideoBase,不存在则会返回error
|
|||
|
func (d *Dao) VideoBase(c context.Context, mid, svid int64) (res *video.VideoBase, err error) {
|
|||
|
videoInfos, err := d.BatchVideoInfo(c, []int64{svid})
|
|||
|
if err != nil {
|
|||
|
log.Warnw(c, "log", "batch fetch video info fail", "mid", mid, "svid", svid)
|
|||
|
return
|
|||
|
}
|
|||
|
if len(videoInfos) == 0 {
|
|||
|
err = ecode.VideoUnExists
|
|||
|
log.Warnw(c, "log", "get empty video base", "mid", mid, "svid", svid)
|
|||
|
return
|
|||
|
}
|
|||
|
videoInfo, exists := videoInfos[svid]
|
|||
|
if !exists {
|
|||
|
err = ecode.VideoUnExists
|
|||
|
log.Infow(c, "log", "get empty video base", "mid", mid, "svid", svid)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
res = videoInfo.VideoBase
|
|||
|
if res.State == common.VideoStPassReviewReject {
|
|||
|
log.Infow(c, "log", "video state in audit", "mid", mid, "svid", svid, "video_base", res)
|
|||
|
err = ecode.VideoInAudit
|
|||
|
return
|
|||
|
}
|
|||
|
if !common.IsSvStateAvailable(res.State) {
|
|||
|
err = ecode.VideoUnReachable
|
|||
|
log.Infow(c, "log", "video state not available", "mid", mid, "svid", svid, "video_base", res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
if res.State == common.VideoStPassReviewReject && mid != res.Mid {
|
|||
|
err = ecode.VideoUnReachable
|
|||
|
log.Infow(c, "log", "video state only owner available", "mid", mid, "svid", svid, "video_base", res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
return
|
|||
|
}
|