fix and add

This commit is contained in:
2026-01-03 17:53:19 +08:00
parent 0211c67f86
commit 21b4069465
15 changed files with 277 additions and 24 deletions

View File

@@ -2,6 +2,8 @@ package admin_agent
import (
"context"
"errors"
"fmt"
"tydata-server/app/main/api/internal/svc"
"tydata-server/app/main/api/internal/types"
@@ -69,7 +71,27 @@ func (l *AdminBatchUnfreezeAgentCommissionLogic) AdminBatchUnfreezeAgentCommissi
commission.Status = 0
err := l.svcCtx.AgentCommissionModel.UpdateWithVersion(ctx, session, commission)
if err != nil {
return err
// 如果是版本冲突错误,重新查询最新的数据后重试
if errors.Is(err, model.ErrNoRowsUpdate) {
latestCommission, findErr := l.svcCtx.AgentCommissionModel.FindOne(ctx, commission.Id)
if findErr != nil {
return findErr
}
// 检查状态是否已被其他操作修改
if latestCommission.Status != 1 {
return xerr.NewErrCodeMsg(xerr.SERVER_COMMON_ERROR, fmt.Sprintf("佣金 %d 的状态已被其他操作修改,当前状态: %d", commission.Id, latestCommission.Status))
}
// 重新更新状态
latestCommission.Status = 0
updateErr := l.svcCtx.AgentCommissionModel.UpdateWithVersion(ctx, session, latestCommission)
if updateErr != nil {
return updateErr
}
// 更新引用,使用最新的数据
commission.Version = latestCommission.Version
} else {
return err
}
}
// 累加到对应代理商的钱包数据
@@ -92,7 +114,22 @@ func (l *AdminBatchUnfreezeAgentCommissionLogic) AdminBatchUnfreezeAgentCommissi
for _, wallet := range agentWalletMap {
err := l.svcCtx.AgentWalletModel.UpdateWithVersion(ctx, session, wallet)
if err != nil {
return err
// 如果是版本冲突错误,重新查询最新的数据后重试
if errors.Is(err, model.ErrNoRowsUpdate) {
latestWallet, findErr := l.svcCtx.AgentWalletModel.FindOneByAgentId(ctx, wallet.AgentId)
if findErr != nil {
return findErr
}
// 重新累加金额
latestWallet.Balance = wallet.Balance
latestWallet.FrozenBalance = wallet.FrozenBalance
updateErr := l.svcCtx.AgentWalletModel.UpdateWithVersion(ctx, session, latestWallet)
if updateErr != nil {
return updateErr
}
} else {
return err
}
}
}