Files
2026-10-26 16:28:14 +08:00

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
}