feat(distribution): 分销站点管理支持完整 CRUD、安全删除保护与管理员密码重置

- 后端支持分销站点编辑(域名唯一性校验、收号压价点位及税率更新)
- 后端支持分销站点安全删除校验(阻断存在业务订单、财务流水、结算批次或钱包余额的站点删除;对干净站点连带清理分成规则、展示账号绑定、支付通道配置及专有站长账号)
- 后端支持站长账号展示与超级管理员重置站长密码
- 主管理后台与分销后台前端全面支持筛选搜索、编辑模态窗、状态快捷切换、站长密码重置与安全删除确认
- 补充后端 CRUD、删除保护与密码重置覆盖率测试用例
This commit is contained in:
yml2213
2026-09-17 19:35:52 +08:00
parent 079e18bd3a
commit 1c3a75eef0
10 changed files with 1452 additions and 72 deletions
+32 -2
View File
@@ -130,6 +130,10 @@ export interface Site {
listing_qrcode_url?: string
receive_ratio_delta?: number
receive_cost_delta?: number
admin_user_id?: number
admin_username?: string
admin_nickname?: string
member_type?: string
created_at: string
}
@@ -341,9 +345,35 @@ export async function listSites(): Promise<Site[]> {
export async function updateSite(
siteID: number,
payload: Partial<Pick<Site, 'receive_ratio_delta' | 'receive_cost_delta'>>
payload: Partial<
Pick<
Site,
| 'site_name'
| 'domain'
| 'status'
| 'display_account_enabled'
| 'tax_enabled'
| 'tax_rate_bps'
| 'settlement_hold_days'
| 'listing_qrcode_url'
| 'receive_ratio_delta'
| 'receive_cost_delta'
>
>
): Promise<Site> {
const resp = await api.put<ApiResponse<Site>>(`/distribution/sites/${siteID}`, payload)
const resp = await api.put<ApiResponse<Site>>(`/admin/distribution/sites/${siteID}`, payload)
return extract(resp)
}
export async function deleteSite(siteID: number): Promise<{ deleted: boolean }> {
const resp = await api.delete<ApiResponse<{ deleted: boolean }>>(`/admin/distribution/sites/${siteID}`)
return extract(resp)
}
export async function resetSiteAdminPassword(siteID: number, newPassword: string): Promise<{ message: string }> {
const resp = await api.put<ApiResponse<{ message: string }>>(`/admin/distribution/sites/${siteID}/admin-password`, {
new_password: newPassword,
})
return extract(resp)
}