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,
|
||
}
|