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 }