From af3731797d3f14bb6fd241449387a09b8537a674 Mon Sep 17 00:00:00 2001 From: Cbdlll Date: Tue, 19 May 2026 22:18:56 +0800 Subject: [PATCH] fix Redemption Code Race Condition --- model/redemption.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/model/redemption.go b/model/redemption.go index 957a33be28..68e3c83a6a 100644 --- a/model/redemption.go +++ b/model/redemption.go @@ -6,6 +6,7 @@ import ( "fmt" "gorm.io/gorm" + "gorm.io/gorm/clause" "github.com/songquanpeng/one-api/common" "github.com/songquanpeng/one-api/common/helper" @@ -66,7 +67,7 @@ func Redeem(ctx context.Context, key string, userId int) (quota int64, err error } err = DB.Transaction(func(tx *gorm.DB) error { - err := tx.Set("gorm:query_option", "FOR UPDATE").Where(keyCol+" = ?", key).First(redemption).Error + err := tx.Clauses(clause.Locking{Strength: "UPDATE"}).Where(keyCol+" = ?", key).First(redemption).Error if err != nil { return errors.New("无效的兑换码") }