feat(admin,api,player): 代理层级管理、额度上下分与玩家钱包详情
新增代理管理器与二级代理体系,完善信用额度/上下分上下文与冻结策略;代理端玩家与子代理管理增强;玩家端新增钱包详情页与交易筛选优化。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -14,15 +14,33 @@ export interface AgentCreateForm {
|
||||
userId: string;
|
||||
creditLimit: number;
|
||||
cashbackRate: number;
|
||||
maxSingleDeposit: number;
|
||||
maxDailyDeposit: number;
|
||||
phone: string;
|
||||
email: string;
|
||||
}
|
||||
|
||||
export interface AgentEditForm {
|
||||
id: string;
|
||||
username: string;
|
||||
status: string;
|
||||
phone: string;
|
||||
email: string;
|
||||
cashbackRate: number;
|
||||
maxSingleDeposit: number;
|
||||
maxDailyDeposit: number;
|
||||
managedPassword: string | null;
|
||||
newPassword: string;
|
||||
loginFailCount: number;
|
||||
lastLoginAt: string | null;
|
||||
creditLimit: string;
|
||||
usedCredit: string;
|
||||
availableCredit: string;
|
||||
directPlayerCount: number;
|
||||
childAgentCount: number;
|
||||
level: number;
|
||||
parentUsername: string | null;
|
||||
createdAt: string;
|
||||
}
|
||||
|
||||
export interface AgentRow {
|
||||
@@ -35,7 +53,10 @@ export interface AgentRow {
|
||||
usedCredit: string;
|
||||
availableCredit: string;
|
||||
directPlayerCount: number;
|
||||
childAgentCount: number;
|
||||
cashbackRate: string;
|
||||
maxSingleDeposit: string | null;
|
||||
maxDailyDeposit: string | null;
|
||||
phone: string | null;
|
||||
email: string | null;
|
||||
locale: string;
|
||||
@@ -47,6 +68,8 @@ export interface AgentDetail extends AgentRow {
|
||||
parentUsername: string | null;
|
||||
directPlayerLiability: string;
|
||||
childAgentExposure: string;
|
||||
managedPassword: string | null;
|
||||
loginFailCount: number;
|
||||
lastLoginAt: string | null;
|
||||
updatedAt: string;
|
||||
recentCreditTransactions: {
|
||||
@@ -65,6 +88,8 @@ export function emptyAgentCreateForm(): AgentCreateForm {
|
||||
userId: '',
|
||||
creditLimit: 50000,
|
||||
cashbackRate: 0,
|
||||
maxSingleDeposit: 0,
|
||||
maxDailyDeposit: 0,
|
||||
phone: '',
|
||||
email: '',
|
||||
};
|
||||
@@ -72,19 +97,51 @@ export function emptyAgentCreateForm(): AgentCreateForm {
|
||||
|
||||
export function emptyAgentEditForm(): AgentEditForm {
|
||||
return {
|
||||
id: '',
|
||||
username: '',
|
||||
status: 'ACTIVE',
|
||||
phone: '',
|
||||
email: '',
|
||||
cashbackRate: 0,
|
||||
maxSingleDeposit: 0,
|
||||
maxDailyDeposit: 0,
|
||||
managedPassword: null,
|
||||
newPassword: '',
|
||||
loginFailCount: 0,
|
||||
lastLoginAt: null,
|
||||
creditLimit: '0',
|
||||
usedCredit: '0',
|
||||
availableCredit: '0',
|
||||
directPlayerCount: 0,
|
||||
childAgentCount: 0,
|
||||
level: 1,
|
||||
parentUsername: null,
|
||||
createdAt: '',
|
||||
};
|
||||
}
|
||||
|
||||
export function editFormFromAgentDetail(d: AgentDetail): AgentEditForm {
|
||||
return {
|
||||
id: d.userId,
|
||||
username: d.username,
|
||||
status: d.status,
|
||||
phone: d.phone ?? '',
|
||||
email: d.email ?? '',
|
||||
cashbackRate: Number(d.cashbackRate),
|
||||
maxSingleDeposit: d.maxSingleDeposit ? Number(d.maxSingleDeposit) : 0,
|
||||
maxDailyDeposit: d.maxDailyDeposit ? Number(d.maxDailyDeposit) : 0,
|
||||
managedPassword: d.managedPassword ?? null,
|
||||
newPassword: '',
|
||||
loginFailCount: d.loginFailCount ?? 0,
|
||||
lastLoginAt: d.lastLoginAt ?? null,
|
||||
creditLimit: d.creditLimit,
|
||||
usedCredit: d.usedCredit,
|
||||
availableCredit: d.availableCredit,
|
||||
directPlayerCount: d.directPlayerCount,
|
||||
childAgentCount: d.childAgentCount ?? 0,
|
||||
level: d.level,
|
||||
parentUsername: d.parentUsername ?? null,
|
||||
createdAt: d.createdAt,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -104,6 +161,8 @@ export function buildCreateAgentPayload(form: AgentCreateForm) {
|
||||
userId: form.userId,
|
||||
creditLimit: form.creditLimit,
|
||||
cashbackRate: form.cashbackRate,
|
||||
maxSingleDeposit: form.maxSingleDeposit > 0 ? form.maxSingleDeposit : undefined,
|
||||
maxDailyDeposit: form.maxDailyDeposit > 0 ? form.maxDailyDeposit : undefined,
|
||||
phone: form.phone.trim() || undefined,
|
||||
email: form.email.trim() || undefined,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user