Files
2026-09-29 10:47:38 +08:00

35 lines
978 B
Go

package srv_acc
import (
"videoweb/pub/models/oplog"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo/options"
)
// constructFilterAndOpts 根据搜索参数构建查询filter和options
func constructFilterAndOpts(param *OpLogSearch) (
bson.M, *options.FindOptions) {
filter := bson.M{}
if param.Path != nil && *param.Path != "" {
filter[oplog.FN.OpLog.Path] = bson.M{"$regex": param.Path}
}
if param.Action != nil && *param.Action != "" {
filter[oplog.FN.OpLog.Action] = param.Action
}
if param.ActId != nil && *param.ActId > 0 {
filter[oplog.FN.OpLog.ActId] = param.ActId
}
if param.StartTime != nil && param.EndTime != nil {
filter[oplog.FN.OpLog.CreatedAt] = bson.M{"$gte": param.StartTime, "$lt": param.EndTime}
}
sort := bson.M{oplog.FN.OpLog.CreatedAt: -1}
opt := &options.FindOptions{}
opt.SetSort(sort)
skip := (param.PageNum - 1) * param.PageSize
opt.SetSkip(skip)
opt.SetLimit(param.PageSize)
return filter, opt
}