@@ -0,0 +1,80 @@
|
||||
package vidtonesearcher
|
||||
|
||||
import (
|
||||
"91porn-server/app/service/searcher"
|
||||
"91porn-server/common/log"
|
||||
"91porn-server/models/s/statvidtotalmod"
|
||||
"91porn-server/models/v/tonerecomod"
|
||||
"91porn-server/models/v/vidmod"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
type ObjectID = primitive.ObjectID
|
||||
|
||||
type VideoSy = searcher.VideoInfo
|
||||
|
||||
// VidToneSearcher VidToneSearcher
|
||||
type goldCoinAreaSearcher struct {
|
||||
uid uint64
|
||||
}
|
||||
|
||||
var zero = int64(0)
|
||||
|
||||
// newGoldCoinAreaSearcher newGoldCoinAreaSearcher
|
||||
func newGoldCoinAreaSearcher(uid uint64) searcher.Searcher {
|
||||
return &goldCoinAreaSearcher{
|
||||
uid: uid,
|
||||
}
|
||||
}
|
||||
|
||||
// Search Search
|
||||
func (g *goldCoinAreaSearcher) Search(unuse searcher.KeyWorder, opt searcher.Opter) (result searcher.Resulter, err error) {
|
||||
limitEx1 := opt.Limit() + 1
|
||||
vidList, err := vidmod.GetPayVidList(opt.Sort(), opt.Skip(), limitEx1)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if len(vidList) == 0 {
|
||||
return &Result{
|
||||
&Resp{
|
||||
Theme: tonerecomod.GoldCoinArea,
|
||||
List: []VideoRes{},
|
||||
PayCount: &zero,
|
||||
},
|
||||
}, nil
|
||||
}
|
||||
hasNext := false
|
||||
if len(vidList) > int(opt.Limit()) {
|
||||
hasNext = true
|
||||
vidList = vidList[:opt.Limit()]
|
||||
}
|
||||
videoInfoList, err := searcher.GetVideoResList(g.uid, vidList)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
log.Info("goldCoinArea search result", log.Any("totalVideoCount", len(vidList)), log.Any("respVideoCount", len(videoInfoList)))
|
||||
payCountMap, err := statvidtotalmod.GetPayCountMap(vidList)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
videoInfoPCList := make([]VideoRes, 0, len(videoInfoList))
|
||||
for _, info := range videoInfoList {
|
||||
if info.VideoInfo.ID == nil {
|
||||
continue
|
||||
}
|
||||
id := *info.VideoInfo.ID
|
||||
payCount := int(payCountMap[id])
|
||||
info.VideoInfo.PayCount = &payCount
|
||||
videoInfoPCList = append(videoInfoPCList, info)
|
||||
}
|
||||
goldCoinAreaPayCount := GetToneValue().GoldCoinAreaPayCount
|
||||
return &Result{
|
||||
&Resp{
|
||||
List: videoInfoPCList,
|
||||
Theme: tonerecomod.GoldCoinArea,
|
||||
PayCount: &goldCoinAreaPayCount,
|
||||
HasNext: hasNext,
|
||||
},
|
||||
}, nil
|
||||
}
|
||||
Reference in New Issue
Block a user