78 lines
2.1 KiB
Go
78 lines
2.1 KiB
Go
package srv_search
|
|
|
|
import (
|
|
"context"
|
|
"strconv"
|
|
"time"
|
|
"videoweb/pub/common/srvdef"
|
|
"videoweb/pub/esmanager"
|
|
"videoweb/pub/models/actress"
|
|
"videoweb/pub/models/esmod"
|
|
|
|
"go.mongodb.org/mongo-driver/bson"
|
|
"go.mongodb.org/mongo-driver/mongo/options"
|
|
)
|
|
|
|
func getActressEsData(ctx context.Context, minTime, endTime *time.Time, esIndex string) (esmanager.M, *srvdef.SrvErr) {
|
|
data, serr := getActressData(ctx, minTime, endTime)
|
|
if serr != nil {
|
|
return nil, serr
|
|
}
|
|
return actressToEsData(data), nil
|
|
}
|
|
func getActressData(ctx context.Context, minTime, endTime *time.Time) ([]*actress.Actress, *srvdef.SrvErr) {
|
|
pageNumber := 1
|
|
pageSize := 1000
|
|
rsl := make([]*actress.Actress, 0)
|
|
filter := bson.M{}
|
|
if minTime != nil && endTime != nil {
|
|
filter[actress.FN.Actress.UpdatedAt] = bson.M{
|
|
"$gte": minTime,
|
|
"$lte": endTime,
|
|
}
|
|
}
|
|
for {
|
|
opts := &options.FindOptions{}
|
|
opts.SetSort(bson.M{actress.FN.Actress.UpdatedAt: -1})
|
|
opts.SetSkip(int64(pageSize * (pageNumber - 1)))
|
|
opts.SetLimit(int64(pageSize))
|
|
data, serr := actress.FindManyActresss(ctx, filter, opts)
|
|
if serr != nil {
|
|
return nil, serr
|
|
}
|
|
rsl = append(rsl, data...)
|
|
if len(data) < pageSize {
|
|
break
|
|
}
|
|
pageNumber++
|
|
}
|
|
return rsl, nil
|
|
}
|
|
func actressToEsData(data []*actress.Actress) esmanager.M {
|
|
rsl := make(map[string]interface{}, len(data))
|
|
for _, v := range data {
|
|
esInfo := esmod.ESActress{
|
|
Id: v.Id,
|
|
Alias: v.Alias,
|
|
Avatar: v.Avatar,
|
|
Meas: v.Meas,
|
|
Desc: v.Desc,
|
|
Office: v.Office,
|
|
DebutDate: v.DebutDate,
|
|
BornDate: v.BornDate,
|
|
Region: v.Region,
|
|
Score: v.Score,
|
|
Works: v.Works,
|
|
HotValue: v.HotValue,
|
|
Real: v.Real,
|
|
Status: v.Status,
|
|
CreatedAt: v.CreatedAt,
|
|
UpdatedAt: v.UpdatedAt,
|
|
TranslationCategoryId: v.TranslationCategoryId,
|
|
Rank: v.Rank,
|
|
}
|
|
rsl[strconv.FormatInt(v.Id, 10)] = esInfo
|
|
}
|
|
return rsl
|
|
}
|