mirror of
				https://gitee.com/dromara/mayfly-go
				synced 2025-11-04 08:20:25 +08:00 
			
		
		
		
	refactor: 初步提交全局授权凭证-资源多账号改造
This commit is contained in:
		@@ -5,6 +5,7 @@ import (
 | 
			
		||||
	"mayfly-go/pkg/contextx"
 | 
			
		||||
	"mayfly-go/pkg/gormx"
 | 
			
		||||
	"mayfly-go/pkg/model"
 | 
			
		||||
	"mayfly-go/pkg/utils/collx"
 | 
			
		||||
 | 
			
		||||
	"gorm.io/gorm"
 | 
			
		||||
)
 | 
			
		||||
@@ -33,6 +34,14 @@ type Repo[T model.ModelI] interface {
 | 
			
		||||
	// 使用指定gorm db执行,主要用于事务执行
 | 
			
		||||
	UpdateByIdWithDb(ctx context.Context, db *gorm.DB, e T, columns ...string) error
 | 
			
		||||
 | 
			
		||||
	// UpdateByWheres 更新满足wheres条件的数据
 | 
			
		||||
	// @param wheres key => "age > ?" value => 10等
 | 
			
		||||
	UpdateByWheres(ctx context.Context, e T, wheres collx.M, columns ...string) error
 | 
			
		||||
 | 
			
		||||
	// UpdateByWheresWithDb 使用指定gorm.Db更新满足wheres条件的数据
 | 
			
		||||
	// @param wheres key => "age > ?" value => 10等
 | 
			
		||||
	UpdateByWheresWithDb(ctx context.Context, db *gorm.DB, e T, wheres collx.M, columns ...string) error
 | 
			
		||||
 | 
			
		||||
	// 保存实体,实体IsCreate返回true则新增,否则更新
 | 
			
		||||
	Save(ctx context.Context, e T) error
 | 
			
		||||
 | 
			
		||||
@@ -55,6 +64,14 @@ type Repo[T model.ModelI] interface {
 | 
			
		||||
	// 使用指定gorm db执行,主要用于事务执行
 | 
			
		||||
	DeleteByCondWithDb(ctx context.Context, db *gorm.DB, cond any) error
 | 
			
		||||
 | 
			
		||||
	// DeleteByWheres 根据wheres条件进行删除
 | 
			
		||||
	// @param wheres key -> "age > ?" value -> 10等
 | 
			
		||||
	DeleteByWheres(ctx context.Context, wheres collx.M) error
 | 
			
		||||
 | 
			
		||||
	// DeleteByWheresWithDb 使用指定gorm.Db根据wheres条件进行删除
 | 
			
		||||
	// @param wheres key -> "age > ?" value -> 10等
 | 
			
		||||
	DeleteByWheresWithDb(ctx context.Context, db *gorm.DB, wheres collx.M) error
 | 
			
		||||
 | 
			
		||||
	// 根据实体id查询
 | 
			
		||||
	GetById(e T, id uint64, cols ...string) error
 | 
			
		||||
 | 
			
		||||
@@ -67,6 +84,13 @@ type Repo[T model.ModelI] interface {
 | 
			
		||||
	// 根据实体条件查询数据映射至listModels
 | 
			
		||||
	ListByCond(cond any, listModels any, cols ...string) error
 | 
			
		||||
 | 
			
		||||
	// 根据wheres条件进行过滤
 | 
			
		||||
	// @param wheres key -> "age > ?" value -> 10等
 | 
			
		||||
	ListByWheres(wheres collx.M, listModels any, cols ...string) error
 | 
			
		||||
 | 
			
		||||
	// PageQuery 分页查询
 | 
			
		||||
	PageQuery(cond any, pageParam *model.PageParam, toModels any) (*model.PageResult[any], error)
 | 
			
		||||
 | 
			
		||||
	// 获取满足model中不为空的字段值条件的所有数据.
 | 
			
		||||
	//
 | 
			
		||||
	// @param list为数组类型 如 var users *[]User,可指定为非model结构体
 | 
			
		||||
@@ -123,6 +147,24 @@ func (br *RepoImpl[T]) UpdateByIdWithDb(ctx context.Context, db *gorm.DB, e T, c
 | 
			
		||||
	return gormx.UpdateByIdWithDb(db, br.fillBaseInfo(ctx, e), columns...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (br *RepoImpl[T]) UpdateByWheres(ctx context.Context, e T, wheres collx.M, columns ...string) error {
 | 
			
		||||
	if db := contextx.GetDb(ctx); db != nil {
 | 
			
		||||
		return br.UpdateByWheresWithDb(ctx, db, e, wheres, columns...)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	e = br.fillBaseInfo(ctx, e)
 | 
			
		||||
	// model的主键值需为空,否则会带上主键条件
 | 
			
		||||
	e.SetId(0)
 | 
			
		||||
	return gormx.UpdateByWheres(e, wheres)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (br *RepoImpl[T]) UpdateByWheresWithDb(ctx context.Context, db *gorm.DB, e T, wheres collx.M, columns ...string) error {
 | 
			
		||||
	e = br.fillBaseInfo(ctx, e)
 | 
			
		||||
	// model的主键值需为空,否则会带上主键条件
 | 
			
		||||
	e.SetId(0)
 | 
			
		||||
	return gormx.UpdateByWheresWithDb(db, br.fillBaseInfo(ctx, e), wheres, columns...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (br *RepoImpl[T]) Updates(cond any, udpateFields map[string]any) error {
 | 
			
		||||
	return gormx.Updates(br.GetModel(), cond, udpateFields)
 | 
			
		||||
}
 | 
			
		||||
@@ -163,6 +205,23 @@ func (br *RepoImpl[T]) DeleteByCondWithDb(ctx context.Context, db *gorm.DB, cond
 | 
			
		||||
	return gormx.DeleteByCondWithDb(db, br.GetModel(), cond)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (br *RepoImpl[T]) DeleteByWheres(ctx context.Context, wheres collx.M) error {
 | 
			
		||||
	if db := contextx.GetDb(ctx); db != nil {
 | 
			
		||||
		return br.DeleteByWheresWithDb(ctx, db, wheres)
 | 
			
		||||
	}
 | 
			
		||||
	// model的主键值需为空,否则会带上主键条件
 | 
			
		||||
	e := br.GetModel()
 | 
			
		||||
	e.SetId(0)
 | 
			
		||||
	return gormx.DeleteByWheres(e, wheres)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (br *RepoImpl[T]) DeleteByWheresWithDb(ctx context.Context, db *gorm.DB, wheres collx.M) error {
 | 
			
		||||
	// model的主键值需为空,否则会带上主键条件
 | 
			
		||||
	e := br.GetModel()
 | 
			
		||||
	e.SetId(0)
 | 
			
		||||
	return gormx.DeleteByWheresWithDb(db, e, wheres)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (br *RepoImpl[T]) GetById(e T, id uint64, cols ...string) error {
 | 
			
		||||
	if err := gormx.GetById(e, id, cols...); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
@@ -182,6 +241,15 @@ func (br *RepoImpl[T]) ListByCond(cond any, listModels any, cols ...string) erro
 | 
			
		||||
	return gormx.ListByCond(br.GetModel(), cond, listModels, cols...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (br *RepoImpl[T]) ListByWheres(wheres collx.M, listModels any, cols ...string) error {
 | 
			
		||||
	return gormx.ListByWheres(br.GetModel(), wheres, listModels, cols...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (br *RepoImpl[T]) PageQuery(cond any, pageParam *model.PageParam, toModels any) (*model.PageResult[any], error) {
 | 
			
		||||
	qd := gormx.NewQuery(br.GetModel()).WithCondModel(cond)
 | 
			
		||||
	return gormx.PageQuery(qd, pageParam, toModels)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (br *RepoImpl[T]) ListByCondOrder(cond any, list any, order ...string) error {
 | 
			
		||||
	return gormx.ListByCondOrder(br.GetModel(), cond, list, order...)
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user