package utils import ( "gorm.io/gorm" ) // WithTransaction 执行一个包含事务的操作 func WithTransaction(db *gorm.DB, fn func(tx *gorm.DB) error) error { tx := db.Begin() defer func() { if r := recover(); r != nil { tx.Rollback() panic(r) } }() if err := fn(tx); err != nil { tx.Rollback() return err } if err := tx.Commit().Error; err != nil { tx.Rollback() return err } return nil }