35 lines
978 B
Go
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
|
|
}
|