From 7d3c63175dc8e0f56602c37f612fd3ae81b70247 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E8=8C=B6=E6=B8=85=E6=AC=A2?= Date: Fri, 25 Apr 2025 11:18:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=87=E7=BA=A7ListAndTotal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- abstract/database.go | 2 +- base.go | 23 +++++++++++++---------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/abstract/database.go b/abstract/database.go index dffcbbd..930027f 100644 --- a/abstract/database.go +++ b/abstract/database.go @@ -27,7 +27,7 @@ type IDatabase interface { // List 查询数据列表 List(dbInstance *gorm.DB, result any, optionFuncList ...define.SetOption) error // ListAndTotal 查询列表并返回满足条件数据总数 - ListAndTotal(dbInstance *gorm.DB, listRes any, disableTotal bool, optionFuncList ...define.SetOption) (int64, error) + ListAndTotal(dbInstance *gorm.DB, listRes any, totalRes *int64, disableTotal bool, optionFuncList ...define.SetOption) error // Delete 删除数据 Delete(dbInstance *gorm.DB, dataModel any, optionFuncList ...define.SetOption) (int64, error) // Detail 数据详情 diff --git a/base.go b/base.go index bb0ed42..8099189 100644 --- a/base.go +++ b/base.go @@ -74,30 +74,33 @@ func (b *BaseDao) List(dbInstance *gorm.DB, result any, optionFuncList ...define // Author : go_developer@163.com<白茶清欢> // // Date : 16:04 2025/2/26 -func (b *BaseDao) ListAndTotal(dbInstance *gorm.DB, listRes any, disableTotal bool, optionFuncList ...define.SetOption) (int64, error) { - if err := b.receiverTypeValid(listRes); nil != err { - return 0, err - } +func (b *BaseDao) ListAndTotal(dbInstance *gorm.DB, listRes any, totalRes *int64, disableTotal bool, optionFuncList ...define.SetOption) error { var ( - cnt int64 err error ) + if err = b.receiverTypeValid(listRes); nil != err { + return err + } + if err = b.receiverTypeValid(totalRes); nil != err { + return err + } dbInstance = b.setTxCondition(dbInstance, optionFuncList...) if err = dbInstance.Find(listRes).Error; nil != err { // 列表查询失败 - return 0, err + return err } if disableTotal { // 禁用查询总数 - return int64(reflect.ValueOf(listRes).Elem().Len()), nil + *totalRes = int64(reflect.ValueOf(listRes).Elem().Len()) + return nil } optionFuncList = append(optionFuncList, WithClearLimit()) dbInstance = b.setTxCondition(dbInstance, optionFuncList...) - if err = dbInstance.Count(&cnt).Error; nil != err { - return 0, err + if err = dbInstance.Count(totalRes).Error; nil != err { + return err } - return cnt, nil + return nil } // Delete 删除数据, 硬删除, 对应 delete语句