From 13dc22cfa90aa7148ba5f408b3b2608a88a95142 Mon Sep 17 00:00:00 2001 From: Mrx <18278715334@163.com> Date: Fri, 3 Apr 2026 11:32:45 +0800 Subject: [PATCH] f --- .../adminreviewbankcardwithdrawallogic.go | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/app/main/api/internal/logic/admin_agent/adminreviewbankcardwithdrawallogic.go b/app/main/api/internal/logic/admin_agent/adminreviewbankcardwithdrawallogic.go index 190a0b6..ddb02cf 100644 --- a/app/main/api/internal/logic/admin_agent/adminreviewbankcardwithdrawallogic.go +++ b/app/main/api/internal/logic/admin_agent/adminreviewbankcardwithdrawallogic.go @@ -124,7 +124,7 @@ func (l *AdminReviewBankCardWithdrawalLogic) approveWithdrawal(ctx context.Conte return l.approveAlipayWithdrawal(ctx, session, record) } else { // 银行卡提现:直接更新状态为成功(线下转账) - return l.approveBankCardWithdrawal(ctx, session, record) + return l.approveBankCardWithdrawal(ctx, session, record, taxRate) } } @@ -186,7 +186,7 @@ func (l *AdminReviewBankCardWithdrawalLogic) approveAlipayWithdrawal(ctx context } // 确认银行卡提现 -func (l *AdminReviewBankCardWithdrawalLogic) approveBankCardWithdrawal(ctx context.Context, session sqlx.Session, record *model.AgentWithdrawal) error { +func (l *AdminReviewBankCardWithdrawalLogic) approveBankCardWithdrawal(ctx context.Context, session sqlx.Session, record *model.AgentWithdrawal, taxRate float64) error { // 更新提现记录状态为成功 record.Status = StatusSuccess record.Remark = sql.NullString{String: "管理员确认提现", Valid: true} @@ -233,10 +233,13 @@ func (l *AdminReviewBankCardWithdrawalLogic) approveBankCardWithdrawal(ctx conte if err != nil { return errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR), "查询扣税记录失败: %v", err) } + // 注意:由于在 applyReviewTaxRate 中已经更新过 tax 记录(version 已经递增) + // 这里只需要更新 tax_status 和 tax_time,不需要再次调用 UpdateWithVersion + // 使用普通 Update 方法避免乐观锁冲突 if taxModel.TaxStatus == model.TaxStatusPending { taxModel.TaxStatus = model.TaxStatusSuccess // 扣税状态 = 成功 taxModel.TaxTime = sql.NullTime{Time: time.Now(), Valid: true} - if err := l.svcCtx.AgentWithdrawalTaxModel.UpdateWithVersion(ctx, session, taxModel); err != nil { + if _, err := l.svcCtx.AgentWithdrawalTaxModel.Update(ctx, session, taxModel); err != nil { return errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR), "更新扣税记录失败: %v", err) } } @@ -304,10 +307,12 @@ func (l *AdminReviewBankCardWithdrawalLogic) rejectWithdrawal(ctx context.Contex if err != nil { return errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR), "查询扣税记录失败: %v", err) } + // 注意:由于在 applyReviewTaxRate 中已经更新过 tax 记录(version 已经递增) + // 这里只需要更新 tax_status 和 tax_time,使用普通 Update 方法避免乐观锁冲突 if taxModel.TaxStatus == model.TaxStatusPending { taxModel.TaxStatus = model.TaxStatusFailed // 扣税状态 = 失败 taxModel.TaxTime = sql.NullTime{Time: time.Now(), Valid: true} - if err := l.svcCtx.AgentWithdrawalTaxModel.UpdateWithVersion(ctx, session, taxModel); err != nil { + if _, err := l.svcCtx.AgentWithdrawalTaxModel.Update(ctx, session, taxModel); err != nil { return errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR), "更新扣税记录失败: %v", err) } } @@ -364,10 +369,12 @@ func (l *AdminReviewBankCardWithdrawalLogic) completeWithdrawalSuccess(ctx conte if err != nil { return errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR), "查询扣税记录失败: %v", err) } + // 注意:由于在 applyReviewTaxRate 中已经更新过 tax 记录(version 已经递增) + // 这里只需要更新 tax_status 和 tax_time,使用普通 Update 方法避免乐观锁冲突 if taxModel.TaxStatus == model.TaxStatusPending { taxModel.TaxStatus = model.TaxStatusSuccess // 扣税状态 = 成功 taxModel.TaxTime = sql.NullTime{Time: time.Now(), Valid: true} - if err := l.svcCtx.AgentWithdrawalTaxModel.UpdateWithVersion(ctx, session, taxModel); err != nil { + if _, err := l.svcCtx.AgentWithdrawalTaxModel.Update(ctx, session, taxModel); err != nil { return errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR), "更新扣税记录失败: %v", err) } } @@ -435,10 +442,12 @@ func (l *AdminReviewBankCardWithdrawalLogic) completeWithdrawalFailure(ctx conte if err != nil { return errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR), "查询扣税记录失败: %v", err) } + // 注意:由于在 applyReviewTaxRate 中已经更新过 tax 记录(version 已经递增) + // 这里只需要更新 tax_status 和 tax_time,使用普通 Update 方法避免乐观锁冲突 if taxModel.TaxStatus == model.TaxStatusPending { taxModel.TaxStatus = model.TaxStatusFailed // 扣税状态 = 失败 taxModel.TaxTime = sql.NullTime{Time: time.Now(), Valid: true} - if err := l.svcCtx.AgentWithdrawalTaxModel.UpdateWithVersion(ctx, session, taxModel); err != nil { + if _, err := l.svcCtx.AgentWithdrawalTaxModel.Update(ctx, session, taxModel); err != nil { return errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR), "更新扣税记录失败: %v", err) } }