f
This commit is contained in:
@@ -6,9 +6,9 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/hibiken/asynq"
|
"github.com/hibiken/asynq"
|
||||||
"github.com/shopspring/decimal"
|
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
|
|
||||||
|
api_commands "tyapi-server/internal/application/api/commands"
|
||||||
"tyapi-server/internal/application/api"
|
"tyapi-server/internal/application/api"
|
||||||
finance_services "tyapi-server/internal/domains/finance/services"
|
finance_services "tyapi-server/internal/domains/finance/services"
|
||||||
product_services "tyapi-server/internal/domains/product/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("amount", payload.Amount),
|
||||||
zap.String("transaction_id", payload.TransactionID))
|
zap.String("transaction_id", payload.TransactionID))
|
||||||
|
|
||||||
// 调用钱包服务进行扣款
|
// 统一走应用服务扣费链路(额度优先,钱包兜底)
|
||||||
if h.walletService != nil {
|
if h.apiApplicationService == nil {
|
||||||
amount, err := decimal.NewFromString(payload.Amount)
|
h.logger.Warn("API应用服务未初始化,无法处理扣款", zap.String("user_id", payload.UserID))
|
||||||
if err != nil {
|
h.updateTaskStatus(ctx, t, "failed", "API应用服务未初始化")
|
||||||
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", "钱包服务未初始化")
|
|
||||||
return nil
|
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", "")
|
h.updateTaskStatus(ctx, t, "completed", "")
|
||||||
|
|||||||
Reference in New Issue
Block a user