From 161a0a43a92011e47c69bed89881fff7d8491c05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=96=8C?= <259278618@qq.com> Date: Tue, 2 Dec 2025 11:27:35 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9basedo=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=202=E3=80=81=E6=8F=90=E4=BE=9B=E8=8E=B7?= =?UTF-8?q?=E5=8F=96authen=E4=B8=AD=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E7=9A=84=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- do/base_do.go | 4 +-- mongo/mongo.go | 69 +++++++++++++++++++++++++++++++++++++------------- utils/utils.go | 5 ++-- 3 files changed, 56 insertions(+), 22 deletions(-) diff --git a/do/base_do.go b/do/base_do.go index 37c5067..5c4001f 100644 --- a/do/base_do.go +++ b/do/base_do.go @@ -16,6 +16,6 @@ type MongoBaseDO struct { IsDeleted bool `bson:"isDeleted" json:"isDeleted" default:"false"` } type User struct { - Id interface{} `bson:"_id,omitempty" json:"id"` // MongoDB 默认 ID - TenantId interface{} `bson:"tenantId" json:"tenantId" default:"1"` // 租户ID + UserName interface{} `bson:"userName" json:"userName"` // MongoDB 默认 ID + TenantId interface{} `bson:"tenantId" json:"tenantId"` // 租户ID } diff --git a/mongo/mongo.go b/mongo/mongo.go index 3bfa69a..1318dfb 100644 --- a/mongo/mongo.go +++ b/mongo/mongo.go @@ -9,7 +9,9 @@ import ( "github.com/gogf/gf/v2/errors/gerror" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/os/glog" + "github.com/gogf/gf/v2/os/gtime" "github.com/gogf/gf/v2/text/gstr" + "github.com/gogf/gf/v2/util/gconv" "go.mongodb.org/mongo-driver/v2/bson" "go.mongodb.org/mongo-driver/v2/mongo" "go.mongodb.org/mongo-driver/v2/mongo/options" @@ -40,7 +42,12 @@ func Find(ctx context.Context, filter bson.M, result interface{}, collection str if err = utils.ValidStructPtr(result); err != nil { return } - //filter["isDeleted"] = 0 + filter["isDeleted"] = false + user, err := utils.GetUserInfo(ctx) + if err != nil { + return + } + filter["tenantId"] = user.TenantId cur, err := db.Collection(collection).Find(ctx, filter, opts...) if err != nil { return @@ -51,14 +58,19 @@ func Find(ctx context.Context, filter bson.M, result interface{}, collection str // FindOne 查询1条记录 func FindOne(ctx context.Context, filter bson.M, result interface{}, collection string, opts ...options.Lister[options.FindOneOptions]) (err error) { - //if len(filter) == 0 { - // err = gerror.New("缺少查询条件") - // return - //} + if len(filter) == 0 { + err = gerror.New("缺少查询条件") + return + } if err = utils.ValidStructPtr(result); err != nil { return } - //filter["isDeleted"] = 0 + filter["isDeleted"] = false + user, err := utils.GetUserInfo(ctx) + if err != nil { + return + } + filter["tenantId"] = user.TenantId cur := db.Collection(collection).FindOne(ctx, filter, opts...) err = cur.Decode(result) if err == mongo.ErrNoDocuments { @@ -73,7 +85,11 @@ func Delete(ctx context.Context, filter bson.M, collection string, opts ...optio err = gerror.New("缺少查询条件") return } - //filter["isDeleted"] = 0 + user, err := utils.GetUserInfo(ctx) + if err != nil { + return + } + filter["tenantId"] = user.TenantId r, err := db.Collection(collection).DeleteMany(ctx, filter, opts...) if err != nil { return @@ -88,8 +104,16 @@ func Update(ctx context.Context, filter bson.M, update interface{}, collection s err = gerror.New("缺少查询条件") return } - //filter["isDeleted"] = 0 - result, err = db.Collection(collection).UpdateMany(ctx, filter, update, opts...) + filter["isDeleted"] = false + user, err := utils.GetUserInfo(ctx) + if err != nil { + return + } + filter["tenantId"] = user.TenantId + doc := gconv.Map(update) + doc["updater"] = user.UserName + doc["updatedAt"] = gtime.Now().Time + result, err = db.Collection(collection).UpdateMany(ctx, filter, doc, opts...) if err != nil { return } @@ -98,10 +122,23 @@ func Update(ctx context.Context, filter bson.M, update interface{}, collection s // Insert 插入多条记录 func Insert(ctx context.Context, documents []interface{}, collection string, opts ...options.Lister[options.InsertManyOptions]) (ids []interface{}, err error) { - //for _, document := range documents { - // gconv.Map(document)["isDeleted"] = 0 - //} - r, err := db.Collection(collection).InsertMany(ctx, documents, opts...) + user, err := utils.GetUserInfo(ctx) + if err != nil { + return + } + docs := make([]interface{}, 0, len(documents)) + for _, document := range documents { + doc := gconv.Map(document) + delete(doc, "id") + doc["creator"] = user.UserName + doc["createdAt"] = gtime.Now().Time + doc["updater"] = user.UserName + doc["updatedAt"] = gtime.Now().Time + doc["tenantId"] = user.TenantId + doc["isDeleted"] = false + docs = append(docs, doc) + } + r, err := db.Collection(collection).InsertMany(ctx, docs, opts...) if err != nil { return } @@ -111,11 +148,7 @@ func Insert(ctx context.Context, documents []interface{}, collection string, opt // Count 查询总数 func Count(ctx context.Context, filter bson.M, collection string) (count int64, err error) { - //if len(filter) == 0 { - // err = gerror.New("缺少查询条件") - // return - //} - //filter["isDeleted"] = 0 + filter["isDeleted"] = false // 调用驱动的 CountDocuments,在数据库端执行的 count, err = db.Collection(collection).CountDocuments(ctx, filter) return diff --git a/utils/utils.go b/utils/utils.go index 7e319fb..c2d049f 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -70,7 +70,8 @@ func GetUserInfo(ctx context.Context) (user do.User, err error) { Db: 1, })) data, _ := gft.ParseToken(g.RequestFromCtx(ctx)) - user.Id = gconv.Map(data.Data)["id"] - user.TenantId = gconv.Map(data.Data)["tenantId"] + dataMap := gconv.Map(data.Data) + user.UserName = dataMap["userName"] + user.TenantId = dataMap["tenantId"] return }