fix: simplify balance billing and govern operation logs

This commit is contained in:
hectorzhao
2026-07-14 17:40:32 +08:00
parent f35691f185
commit 28dad93e3e
40 changed files with 740 additions and 395 deletions
+4 -20
View File
@@ -200,6 +200,7 @@ export type TenantOption = {
export type TenantManagementRow = TenantOption & {
account?: TenantAccount | null;
todaySpendCents: number;
todayRefundCents: number;
};
export type CaptchaResponse = {
@@ -242,7 +243,7 @@ export type DashboardResponse = {
today: { sent: number; delivered: number; failed: number; unknown: number; successRate: number; spendCents: number; billingUnits: number };
uplinkCount: number;
billing: { _count: { _all: number }; _sum: { amountCents?: number | null; billingUnits?: number | null } };
transactions: { _count: { _all: number }; _sum: { amountCents?: number | null; smsUnits?: number | null } };
transactions: { _count: { _all: number }; _sum: { amountCents?: number | null } };
gatewayConnections: Array<{ status: string; _count: { _all: number }; _sum: { currentConnections?: number | null; desiredConnections?: number | null } }>;
pendingAuditCount: number;
pendingAudits: { enterpriseCertifications: number; smsAudits: number; templates: number; signatures: number; drainageInfos: number; total: number };
@@ -254,7 +255,7 @@ export type DashboardResponse = {
recentFailed: number;
alertCount: number;
};
accounts: Array<{ id: string; tenantId: string; balanceCents: number; smsUnits: number; creditCents: number; status: string; tenant?: TenantOption }>;
accounts: Array<{ id: string; tenantId: string; balanceCents: number; status: string; tenant?: TenantOption }>;
recentTasks: Array<Record<string, unknown>>;
recentRecharges: Array<RechargeOrder>;
};
@@ -264,7 +265,6 @@ export type RechargeOrder = {
tenantId: string;
orderNo: string;
amountCents: number;
smsUnits: number;
status: string;
payMethod?: string | null;
paidAt?: string | null;
@@ -275,16 +275,6 @@ export type RechargeOrder = {
tenant?: TenantOption;
};
export type BillingPlan = {
id: string;
name: string;
amountCents: number;
smsUnits: number;
unitPriceCents?: number | null;
status: string;
description?: string | null;
};
export type ClientSmsApplication = {
id: string;
tenantId: string;
@@ -671,8 +661,6 @@ export type TenantAccount = {
id: string;
tenantId: string;
balanceCents: number;
smsUnits: number;
creditCents: number;
status: string;
tenant?: TenantOption;
};
@@ -966,7 +954,7 @@ export const adminApi = {
request<OperationLogResponse>(withQuery('/admin/system-logs', query)),
listAccounts: () => request<TenantAccount[]>('/admin/billing/accounts'),
listManualRecharges: (tenantId?: string) => request<RechargeOrder[]>(withQuery('/admin/billing/manual-recharges', { tenantId })),
createManualRecharge: (body: { tenantId: string; amountCents: number; smsUnits?: number; operatorId?: string; remark?: string }) =>
createManualRecharge: (body: { tenantId: string; amountCents: number; operatorId?: string; remark?: string }) =>
request<RechargeOrder>('/admin/billing/manual-recharges', { method: 'POST', body: JSON.stringify(body) }),
listEnterpriseApplications: (query: { tenantId?: string; keyword?: string; enterpriseKeyword?: string; applicationKeyword?: string; status?: string } = {}) =>
request<EnterpriseApplication[]>(withQuery('/admin/enterprise-applications', query)),
@@ -1215,10 +1203,6 @@ export const clientApi = {
request<OperationLogResponse>(withQuery('/client/operations/system-logs', query), { tenantId }),
listOrders: (tenantId = getSessionTenantId() ?? DEFAULT_CLIENT_TENANT_ID) =>
request<RechargeOrder[]>('/client/billing/orders', { tenantId }),
listPlans: (tenantId = getSessionTenantId() ?? DEFAULT_CLIENT_TENANT_ID) =>
request<BillingPlan[]>('/client/billing/plans', { tenantId }),
createOrder: (body: { planId?: string; amountCents?: number; smsUnits?: number; payMethod?: string }, tenantId = getSessionTenantId() ?? DEFAULT_CLIENT_TENANT_ID) =>
request<RechargeOrder>('/client/billing/orders', { method: 'POST', tenantId, body: JSON.stringify(body) }),
listApplications: (tenantId = getSessionTenantId() ?? DEFAULT_CLIENT_TENANT_ID) =>
request<ClientSmsApplication[]>('/client/applications', { tenantId }),
getApplicationCmppParams: (applicationId: string, tenantId = getSessionTenantId() ?? DEFAULT_CLIENT_TENANT_ID) =>