1.修改basedo字段类型
2、提供获取authen中用户信息的方法
This commit is contained in:
@@ -16,6 +16,6 @@ type MongoBaseDO struct {
|
|||||||
IsDeleted bool `bson:"isDeleted" json:"isDeleted" default:"false"`
|
IsDeleted bool `bson:"isDeleted" json:"isDeleted" default:"false"`
|
||||||
}
|
}
|
||||||
type User struct {
|
type User struct {
|
||||||
Id interface{} `bson:"_id,omitempty" json:"id"` // MongoDB 默认 ID
|
UserName interface{} `bson:"userName" json:"userName"` // MongoDB 默认 ID
|
||||||
TenantId interface{} `bson:"tenantId" json:"tenantId" default:"1"` // 租户ID
|
TenantId interface{} `bson:"tenantId" json:"tenantId"` // 租户ID
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,9 @@ import (
|
|||||||
"github.com/gogf/gf/v2/errors/gerror"
|
"github.com/gogf/gf/v2/errors/gerror"
|
||||||
"github.com/gogf/gf/v2/frame/g"
|
"github.com/gogf/gf/v2/frame/g"
|
||||||
"github.com/gogf/gf/v2/os/glog"
|
"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/text/gstr"
|
||||||
|
"github.com/gogf/gf/v2/util/gconv"
|
||||||
"go.mongodb.org/mongo-driver/v2/bson"
|
"go.mongodb.org/mongo-driver/v2/bson"
|
||||||
"go.mongodb.org/mongo-driver/v2/mongo"
|
"go.mongodb.org/mongo-driver/v2/mongo"
|
||||||
"go.mongodb.org/mongo-driver/v2/mongo/options"
|
"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 {
|
if err = utils.ValidStructPtr(result); err != nil {
|
||||||
return
|
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...)
|
cur, err := db.Collection(collection).Find(ctx, filter, opts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
@@ -51,14 +58,19 @@ func Find(ctx context.Context, filter bson.M, result interface{}, collection str
|
|||||||
|
|
||||||
// FindOne 查询1条记录
|
// FindOne 查询1条记录
|
||||||
func FindOne(ctx context.Context, filter bson.M, result interface{}, collection string, opts ...options.Lister[options.FindOneOptions]) (err error) {
|
func FindOne(ctx context.Context, filter bson.M, result interface{}, collection string, opts ...options.Lister[options.FindOneOptions]) (err error) {
|
||||||
//if len(filter) == 0 {
|
if len(filter) == 0 {
|
||||||
// err = gerror.New("缺少查询条件")
|
err = gerror.New("缺少查询条件")
|
||||||
// return
|
return
|
||||||
//}
|
}
|
||||||
if err = utils.ValidStructPtr(result); err != nil {
|
if err = utils.ValidStructPtr(result); err != nil {
|
||||||
return
|
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...)
|
cur := db.Collection(collection).FindOne(ctx, filter, opts...)
|
||||||
err = cur.Decode(result)
|
err = cur.Decode(result)
|
||||||
if err == mongo.ErrNoDocuments {
|
if err == mongo.ErrNoDocuments {
|
||||||
@@ -73,7 +85,11 @@ func Delete(ctx context.Context, filter bson.M, collection string, opts ...optio
|
|||||||
err = gerror.New("缺少查询条件")
|
err = gerror.New("缺少查询条件")
|
||||||
return
|
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...)
|
r, err := db.Collection(collection).DeleteMany(ctx, filter, opts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
@@ -88,8 +104,16 @@ func Update(ctx context.Context, filter bson.M, update interface{}, collection s
|
|||||||
err = gerror.New("缺少查询条件")
|
err = gerror.New("缺少查询条件")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
//filter["isDeleted"] = 0
|
filter["isDeleted"] = false
|
||||||
result, err = db.Collection(collection).UpdateMany(ctx, filter, update, opts...)
|
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 {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -98,10 +122,23 @@ func Update(ctx context.Context, filter bson.M, update interface{}, collection s
|
|||||||
|
|
||||||
// Insert 插入多条记录
|
// Insert 插入多条记录
|
||||||
func Insert(ctx context.Context, documents []interface{}, collection string, opts ...options.Lister[options.InsertManyOptions]) (ids []interface{}, err error) {
|
func Insert(ctx context.Context, documents []interface{}, collection string, opts ...options.Lister[options.InsertManyOptions]) (ids []interface{}, err error) {
|
||||||
//for _, document := range documents {
|
user, err := utils.GetUserInfo(ctx)
|
||||||
// gconv.Map(document)["isDeleted"] = 0
|
if err != nil {
|
||||||
//}
|
return
|
||||||
r, err := db.Collection(collection).InsertMany(ctx, documents, opts...)
|
}
|
||||||
|
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 {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -111,11 +148,7 @@ func Insert(ctx context.Context, documents []interface{}, collection string, opt
|
|||||||
|
|
||||||
// Count 查询总数
|
// Count 查询总数
|
||||||
func Count(ctx context.Context, filter bson.M, collection string) (count int64, err error) {
|
func Count(ctx context.Context, filter bson.M, collection string) (count int64, err error) {
|
||||||
//if len(filter) == 0 {
|
filter["isDeleted"] = false
|
||||||
// err = gerror.New("缺少查询条件")
|
|
||||||
// return
|
|
||||||
//}
|
|
||||||
//filter["isDeleted"] = 0
|
|
||||||
// 调用驱动的 CountDocuments,在数据库端执行的
|
// 调用驱动的 CountDocuments,在数据库端执行的
|
||||||
count, err = db.Collection(collection).CountDocuments(ctx, filter)
|
count, err = db.Collection(collection).CountDocuments(ctx, filter)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -70,7 +70,8 @@ func GetUserInfo(ctx context.Context) (user do.User, err error) {
|
|||||||
Db: 1,
|
Db: 1,
|
||||||
}))
|
}))
|
||||||
data, _ := gft.ParseToken(g.RequestFromCtx(ctx))
|
data, _ := gft.ParseToken(g.RequestFromCtx(ctx))
|
||||||
user.Id = gconv.Map(data.Data)["id"]
|
dataMap := gconv.Map(data.Data)
|
||||||
user.TenantId = gconv.Map(data.Data)["tenantId"]
|
user.UserName = dataMap["userName"]
|
||||||
|
user.TenantId = dataMap["tenantId"]
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user