refactor: 优化数据库查询构建链式调用

This commit is contained in:
2026-03-27 14:55:44 +08:00
parent 70b8cf0316
commit a23db30957
5 changed files with 9 additions and 19 deletions

View File

@@ -32,7 +32,7 @@ func (d *assetDao) Insert(ctx context.Context, req *dto.CreateAssetReq) (id int6
// Update 更新资产
func (d *assetDao) Update(ctx context.Context, req *dto.UpdateAssetReq) (rows int64, err error) {
r, err := gfdb.DB(ctx).Model(ctx, public.TableNameAsset).Data(&req).OmitEmpty().Where(entity.AssetCol.Id, req.Id).Update()
r, err := gfdb.DB(ctx).Model(ctx, public.TableNameAsset).Data(&req).Where(entity.AssetCol.Id, req.Id).Update()
if err != nil {
return
}
@@ -65,9 +65,7 @@ func (d *assetDao) Count(ctx context.Context, req *dto.ListAssetReq) (count int,
// List 获取资产列表
func (d *assetDao) List(ctx context.Context, req *dto.ListAssetReq, fields ...string) (res []entity.Asset, total int, err error) {
model := d.buildListFilter(ctx, req)
model.Fields(fields)
model.OrderDesc(entity.AssetCol.CreatedAt)
model := d.buildListFilter(ctx, req).Fields(fields).OrderDesc(entity.AssetCol.CreatedAt)
if req.Page != nil {
model.Page(int(req.Page.PageNum), int(req.Page.PageSize))
}
@@ -92,6 +90,5 @@ func (d *assetDao) buildListFilter(ctx context.Context, req *dto.ListAssetReq) *
model.Where(entity.AssetCol.Type, req.Type)
model.Where(entity.AssetCol.CategoryId, req.CategoryId)
model.Where(entity.AssetCol.Status, req.Status)
model.OmitEmptyWhere()
return model
}

View File

@@ -32,7 +32,7 @@ func (d *assetSku) Insert(ctx context.Context, req *dto.CreateAssetSkuReq) (id i
// Update 更新SKU
func (d *assetSku) Update(ctx context.Context, req *dto.UpdateAssetSkuReq) (rows int64, err error) {
r, err := gfdb.DB(ctx).Model(ctx, public.TableNameAssetSku).Data(&req).OmitEmpty().Where(entity.AssetCol.Id, req.Id).Update()
r, err := gfdb.DB(ctx).Model(ctx, public.TableNameAssetSku).Data(&req).Where(entity.AssetCol.Id, req.Id).Update()
if err != nil {
return
}
@@ -60,8 +60,7 @@ func (d *assetSku) GetOne(ctx context.Context, req *dto.GetAssetSkuReq, fields .
// GetListByAssetIdExcludeCurrentSku 根据资产ID获取SKU列表并且排除当前SKU
func (d *assetSku) GetListByAssetIdExcludeCurrentSku(ctx context.Context, assetId int64, req *dto.ListAssetSkuReq, fields ...string) (res []entity.AssetSku, total int, err error) {
model := gfdb.DB(ctx).Model(ctx, public.TableNameAssetSku)
model.Fields(fields)
model := gfdb.DB(ctx).Model(ctx, public.TableNameAssetSku).Fields(fields)
model.Where(entity.AssetSkuCol.AssetId, assetId)
model.WhereNot(entity.AssetSkuCol.Id, req.Id)
if req.Page != nil {
@@ -77,8 +76,7 @@ func (d *assetSku) GetListByAssetIdExcludeCurrentSku(ctx context.Context, assetI
// List 获取SKU列表
func (d *assetSku) List(ctx context.Context, req *dto.ListAssetSkuReq, fields ...string) (res []entity.AssetSku, total int, err error) {
model := d.buildListFilter(ctx, req)
model.Fields(fields)
model := d.buildListFilter(ctx, req).Fields(fields)
model.OrderAsc(entity.AssetSkuCol.Sort)
model.OrderDesc(entity.AssetSkuCol.CreatedAt)
if req.Page != nil {
@@ -108,6 +106,5 @@ func (d *assetSku) buildListFilter(ctx context.Context, req *dto.ListAssetSkuReq
model.WhereGT(entity.AssetSkuCol.Price, req.MinPrice)
model.WhereLT(entity.AssetSkuCol.Price, req.MaxPrice)
}
model.OmitEmptyWhere()
return model
}

View File

@@ -32,7 +32,7 @@ func (d *category) Insert(ctx context.Context, req *dto.CreateCategoryReq) (id i
// Update 更新分类
func (d *category) Update(ctx context.Context, req *dto.UpdateCategoryReq) (rows int64, err error) {
r, err := gfdb.DB(ctx).Model(ctx, public.TableNameCategory).Data(&req).OmitEmpty().Where(entity.CategoryCol.Id, req.Id).Update()
r, err := gfdb.DB(ctx).Model(ctx, public.TableNameCategory).Data(&req).Where(entity.CategoryCol.Id, req.Id).Update()
if err != nil {
return
}
@@ -65,8 +65,7 @@ func (d *category) Count(ctx context.Context, req *dto.ListCategoryReq) (count i
// List 获取分类列表
func (d *category) List(ctx context.Context, req *dto.ListCategoryReq, fields ...string) (res []entity.Category, total int, err error) {
model := d.buildListFilter(ctx, req)
model.Fields(fields)
model := d.buildListFilter(ctx, req).Fields(fields)
model.OrderAsc(entity.CategoryCol.Sort)
model.OrderDesc(entity.CategoryCol.CreatedAt)
if req.Page != nil {
@@ -88,6 +87,5 @@ func (d *category) buildListFilter(ctx context.Context, req *dto.ListCategoryReq
}
model.Where(entity.CategoryCol.ParentId, req.ParentId)
model.Where(entity.CategoryCol.Status, req.Status)
model.OmitEmptyWhere()
return model
}

View File

@@ -35,7 +35,7 @@ func (d *stockBatch) Insert(ctx context.Context, req *dto.CreateSockBatchReq) (i
}
func (d *stockBatch) Update(ctx context.Context, req *dto.UpdateSockBatchReq) (rows int64, err error) {
model := gfdb.DB(ctx).Model(ctx, public.TableNameStockBatch).OmitEmpty().Where(entity.StockBatchCol.Id, req.Id)
model := gfdb.DB(ctx).Model(ctx, public.TableNameStockBatch).Where(entity.StockBatchCol.Id, req.Id)
model.Data(entity.StockBatchCol.BatchQty, &gdb.Counter{
Field: entity.StockBatchCol.BatchQty,
Value: gconv.Float64(req.BatchQty),

View File

@@ -46,8 +46,7 @@ func (d *stockDetails) Count(ctx context.Context, req *dto.GetSockDetailsReq) (c
}
func (d *stockDetails) List(ctx context.Context, req *dto.GetSockDetailsReq, fields ...string) (res []entity.StockDetails, total int, err error) {
model := d.buildListFilter(ctx, req)
model.Fields(fields)
model := d.buildListFilter(ctx, req).Fields(fields)
model.OrderDesc(entity.StockDetailsCol.CreatedAt)
if req.Page != nil {
model.Page(int(req.Page.PageNum), int(req.Page.PageSize))
@@ -67,6 +66,5 @@ func (d *stockDetails) buildListFilter(ctx context.Context, req *dto.GetSockDeta
model.Where(entity.StockDetailsCol.AssetId, req.AssetId)
model.Where(entity.StockDetailsCol.AssetSkuId, req.AssetSkuId)
model.Where(entity.StockDetailsCol.Status, req.Status)
model.OmitEmptyWhere()
return model
}