fix
This commit is contained in:
@@ -40,16 +40,24 @@ func (l *AdminUpdateAgentCommissionStatusLogic) AdminUpdateAgentCommissionStatus
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检查状态是否允许修改
|
// 检查状态转换是否合法
|
||||||
if commission.Status == 0 {
|
// 0(已结算) <-> 1(冻结中):允许冻结和解冻相互转换,不涉及钱包余额
|
||||||
return nil, xerr.NewErrMsg("已结算的佣金记录不能修改状态")
|
// 1(冻结中) -> 2(已取消):允许,扣减冻结余额
|
||||||
|
// 2(已取消):已取消的状态无法转换到其他状态
|
||||||
|
if commission.Status == req.Status {
|
||||||
|
return nil, xerr.NewErrMsg("状态未发生变化")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 已取消的状态不能再转换
|
||||||
if commission.Status == 2 {
|
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 {
|
err = l.svcCtx.AgentCommissionModel.Trans(l.ctx, func(ctx context.Context, session sqlx.Session) error {
|
||||||
|
// 保存原始状态用于判断
|
||||||
|
originalStatus := commission.Status
|
||||||
|
|
||||||
// 更新佣金状态
|
// 更新佣金状态
|
||||||
commission.Status = req.Status
|
commission.Status = req.Status
|
||||||
err = l.svcCtx.AgentCommissionModel.UpdateWithVersion(ctx, session, commission)
|
err = l.svcCtx.AgentCommissionModel.UpdateWithVersion(ctx, session, commission)
|
||||||
@@ -63,13 +71,18 @@ func (l *AdminUpdateAgentCommissionStatusLogic) AdminUpdateAgentCommissionStatus
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// 根据状态更新钱包
|
// 根据状态转换更新钱包
|
||||||
if req.Status == 0 {
|
if originalStatus == 0 && req.Status == 1 {
|
||||||
// 解冻操作(状态改为已结算):将金额添加到代理钱包余额
|
// 已结算 -> 冻结中:仅状态转换,增加冻结金额,减少钱包余额。
|
||||||
wallet.Balance += commission.Amount
|
wallet.FrozenBalance += commission.Amount
|
||||||
|
wallet.Balance -= commission.Amount
|
||||||
|
|
||||||
|
} else if originalStatus == 1 && req.Status == 0 {
|
||||||
|
// 冻结中 -> 已结算:仅状态转换,减少冻结金额,增加钱包余额。
|
||||||
wallet.FrozenBalance -= commission.Amount
|
wallet.FrozenBalance -= commission.Amount
|
||||||
} else if req.Status == 2 {
|
wallet.Balance += commission.Amount
|
||||||
// 取消操作(状态改为已取消):只扣减冻结金额
|
} else if originalStatus == 1 && req.Status == 2 {
|
||||||
|
// 冻结中 -> 已取消:减少冻结金额。
|
||||||
wallet.FrozenBalance -= commission.Amount
|
wallet.FrozenBalance -= commission.Amount
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user