diff --git a/pkg/usecase/wallet.go b/pkg/usecase/wallet.go index 578528f..0b36f5b 100644 --- a/pkg/usecase/wallet.go +++ b/pkg/usecase/wallet.go @@ -1,6 +1,7 @@ package usecase import ( + "code.30cm.net/digimon/app-cloudep-wallet-service/pkg/domain/entity" "code.30cm.net/digimon/app-cloudep-wallet-service/pkg/domain/repository" "code.30cm.net/digimon/app-cloudep-wallet-service/pkg/domain/usecase" "code.30cm.net/digimon/app-cloudep-wallet-service/pkg/domain/wallet" @@ -252,9 +253,24 @@ func (use *WalletUseCase) UnFreeze(ctx context.Context, tx usecase.WalletTransfe }) } +// RollbackFreeze Rollback 凍結,不可指定金額(剩餘order凍結金額) +// 1. 新增一筆 Rollback 凍結交易 +// 2. 減少 order 餘額 +// 3. 錢包減少凍結餘額 +// 4. 錢包增加可用餘額 +// 5. 錢包變化新增一筆減少凍結餘額資料 +// 6. 錢包變化新增一筆增加可用餘額資料 func (use *WalletUseCase) RollbackFreeze(ctx context.Context, tx usecase.WalletTransferRequest) error { - //TODO implement me - panic("implement me") + tx.TxType = wallet.RollbackFreeze + + return use.ProcessTransaction(ctx, tx, userWalletFlow{ + UID: tx.FromUID, + Asset: tx.Asset, + Actions: []walletActionOption{use.withSubOrder(func(tx *usecase.Transaction, order entity.Transaction) { + tx.Amount = order.Balance + }), use.withLockAvailableAndFreeze(), use.withSubFreeze(), use.withAddAvailable()}, + }) + } func (use *WalletUseCase) RollbackFreezeAddAvailable(ctx context.Context, tx usecase.WalletTransferRequest) error {