优化支付流程,扩展产品价格返回字段

This commit is contained in:
2026-06-18 12:15:30 +08:00
parent 9c6b07ad8c
commit 5bb65216a9
9 changed files with 210 additions and 87 deletions

View File

@@ -3,10 +3,11 @@ package tasks
import (
"context"
"encoding/json"
"errors"
"fmt"
"log/slog"
"platform/web/events"
q "platform/web/queries"
m "platform/web/models"
s "platform/web/services"
"github.com/hibiken/asynq"
@@ -24,19 +25,30 @@ func HandleCompleteTrade(_ context.Context, task *asynq.Task) error {
Method: event.Method,
}
// 尝试完成交易
user, err := s.User.Get(q.Q, event.UserId)
if err != nil {
return fmt.Errorf("获取用户失败: %w", err)
// 关闭交易
err := s.Trade.CancelTrade(&data)
if errors.Is(err, s.ErrTradeStatusIgnored) {
result, err := s.Trade.CheckTrade(&data)
if err != nil {
return fmt.Errorf("检查交易状态失败: %w", err)
}
switch result.Status {
case m.TradeStatusSuccess:
if err := s.Trade.UpdateRemark(data.TradeNo, "已付款"); err != nil {
slog.Error("添加备注失败", "err", err)
}
case m.TradeStatusCanceled:
slog.Debug("交易已取消", "status", result.Status)
default:
return fmt.Errorf("意外交易状态: %v", result.Status)
}
return nil
}
if err := s.Trade.CompleteTrade(user, &data); err != nil {
slog.Debug("结束交易失败:完成交易失败", "err", err)
// 交易无法完成,关闭交易
if err := s.Trade.CancelTrade(&data); err != nil {
return fmt.Errorf("结束交易失败:取消交易失败: %w", err)
}
if err != nil {
return fmt.Errorf("结束交易失败:取消交易失败: %w", err)
}
return nil