From cc039fcf3568b8a3e8487a525e05b2cd930560d0 Mon Sep 17 00:00:00 2001 From: 18278715334 <18278715334@163.com> Date: Wed, 31 Dec 2025 14:56:31 +0800 Subject: [PATCH] fix --- .../adminupdateagentcommissionstatuslogic.go | 33 +++++++++++++------ 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/app/main/api/internal/logic/admin_agent/adminupdateagentcommissionstatuslogic.go b/app/main/api/internal/logic/admin_agent/adminupdateagentcommissionstatuslogic.go index e51fb59..e8d8b27 100644 --- a/app/main/api/internal/logic/admin_agent/adminupdateagentcommissionstatuslogic.go +++ b/app/main/api/internal/logic/admin_agent/adminupdateagentcommissionstatuslogic.go @@ -40,16 +40,24 @@ func (l *AdminUpdateAgentCommissionStatusLogic) AdminUpdateAgentCommissionStatus return nil, err } - // 检查状态是否允许修改 - if commission.Status == 0 { - return nil, xerr.NewErrMsg("已结算的佣金记录不能修改状态") + // 检查状态转换是否合法 + // 0(已结算) <-> 1(冻结中):允许冻结和解冻相互转换,不涉及钱包余额 + // 1(冻结中) -> 2(已取消):允许,扣减冻结余额 + // 2(已取消):已取消的状态无法转换到其他状态 + if commission.Status == req.Status { + return nil, xerr.NewErrMsg("状态未发生变化") } + + // 已取消的状态不能再转换 if commission.Status == 2 { - return nil, xerr.NewErrMsg("已取消的佣金记录不能修改状态") + return nil, xerr.NewErrMsg("已取消的佣金状态不能转换") } // 开始事务 err = l.svcCtx.AgentCommissionModel.Trans(l.ctx, func(ctx context.Context, session sqlx.Session) error { + // 保存原始状态用于判断 + originalStatus := commission.Status + // 更新佣金状态 commission.Status = req.Status err = l.svcCtx.AgentCommissionModel.UpdateWithVersion(ctx, session, commission) @@ -63,13 +71,18 @@ func (l *AdminUpdateAgentCommissionStatusLogic) AdminUpdateAgentCommissionStatus return err } - // 根据状态更新钱包 - if req.Status == 0 { - // 解冻操作(状态改为已结算):将金额添加到代理钱包余额 - wallet.Balance += commission.Amount + // 根据状态转换更新钱包 + if originalStatus == 0 && req.Status == 1 { + // 已结算 -> 冻结中:仅状态转换,增加冻结金额,减少钱包余额。 + wallet.FrozenBalance += commission.Amount + wallet.Balance -= commission.Amount + + } else if originalStatus == 1 && req.Status == 0 { + // 冻结中 -> 已结算:仅状态转换,减少冻结金额,增加钱包余额。 wallet.FrozenBalance -= commission.Amount - } else if req.Status == 2 { - // 取消操作(状态改为已取消):只扣减冻结金额 + wallet.Balance += commission.Amount + } else if originalStatus == 1 && req.Status == 2 { + // 冻结中 -> 已取消:减少冻结金额。 wallet.FrozenBalance -= commission.Amount }