feat: 新增客服备用金台账与后台用户中文显示名

- 新增备用金账户、流水、支出、对账与权限
- 后台用户支持中文显示名并同步备用金姓名
- 审计、登录记录、任务及工单操作人优先展示中文名
- 补充备用金与人工支出方案文档
This commit is contained in:
yml2213
2026-10-18 13:55:24 +08:00
parent 7bacb7d5eb
commit 7542d547bf
55 changed files with 6557 additions and 105 deletions
+105
View File
@@ -0,0 +1,105 @@
import { apiGet, apiPatch, apiPost } from '@/lib/http'
import type {
AdminFundAccountDetailResult,
AdminFundAccountListResult,
AdminFundExpenseListResult,
AdminFundMyAccountResult,
AdminFundOverview,
AdminFundReconciliationListResult,
AdminFundSetupOptions,
} from '@/types/admin'
export function fetchAdminFundOverview() {
return apiGet<AdminFundOverview>('/api/v1/admin/fund/overview')
}
export function fetchAdminFundMyAccount() {
return apiGet<AdminFundMyAccountResult>('/api/v1/admin/fund/my')
}
export function fetchAdminFundAccounts(params?: Record<string, unknown>) {
return apiGet<AdminFundAccountListResult>('/api/v1/admin/fund/accounts', params)
}
export function fetchAdminFundAccountDetail(accountId: number, params?: Record<string, unknown>) {
return apiGet<AdminFundAccountDetailResult>(`/api/v1/admin/fund/accounts/${accountId}`, params)
}
export function fetchAdminFundSupervisors() {
return apiGet<{ items: AdminFundAccountListResult['items'] }>('/api/v1/admin/fund/supervisors')
}
export function fetchAdminFundSetupOptions() {
return apiGet<AdminFundSetupOptions>('/api/v1/admin/fund/options')
}
export function createAdminFundAccount(payload: Record<string, unknown>) {
return apiPost<{ account: AdminFundAccountListResult['items'][number] }>(
'/api/v1/admin/fund/accounts',
payload,
)
}
export function ensureAdminFundAgentAccounts(payload: Record<string, unknown>) {
return apiPost<{
createdCount: number
items: Array<{ id: number; accountNo: string; ownerName: string }>
}>('/api/v1/admin/fund/accounts/ensure-agents', payload)
}
export function updateAdminFundAccount(accountId: number, payload: Record<string, unknown>) {
return apiPatch<{ account: AdminFundAccountListResult['items'][number] }>(
`/api/v1/admin/fund/accounts/${accountId}`,
payload,
)
}
export function createAdminFundFunding(accountId: number, payload: Record<string, unknown>) {
return apiPost<Record<string, unknown>>(
`/api/v1/admin/fund/accounts/${accountId}/funding`,
payload,
)
}
export function createAdminFundIssue(accountId: number, payload: Record<string, unknown>) {
return apiPost<Record<string, unknown>>(`/api/v1/admin/fund/accounts/${accountId}/issue`, payload)
}
export function createAdminFundReturn(accountId: number, payload: Record<string, unknown>) {
return apiPost<Record<string, unknown>>(
`/api/v1/admin/fund/accounts/${accountId}/return`,
payload,
)
}
export function createAdminFundExpense(accountId: number, payload: Record<string, unknown>) {
return apiPost<{ expense: AdminFundExpenseListResult['items'][number] }>(
`/api/v1/admin/fund/accounts/${accountId}/expenses`,
payload,
)
}
export function fetchAdminFundExpenses(params?: Record<string, unknown>) {
return apiGet<AdminFundExpenseListResult>('/api/v1/admin/fund/expenses', params)
}
export function fetchAdminFundReconciliations(params?: Record<string, unknown>) {
return apiGet<AdminFundReconciliationListResult>('/api/v1/admin/fund/reconciliations', params)
}
export function createAdminFundReconciliation(payload: Record<string, unknown>) {
return apiPost<{ reconciliation: AdminFundReconciliationListResult['items'][number] }>(
'/api/v1/admin/fund/reconciliations',
payload,
)
}
export function confirmAdminFundReconciliation(
reconciliationId: number,
payload: Record<string, unknown>,
) {
return apiPost<{ reconciliation: AdminFundReconciliationListResult['items'][number] }>(
`/api/v1/admin/fund/reconciliations/${reconciliationId}/confirm`,
payload,
)
}
@@ -1,6 +1,7 @@
export * from './auth'
export * from './dashboard'
export * from './finance'
export * from './fund'
export * from './users'
export * from './audit-logs'
export * from './platform-config'
@@ -35,6 +35,7 @@ export function fetchAdminUsers(params?: Record<string, unknown>) {
export function createAdminUser(payload: {
username: string
displayName?: string
password: string
role: string
status?: string
@@ -42,6 +43,13 @@ export function createAdminUser(payload: {
return apiPost<{ user: AdminUserListItem }>('/api/v1/admin/users', payload)
}
export function updateAdminUserDisplayName(
userId: number | string,
payload: { displayName: string },
) {
return apiPost<{ user: AdminUserListItem }>(`/api/v1/admin/users/${userId}/display-name`, payload)
}
export function updateAdminUserRole(userId: number | string, payload: { role: string }) {
return apiPost<{ user: AdminUserListItem }>(`/api/v1/admin/users/${userId}/role`, payload)
}