bilibili-backup/app/service/bbq/common/video_state.go

167 lines
5.3 KiB
Go
Raw Normal View History

2019-04-22 10:59:20 +08:00
package common
import "go-common/library/xstr"
/*
https://www.tapd.cn/66539426/prong/stories/view/1166539426001102539
state:
视频的状态有以下几种如何选取合适的状态是该部分的关键
我们拆出了两个层次业务层&详情层先通过业务层获取svid再从详情层获取svid的详情
详情层根据svid获取相应的视频base信息play信息user信息等
业务层根据不同的业务设置相应的state集合根据state去获取相应的svid当然这里也有两种业务层区分在于从其他服务获取svid这里还需要做个后过滤保证视频展示是正确的还是在video-c中获取
也就是说state的选出在于业务层而不是详情层需要业务层自己去保护而详情层在这里仅仅做一次较宽松的保证也就是完全不可见视频的过滤如下架状态
仅自己可见的状态说明该状态可能在同一个业务场景出现主客态区分
个人空间根据是否主客态选择select的state
通知中心选择所有可见视频再根据当前视频是否属于自己可见进行过滤
//点赞列表:暂时不区分主客态
业务说明
个人空间页作品列表区分主客态
关注页除自己可见外的所有状态
搜索
推荐feed页
通知中心含详情中转页
评论
点赞
分享
*/
//视频状态集合
const (
//VideoStRecommend 精选在APP端加权露出
VideoStRecommend = 5
//VideoStHighGrade 优质回查被选为优质在APP端普通露出
VideoStHighGrade = 4
//VideoStCanPlay 回查可放出在APP端普通露出
VideoStCanPlay = 3
//VideoStCheckBack 待冷启动回查在APP端部分区域露出
VideoStCheckBack = 2
//VideoStPassReview 新鲜安全审核通过在APP端普通露出
VideoStPassReview = 1
//VideoStPendingPassReview 新鲜未安全审核在APP端普通露出
VideoStPendingPassReview = 0
//VideoStPassReviewReject 待安全审核在APP端仅自见
VideoStPassReviewReject = -1
//VideoStCheckBackPatialPlay 回查不放出在APP部分放出
VideoStCheckBackPatialPlay = -2
//VideoInActive 安全审核不通过在APP端不可见待物理删除
VideoInActive = -3
//VideoDeleted Up主删除在APP端不可见待物理删除
VideoDeleted = -4
)
//SvAllOutState APP全部可露出状态
var SvAllOutState = []int16{
VideoStPendingPassReview,
VideoStPassReview,
VideoStCanPlay,
VideoStHighGrade,
VideoStRecommend,
}
/*
以下用于最后根据svid获取详情时的过滤用于那些从其他服务获取svid的业务推荐页搜索页点赞列表等
*/
// IsSvStateAvailable 广义上是否可见包含用户自见state用于获取详情当前和owner available一致
func IsSvStateAvailable(state int64) (available bool) {
return IsSvStateOwnerAvailable(state)
}
// IsSvStateGuestAvailable 客态可见的视频状态
func IsSvStateGuestAvailable(state int64) (available bool) {
_, available = svGuestAvailableState[state]
return
}
// IsSvStateOwnerAvailable 主态可见的视频状态
func IsSvStateOwnerAvailable(state int64) (available bool) {
if state == VideoStPassReviewReject {
return true
}
return IsSvStateGuestAvailable(state)
}
// IsRecommendSvStateAvailable 推荐页中的状态过滤
func IsRecommendSvStateAvailable(state int64) (available bool) {
_, available = svRecommendAvailableState[state]
return
}
// IsSearchSvStateAvailable 搜索页中的状态过滤
func IsSearchSvStateAvailable(state int64) (available bool) {
// 暂时复用推荐
return IsRecommendSvStateAvailable(state)
}
// IsTopicSvStateAvailable 话题页中的状态过滤
func IsTopicSvStateAvailable(state int64) (available bool) {
// 暂时复用推荐
return IsRecommendSvStateAvailable(state)
}
var svGuestAvailableState = map[int64]bool{
VideoStCheckBackPatialPlay: true,
VideoStPendingPassReview: true,
VideoStPassReview: true,
VideoStCanPlay: true,
VideoStHighGrade: true,
VideoStRecommend: true,
VideoStCheckBack: true,
}
var svRecommendAvailableState = map[int64]bool{
VideoStPendingPassReview: true,
VideoStPassReview: true,
VideoStCanPlay: true,
VideoStHighGrade: true,
VideoStRecommend: true,
}
/*
以下用于业务逻辑在select语句中state in用于video-c服务中自己进行选取svid的业务关注页个人空间页
*/
// FeedStates .
var FeedStates = xstr.JoinInts(svFeedOutStates)
// SpaceOwnerStates .
var SpaceOwnerStates = xstr.JoinInts(svSpaceOwnerOutStates)
// SpaceFanStates .
var SpaceFanStates = xstr.JoinInts(svSpaceFanOutStates)
// svFeedOutStates .
var svFeedOutStates = []int64{
VideoStCheckBackPatialPlay,
VideoStPendingPassReview,
VideoStPassReview,
VideoStCanPlay,
VideoStHighGrade,
VideoStRecommend,
VideoStCheckBack,
}
// svSpaceOwnerOutStates .
var svSpaceOwnerOutStates = []int64{
VideoStPassReviewReject,
VideoStCheckBackPatialPlay,
VideoStPendingPassReview,
VideoStPassReview,
VideoStCanPlay,
VideoStHighGrade,
VideoStRecommend,
VideoStCheckBack,
}
// svSpaceFanOutStates .
var svSpaceFanOutStates = []int64{
VideoStCheckBackPatialPlay,
VideoStPendingPassReview,
VideoStPassReview,
VideoStCanPlay,
VideoStHighGrade,
VideoStRecommend,
VideoStCheckBack,
}