fix and add
This commit is contained in:
@@ -28,9 +28,9 @@ func NewAdminUpdateAgentCommissionStatusLogic(ctx context.Context, svcCtx *svc.S
|
||||
}
|
||||
|
||||
func (l *AdminUpdateAgentCommissionStatusLogic) AdminUpdateAgentCommissionStatus(req *types.AdminUpdateAgentCommissionStatusReq) (resp *types.AdminUpdateAgentCommissionStatusResp, err error) {
|
||||
// 验证状态值
|
||||
if req.Status != 0 && req.Status != 1 && req.Status != 2 {
|
||||
return nil, xerr.NewErrMsg("无效的状态值,状态必须为0(已结算)、1(冻结中)或2(已取消)")
|
||||
// 验证状态值:不允许手动设置为2(已取消),只能设置为0或1
|
||||
if req.Status != 0 && req.Status != 1 {
|
||||
return nil, xerr.NewErrMsg("无效的状态值,状态必须为0(已结算)或1(冻结中)")
|
||||
}
|
||||
commission, err := l.svcCtx.AgentCommissionModel.FindOne(l.ctx, req.Id)
|
||||
if err != nil {
|
||||
@@ -41,9 +41,8 @@ func (l *AdminUpdateAgentCommissionStatusLogic) AdminUpdateAgentCommissionStatus
|
||||
}
|
||||
|
||||
// 检查状态转换是否合法
|
||||
// 0(已结算) <-> 1(冻结中):允许冻结和解冻相互转换,不涉及钱包余额
|
||||
// 1(冻结中) -> 2(已取消):允许,扣减冻结余额
|
||||
// 2(已取消):已取消的状态无法转换到其他状态
|
||||
// 0(已结算) <-> 1(冻结中):允许冻结和解冻相互转换
|
||||
// 2(已取消):已取消的状态无法转换到其他状态(由订单退款自动触发)
|
||||
if commission.Status == req.Status {
|
||||
return nil, xerr.NewErrMsg("状态未发生变化")
|
||||
}
|
||||
@@ -73,17 +72,22 @@ func (l *AdminUpdateAgentCommissionStatusLogic) AdminUpdateAgentCommissionStatus
|
||||
|
||||
// 根据状态转换更新钱包
|
||||
if originalStatus == 0 && req.Status == 1 {
|
||||
// 已结算 -> 冻结中:仅状态转换,增加冻结金额,减少钱包余额。
|
||||
// 已结算 -> 冻结中:增加冻结金额,减少钱包余额
|
||||
// 检查钱包余额是否足够
|
||||
if wallet.Balance < commission.Amount {
|
||||
return xerr.NewErrMsg("钱包余额不足,无法冻结")
|
||||
}
|
||||
wallet.FrozenBalance += commission.Amount
|
||||
wallet.Balance -= commission.Amount
|
||||
|
||||
} else if originalStatus == 1 && req.Status == 0 {
|
||||
// 冻结中 -> 已结算:仅状态转换,减少冻结金额,增加钱包余额。
|
||||
// 冻结中 -> 已结算:减少冻结金额,增加钱包余额
|
||||
// 检查冻结余额是否足够
|
||||
if wallet.FrozenBalance < commission.Amount {
|
||||
return xerr.NewErrMsg("冻结余额不足,无法解冻")
|
||||
}
|
||||
wallet.FrozenBalance -= commission.Amount
|
||||
wallet.Balance += commission.Amount
|
||||
} else if originalStatus == 1 && req.Status == 2 {
|
||||
// 冻结中 -> 已取消:减少冻结金额。
|
||||
wallet.FrozenBalance -= commission.Amount
|
||||
}
|
||||
|
||||
err = l.svcCtx.AgentWalletModel.UpdateWithVersion(ctx, session, wallet)
|
||||
|
||||
Reference in New Issue
Block a user