Files
stat_center/models/opLogMod/opLog.go
T
2026-05-20 16:13:58 +08:00

73 lines
1.6 KiB
Go

package opLogMod
import (
"context"
"fmt"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"stat/common/log"
"stat/common/mongos"
)
// 初始化model
func Init() {
// 获取数据库表
db = mongos.New(mongos.MgoManager, CollOpLog)
indexes := []mongo.IndexModel{
{
Keys: bson.D{{Key: "createdAt", Value: 1}},
},
{
Keys: bson.D{{Key: "router", Value: 1}},
},
{
Keys: bson.D{{Key: "operator", Value: 1}},
},
}
if _, err := db.CreateIndex(context.Background(), indexes); err != nil {
panic(fmt.Sprintf("Model %s InitIndex error %+v", CollOpLog, err))
}
}
// 增加操作日志
func AddOpLog(ctx context.Context, doc *OpLog) (err error) {
if _, err = db.InsertOne(ctx, doc); err != nil {
log.Error("opLog AddOpLog InsertOne err", log.E(err))
return
}
return
}
// 获取操作日志列表
func GetOpLogList(ctx context.Context, operator *string, router *string, isAdmin *bool, skip, limit int64) (count int64, data []OpLog, err error) {
filter := bson.M{}
if operator != nil {
filter["operator"] = operator
}
if router != nil {
filter["router"] = router
}
if isAdmin != nil {
filter["isAdmin"] = isAdmin
}
sort := bson.D{{"createdAt", -1}}
opts := options.Find().SetSort(sort).SetSkip(skip).SetLimit(limit)
if err = db.Find(ctx, &data, filter, opts); err != nil {
log.Error("opLog GetOpLogList Find err", log.E(err))
return
}
if count, err = db.Count(ctx, filter); err != nil {
log.Error("opLog GetOpLogList Count err", log.E(err))
return
}
return
}