支付后异步任务先尝试完成订单,如果无法完成再取消

This commit is contained in:
2025-11-28 19:00:34 +08:00
parent 5b6e50de53
commit 93dfbc92fa
5 changed files with 23 additions and 18 deletions

View File

@@ -18,20 +18,27 @@ import (
"github.com/hibiken/asynq"
)
func HandleCancelTrade(_ context.Context, task *asynq.Task) (err error) {
data := new(events.CancelTradeData)
err = json.Unmarshal(task.Payload(), data)
func HandleCompleteTrade(_ context.Context, task *asynq.Task) (err error) {
event := new(events.CompleteTradeData)
err = json.Unmarshal(task.Payload(), event)
if err != nil {
return fmt.Errorf("解析任务参数失败: %w", err)
}
err = s.Trade.CancelTrade(&s.ModifyTradeData{
TradeNo: data.TradeNo,
Method: data.Method,
}, time.Now())
if err != nil {
return fmt.Errorf("取消交易失败: %w", err)
data := &s.ModifyTradeData{
TradeNo: event.TradeNo,
Method: event.Method,
}
err = s.Trade.CompleteTrade(data)
if err != nil {
slog.Debug("完成交易失败[异步结束订单]", "err", err)
err = s.Trade.CancelTrade(data, time.Now())
if err != nil {
return fmt.Errorf("取消交易失败[异步结束订单]: %w", err)
}
}
return nil
}