video_state.go 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. package common
  2. import "go-common/library/xstr"
  3. /*
  4. https://www.tapd.cn/66539426/prong/stories/view/1166539426001102539
  5. state:
  6. 视频的状态有以下几种,如何选取合适的状态是该部分的关键
  7. 我们拆出了两个层次:业务层&详情层,先通过业务层获取svid,再从详情层获取svid的详情
  8. 详情层:根据svid获取相应的视频base信息、play信息、user信息等
  9. 业务层:根据不同的业务,设置相应的state集合,根据state去获取相应的svid(当然这里也有两种业务层区分,在于从其他服务获取svid(这里还需要做个后过滤,保证视频展示是正确的),还是在video-c中获取)
  10. 也就是说,state的选出在于业务层而不是详情层,需要业务层自己去保护,而详情层在这里仅仅做一次较宽松的保证(也就是完全不可见视频的过滤,如下架状态)
  11. 仅自己可见的状态说明:该状态可能在同一个业务场景出现主客态区分
  12. 个人空间:根据是否主客态选择select的state
  13. 通知中心:选择所有可见视频,再根据当前视频是否属于自己可见进行过滤
  14. //点赞列表:暂时不区分主客态
  15. 业务说明:
  16. 个人空间页:作品列表区分主客态
  17. 关注页:除自己可见外的所有状态
  18. 搜索:
  19. 推荐feed页:
  20. 通知中心,含详情中转页:
  21. 评论
  22. 点赞
  23. 分享
  24. */
  25. //视频状态集合
  26. const (
  27. //VideoStRecommend 精选,在APP端加权露出
  28. VideoStRecommend = 5
  29. //VideoStHighGrade 优质,回查被选为优质,在APP端普通露出
  30. VideoStHighGrade = 4
  31. //VideoStCanPlay 回查可放出,在APP端普通露出
  32. VideoStCanPlay = 3
  33. //VideoStCheckBack 待冷启动回查,在APP端部分区域露出
  34. VideoStCheckBack = 2
  35. //VideoStPassReview 新鲜,安全审核通过,在APP端普通露出
  36. VideoStPassReview = 1
  37. //VideoStPendingPassReview 新鲜,未安全审核,在APP端普通露出
  38. VideoStPendingPassReview = 0
  39. //VideoStPassReviewReject 待安全审核,在APP端仅自见
  40. VideoStPassReviewReject = -1
  41. //VideoStCheckBackPatialPlay 回查不放出,在APP部分放出
  42. VideoStCheckBackPatialPlay = -2
  43. //VideoInActive 安全审核不通过,在APP端不可见,待物理删除
  44. VideoInActive = -3
  45. //VideoDeleted Up主删除,在APP端不可见,待物理删除
  46. VideoDeleted = -4
  47. )
  48. //SvAllOutState APP全部可露出状态
  49. var SvAllOutState = []int16{
  50. VideoStPendingPassReview,
  51. VideoStPassReview,
  52. VideoStCanPlay,
  53. VideoStHighGrade,
  54. VideoStRecommend,
  55. }
  56. /*
  57. 以下用于最后根据svid获取详情时的过滤,用于那些从其他服务获取svid的业务:推荐页、搜索页、点赞列表等
  58. */
  59. // IsSvStateAvailable 广义上是否可见,包含用户自见state,用于获取详情,当前和owner available一致
  60. func IsSvStateAvailable(state int64) (available bool) {
  61. return IsSvStateOwnerAvailable(state)
  62. }
  63. // IsSvStateGuestAvailable 客态可见的视频状态
  64. func IsSvStateGuestAvailable(state int64) (available bool) {
  65. _, available = svGuestAvailableState[state]
  66. return
  67. }
  68. // IsSvStateOwnerAvailable 主态可见的视频状态
  69. func IsSvStateOwnerAvailable(state int64) (available bool) {
  70. if state == VideoStPassReviewReject {
  71. return true
  72. }
  73. return IsSvStateGuestAvailable(state)
  74. }
  75. // IsRecommendSvStateAvailable 推荐页中的状态过滤
  76. func IsRecommendSvStateAvailable(state int64) (available bool) {
  77. _, available = svRecommendAvailableState[state]
  78. return
  79. }
  80. // IsSearchSvStateAvailable 搜索页中的状态过滤
  81. func IsSearchSvStateAvailable(state int64) (available bool) {
  82. // 暂时复用推荐
  83. return IsRecommendSvStateAvailable(state)
  84. }
  85. // IsTopicSvStateAvailable 话题页中的状态过滤
  86. func IsTopicSvStateAvailable(state int64) (available bool) {
  87. // 暂时复用推荐
  88. return IsRecommendSvStateAvailable(state)
  89. }
  90. var svGuestAvailableState = map[int64]bool{
  91. VideoStCheckBackPatialPlay: true,
  92. VideoStPendingPassReview: true,
  93. VideoStPassReview: true,
  94. VideoStCanPlay: true,
  95. VideoStHighGrade: true,
  96. VideoStRecommend: true,
  97. VideoStCheckBack: true,
  98. }
  99. var svRecommendAvailableState = map[int64]bool{
  100. VideoStPendingPassReview: true,
  101. VideoStPassReview: true,
  102. VideoStCanPlay: true,
  103. VideoStHighGrade: true,
  104. VideoStRecommend: true,
  105. }
  106. /*
  107. 以下用于业务逻辑在select语句中state in,用于video-c服务中自己进行选取svid的业务,如:关注页、个人空间页
  108. */
  109. // FeedStates .
  110. var FeedStates = xstr.JoinInts(svFeedOutStates)
  111. // SpaceOwnerStates .
  112. var SpaceOwnerStates = xstr.JoinInts(svSpaceOwnerOutStates)
  113. // SpaceFanStates .
  114. var SpaceFanStates = xstr.JoinInts(svSpaceFanOutStates)
  115. // svFeedOutStates .
  116. var svFeedOutStates = []int64{
  117. VideoStCheckBackPatialPlay,
  118. VideoStPendingPassReview,
  119. VideoStPassReview,
  120. VideoStCanPlay,
  121. VideoStHighGrade,
  122. VideoStRecommend,
  123. VideoStCheckBack,
  124. }
  125. // svSpaceOwnerOutStates .
  126. var svSpaceOwnerOutStates = []int64{
  127. VideoStPassReviewReject,
  128. VideoStCheckBackPatialPlay,
  129. VideoStPendingPassReview,
  130. VideoStPassReview,
  131. VideoStCanPlay,
  132. VideoStHighGrade,
  133. VideoStRecommend,
  134. VideoStCheckBack,
  135. }
  136. // svSpaceFanOutStates .
  137. var svSpaceFanOutStates = []int64{
  138. VideoStCheckBackPatialPlay,
  139. VideoStPendingPassReview,
  140. VideoStPassReview,
  141. VideoStCanPlay,
  142. VideoStHighGrade,
  143. VideoStRecommend,
  144. VideoStCheckBack,
  145. }