支付后异步任务先尝试完成订单,如果无法完成再取消
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user