diff --git a/app/mix/service/apiservice.go b/app/mix/service/apiservice.go index caaf906f..14b9395c 100644 --- a/app/mix/service/apiservice.go +++ b/app/mix/service/apiservice.go @@ -2,6 +2,7 @@ package service import ( "fmt" + "math" "service/api/base" "service/api/consts" "service/api/errcode" @@ -1245,22 +1246,26 @@ func (s *Service) ApiGetStreamerRecommList(ctx *gin.Context, req *streamerproto. } // 获取用户游标 + offset := int64(0) recommListLength := int64(len(recommlist)) - offset, err := s.utilGetUserVisitOffset(ctx, req.Mid, recommListLength) - if err != nil { - logger.Error("utilGetUserVisitOffset fail, err: %v", err) - ec = errcode.ErrCodeUserVisitOffsetSrvFail - return + if consts.StreamerRecommThroughput < recommListLength { + offset, err = s.utilGetUserVisitOffset(ctx, req.Mid, recommListLength) + if err != nil { + logger.Error("utilGetUserVisitOffset fail, err: %v", err) + ec = errcode.ErrCodeUserVisitOffsetSrvFail + return + } } // 根据用户游标查询得到结果 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 midList = append(midList, recommlist[index]) } accountList, err := _DefaultAccount.OpListByMids(ctx, &accountproto.OpListByMidsReq{ Mids: midList, + Sort: []string{"_id"}, }) if err != nil { logger.Error("_DefaultAccount OpListByMids fail, err: %v", err) diff --git a/app/mix/service/utilservice.go b/app/mix/service/utilservice.go index 45cf5c6b..774b888a 100644 --- a/app/mix/service/utilservice.go +++ b/app/mix/service/utilservice.go @@ -673,9 +673,10 @@ func (s *Service) utilGetUserVisitOffset(ctx *gin.Context, mid int64, recommlist return } if uservisitoffset == nil { + nowoffset := (offset + consts.StreamerRecommThroughput) % recommlistLength err = _DefaultUserVisitOffset.OpCreate(ctx, &dbstruct.UserVisitOffset{ Id: mid, - StreamerRecommOffset: 0, + StreamerRecommOffset: nowoffset, Ver: 0, }) if err != nil {