by Robin at 20240308

This commit is contained in:
Leufolium 2024-03-08 01:13:48 +08:00
parent 9692680528
commit 47ef06b88f
2 changed files with 13 additions and 7 deletions

View File

@ -2,6 +2,7 @@ package service
import ( import (
"fmt" "fmt"
"math"
"service/api/base" "service/api/base"
"service/api/consts" "service/api/consts"
"service/api/errcode" "service/api/errcode"
@ -1245,22 +1246,26 @@ func (s *Service) ApiGetStreamerRecommList(ctx *gin.Context, req *streamerproto.
} }
// 获取用户游标 // 获取用户游标
offset := int64(0)
recommListLength := int64(len(recommlist)) recommListLength := int64(len(recommlist))
offset, err := s.utilGetUserVisitOffset(ctx, req.Mid, recommListLength) if consts.StreamerRecommThroughput < recommListLength {
offset, err = s.utilGetUserVisitOffset(ctx, req.Mid, recommListLength)
if err != nil { if err != nil {
logger.Error("utilGetUserVisitOffset fail, err: %v", err) logger.Error("utilGetUserVisitOffset fail, err: %v", err)
ec = errcode.ErrCodeUserVisitOffsetSrvFail ec = errcode.ErrCodeUserVisitOffsetSrvFail
return return
} }
}
// 根据用户游标查询得到结果 // 根据用户游标查询得到结果
midList := make([]int64, 0) midList := make([]int64, 0)
for i := 0; i < consts.StreamerRecommThroughput; i++ { for i := 0; i < int(math.Min(float64(consts.StreamerRecommThroughput), float64(recommListLength))); i++ {
index := (offset + int64(i)) % recommListLength index := (offset + int64(i)) % recommListLength
midList = append(midList, recommlist[index]) midList = append(midList, recommlist[index])
} }
accountList, err := _DefaultAccount.OpListByMids(ctx, &accountproto.OpListByMidsReq{ accountList, err := _DefaultAccount.OpListByMids(ctx, &accountproto.OpListByMidsReq{
Mids: midList, Mids: midList,
Sort: []string{"_id"},
}) })
if err != nil { if err != nil {
logger.Error("_DefaultAccount OpListByMids fail, err: %v", err) logger.Error("_DefaultAccount OpListByMids fail, err: %v", err)

View File

@ -673,9 +673,10 @@ func (s *Service) utilGetUserVisitOffset(ctx *gin.Context, mid int64, recommlist
return return
} }
if uservisitoffset == nil { if uservisitoffset == nil {
nowoffset := (offset + consts.StreamerRecommThroughput) % recommlistLength
err = _DefaultUserVisitOffset.OpCreate(ctx, &dbstruct.UserVisitOffset{ err = _DefaultUserVisitOffset.OpCreate(ctx, &dbstruct.UserVisitOffset{
Id: mid, Id: mid,
StreamerRecommOffset: 0, StreamerRecommOffset: nowoffset,
Ver: 0, Ver: 0,
}) })
if err != nil { if err != nil {