forked from all_user/stat_center
73 lines
1.6 KiB
Go
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
|
|
}
|