From 8e213c239277cacc377cbb22ee910af7213b4583 Mon Sep 17 00:00:00 2001 From: gazebo Date: Mon, 25 Mar 2019 18:11:34 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E6=95=B0=E6=8D=AE=E5=BA=93=E4=BA=8B?= =?UTF-8?q?=E5=8A=A1=E6=94=AF=E6=8C=81=E5=B5=8C=E5=A5=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/dao/dao.go | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/business/model/dao/dao.go b/business/model/dao/dao.go index 45b709866..610153e7b 100644 --- a/business/model/dao/dao.go +++ b/business/model/dao/dao.go @@ -14,7 +14,8 @@ const ( ) type DaoDB struct { - db orm.Ormer + transactionLevel int + db orm.Ormer } // func GetRows(db *gorm.DB, inPtr interface{}, sql string, values ...interface{}) (err error) { @@ -62,16 +63,28 @@ func WrapDB(ormDb orm.Ormer) *DaoDB { return &DaoDB{db: ormDb} } -func Begin(db *DaoDB) error { - return db.db.Begin() +func Begin(db *DaoDB) (err error) { + if db.transactionLevel == 0 { + err = db.db.Begin() + } + db.transactionLevel++ + return err } -func Commit(db *DaoDB) error { - return db.db.Commit() +func Commit(db *DaoDB) (err error) { + if db.transactionLevel <= 1 { + err = db.db.Commit() + db.transactionLevel = 0 + } else { + db.transactionLevel-- + } + return err } -func Rollback(db *DaoDB) error { - return db.db.Rollback() +func Rollback(db *DaoDB) (err error) { + err = db.db.Rollback() + db.transactionLevel = 0 + return err } func GetRow(db *DaoDB, inPtr interface{}, sql string, values ...interface{}) (err error) {