167 lines
5.3 KiB
Go
167 lines
5.3 KiB
Go
|
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,
|
|||
|
}
|