zhangqian
2024-04-26 d0175e436b5987511dfedb713abd19cba6093fab
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package model
 
import (
    "gorm.io/gorm"
    "srm/global"
)
 
func WithTransaction(fns ...func(*gorm.DB) error) error {
    var err error
    tx := global.GVA_DB.Begin()
    defer func() {
        if r := recover(); r != nil {
            tx.Rollback()
            return
        } else if err == nil {
            tx.Commit()
            return
        }
    }()
 
    for _, fn := range fns {
        err = fn(tx)
        if err != nil {
            tx.Rollback()
            return err
        }
    }
 
    return nil
}