74 lines
1.6 KiB
Go
74 lines
1.6 KiB
Go
package vidpcountsearcher
|
|
|
|
import (
|
|
"91porn-server/app/service/searcher"
|
|
"91porn-server/models/v/vidmod"
|
|
|
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
)
|
|
|
|
type ObjectID = primitive.ObjectID
|
|
|
|
// VidPlayCountSearcher VidPlayCountSearcher
|
|
type VidPlayCountSearcher struct {
|
|
uid uint64
|
|
typ ResultType
|
|
}
|
|
|
|
// NewVidPlayCountSearcher NewVidPlayCountSearcher
|
|
func NewVidPlayCountSearcher(uid uint64) searcher.Searcher {
|
|
return &VidPlayCountSearcher{
|
|
uid: uid,
|
|
typ: Video,
|
|
}
|
|
}
|
|
|
|
// NewRichVidPlayCountSearcher NewRichVidPlayCountSearcher
|
|
func NewRichVidPlayCountSearcher(uid uint64) searcher.Searcher {
|
|
return &VidPlayCountSearcher{
|
|
uid: uid,
|
|
typ: RichVido,
|
|
}
|
|
}
|
|
|
|
// Search Search
|
|
func (v *VidPlayCountSearcher) Search(unuse searcher.KeyWorder, opt searcher.Opter) (result searcher.Resulter, err error) {
|
|
limitEx := opt.Limit() + 1
|
|
vidList, err := vidmod.VIDListByFakePlayCount(opt.Skip(), limitEx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if len(vidList) == 0 {
|
|
return &Result{
|
|
typ: v.typ,
|
|
dat: []VideoRes{},
|
|
richDat: []RichVidRes{},
|
|
}, nil
|
|
}
|
|
hasNext := false
|
|
if len(vidList) > int(opt.Limit()) {
|
|
hasNext = true
|
|
vidList = vidList[:opt.Limit()]
|
|
}
|
|
if v.typ == Video {
|
|
videoResList, err := searcher.GetVideoResList(v.uid, vidList)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &Result{
|
|
dat: videoResList,
|
|
typ: v.typ,
|
|
hasNext: hasNext,
|
|
}, nil
|
|
}
|
|
richVideoResList, err := searcher.GetRichVideoResList(v.uid, vidList)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &Result{
|
|
richDat: richVideoResList,
|
|
typ: v.typ,
|
|
hasNext: hasNext,
|
|
}, nil
|
|
}
|