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