You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
166 lines
5.3 KiB
166 lines
5.3 KiB
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, |
|
}
|
|
|