This commit is contained in:
2026-04-25 20:44:34 +08:00
parent e89459f093
commit d564f4eb1b

View File

@@ -6,9 +6,9 @@ import (
"time"
"github.com/hibiken/asynq"
"github.com/shopspring/decimal"
"go.uber.org/zap"
api_commands "tyapi-server/internal/application/api/commands"
"tyapi-server/internal/application/api"
finance_services "tyapi-server/internal/domains/finance/services"
product_services "tyapi-server/internal/domains/product/services"
@@ -84,25 +84,23 @@ func (h *ApiTaskHandler) HandleDeduction(ctx context.Context, t *asynq.Task) err
zap.String("amount", payload.Amount),
zap.String("transaction_id", payload.TransactionID))
// 调用钱包服务进行扣款
if h.walletService != nil {
amount, err := decimal.NewFromString(payload.Amount)
if err != nil {
h.logger.Error("金额格式错误", zap.Error(err))
h.updateTaskStatus(ctx, t, "failed", "金额格式错误")
return err
}
if err := h.walletService.Deduct(ctx, payload.UserID, amount, payload.ApiCallID, payload.TransactionID, payload.ProductID); err != nil {
h.logger.Error("扣款处理失败", zap.Error(err))
h.updateTaskStatus(ctx, t, "failed", "扣款处理失败: "+err.Error())
return err
}
} else {
h.logger.Warn("钱包服务未初始化,跳过扣款", zap.String("user_id", payload.UserID))
h.updateTaskStatus(ctx, t, "failed", "钱包服务未初始化")
// 统一走应用服务扣费链路(额度优先,钱包兜底)
if h.apiApplicationService == nil {
h.logger.Warn("API应用服务未初始化无法处理扣款", zap.String("user_id", payload.UserID))
h.updateTaskStatus(ctx, t, "failed", "API应用服务未初始化")
return nil
}
if err := h.apiApplicationService.ProcessDeduction(ctx, &api_commands.ProcessDeductionCommand{
UserID: payload.UserID,
Amount: payload.Amount,
ApiCallID: payload.ApiCallID,
TransactionID: payload.TransactionID,
ProductID: payload.ProductID,
}); err != nil {
h.logger.Error("扣款处理失败", zap.Error(err))
h.updateTaskStatus(ctx, t, "failed", "扣款处理失败: "+err.Error())
return err
}
// 更新任务状态为成功
h.updateTaskStatus(ctx, t, "completed", "")