chore: 初始化平台管理端

This commit is contained in:
msumshk
2026-01-29 04:21:09 +00:00
commit 914dcc4166
533 changed files with 104838 additions and 0 deletions

263
src/api/tenant.ts Normal file
View File

@@ -0,0 +1,263 @@
import api from '@/utils/http'
import { fetchTenantPackageList } from './tenant-package'
import type { QuotaUsageHistoryDto, UpdateTenantCommand } from '@/types/tenant'
/**
* 获取租户列表
* @param params 搜索参数
*/
export function fetchGetTenantList(params?: Partial<Api.Tenant.TenantListParams>) {
return api.get<Api.Tenant.TenantListResponse>({
url: '/api/admin/v1/tenants',
params
})
}
/**
* 注册租户
*/
export function fetchRegisterTenant(data: Api.Tenant.RegisterTenantCommand) {
return api.post<Api.Tenant.TenantDto>({
url: '/api/admin/v1/tenants',
data
})
}
/**
* 后台手动新增租户并直接入驻(创建租户 + 认证 + 订阅 + 管理员账号)
*/
export function fetchCreateTenantManually(data: Api.Tenant.CreateTenantManuallyCommand) {
return api.post<Api.Tenant.TenantDetailDto>({
url: '/api/admin/v1/tenants/manual',
data
})
}
/**
* 获取租户详情(包含认证信息、订阅信息)
*/
export function fetchGetTenantDetail(tenantId: string, options?: { showErrorMessage?: boolean }) {
return api.get<Api.Tenant.TenantDetailDto>({
url: `/api/admin/v1/tenants/${tenantId}`,
showErrorMessage: options?.showErrorMessage
})
}
/**
* 获取租户配额使用情况
*/
export function fetchGetTenantQuotaUsage(
tenantId: string,
options?: { showErrorMessage?: boolean }
) {
return api.get<Api.QuotaPackage.TenantQuotaUsageDto[]>({
url: `/api/admin/v1/tenants/${tenantId}/quota-usage`,
showErrorMessage: options?.showErrorMessage
})
}
/**
* 获取租户配额使用历史
* @param tenantId 租户ID
* @param params 分页参数
*/
export function fetchGetTenantQuotaUsageHistory(
tenantId: string,
params?: { Page?: number; PageSize?: number }
) {
return api.get<Api.Common.PageResult<QuotaUsageHistoryDto>>({
url: `/api/admin/v1/tenants/${tenantId}/quota-usage-history`,
params
})
}
/**
* 获取订阅信息(注意:该接口为 POST
*/
export function fetchGetTenantSubscriptions(
tenantId: string,
options?: { showErrorMessage?: boolean }
) {
return api.post<Api.Tenant.TenantSubscriptionDto>({
url: `/api/admin/v1/tenants/${tenantId}/subscriptions`,
data: {},
showErrorMessage: options?.showErrorMessage
})
}
/**
* 获取账单信息分页最近10条可传 Page=1 PageSize=10
*/
export function fetchGetTenantBillings(
tenantId: string,
params: { Page?: number; PageSize?: number } = {},
options?: { showErrorMessage?: boolean }
) {
return api.get<Api.Common.PageResult<Api.Billing.BillingListDto>>({
url: `/api/admin/v1/tenants/${tenantId}/billings`,
params,
showErrorMessage: options?.showErrorMessage
})
}
/**
* 更新租户信息TD-001待后端接口补充
* @param tenantId 租户IDSnowflake long → string
* @param data 更新数据tenantId 会以入参为准覆盖)
* @returns void后端 BaseResponse<void> 的 data 字段)
*
* 后端接口PUT /api/admin/v1/tenants/{tenantId}
* 预期响应BaseResponse<void>
* 预期错误码400参数错误、404租户不存在、409code 冲突)
* TODO(TD-001): Swagger 中缺失该端点(当前可能返回 404/405待后端补充后再联调验证
*/
export function fetchUpdateTenant(tenantId: string, data: UpdateTenantCommand) {
return api.put<void>({
url: `/api/admin/v1/tenants/${tenantId}`,
data: { ...data, tenantId },
showErrorMessage: false
})
}
/**
* 获取租户套餐列表(兼容旧调用)
*/
export const fetchGetTenantPackages = fetchTenantPackageList
/**
* 审核租户
*/
export function fetchReviewTenant(
tenantId: string,
data: Omit<Api.Tenant.ReviewTenantCommand, 'tenantId'>
) {
return api.post<Api.Tenant.TenantDto>({
url: `/api/admin/v1/tenants/${tenantId}/review`,
data: { ...data, tenantId }
})
}
/**
* 获取租户审核领取信息(未领取返回 null
*/
export function fetchGetTenantReviewClaim(tenantId: string) {
return api.get<Api.Tenant.TenantReviewClaimDto | null>({
url: `/api/admin/v1/tenants/${tenantId}/review/claim`
})
}
/**
* 领取租户审核
*/
export function fetchClaimTenantReview(tenantId: string) {
return api.post<Api.Tenant.TenantReviewClaimDto>({
url: `/api/admin/v1/tenants/${tenantId}/review/claim`
})
}
/**
* 强制接管租户审核(仅超级管理员)
*/
export function fetchForceClaimTenantReview(tenantId: string) {
return api.post<Api.Tenant.TenantReviewClaimDto>({
url: `/api/admin/v1/tenants/${tenantId}/review/force-claim`
})
}
/**
* 释放租户审核领取(仅领取人)
*/
export function fetchReleaseTenantReviewClaim(tenantId: string) {
return api.post<Api.Tenant.TenantReviewClaimDto | null>({
url: `/api/admin/v1/tenants/${tenantId}/review/release`
})
}
/**
* 查询租户审核日志
*/
export function fetchGetTenantAuditLogs(
tenantId: string,
params: { page?: number; pageSize?: number } = {}
) {
return api.get<Api.Tenant.TenantAuditLogListResponse>({
url: `/api/admin/v1/tenants/${tenantId}/audits`,
params: {
page: params.page ?? 1,
pageSize: params.pageSize ?? 20
}
})
}
/**
* 冻结租户(暂停服务)
*/
export function fetchFreezeTenant(
tenantId: string,
data: Omit<Api.Tenant.FreezeTenantCommand, 'tenantId'>
) {
return api.post<Api.Tenant.TenantDto>({
url: `/api/admin/v1/tenants/${tenantId}/freeze`,
data: { ...data, tenantId }
})
}
/**
* 解冻租户(恢复服务)
*/
export function fetchUnfreezeTenant(
tenantId: string,
data: Omit<Api.Tenant.UnfreezeTenantCommand, 'tenantId'> = {}
) {
return api.post<Api.Tenant.TenantDto>({
url: `/api/admin/v1/tenants/${tenantId}/unfreeze`,
data: { ...data, tenantId }
})
}
/**
* 延期/赠送租户订阅时长(按当前订阅套餐续费)
*/
export function fetchExtendTenantSubscription(
tenantId: string,
data: Omit<Api.Tenant.ExtendTenantSubscriptionCommand, 'tenantId'>
) {
return api.post<Api.Tenant.TenantSubscriptionDto>({
url: `/api/admin/v1/tenants/${tenantId}/subscriptions/extend`,
data: { ...data, tenantId }
})
}
/**
* 伪装登录租户(返回租户主管理员的 Token
*/
export function fetchImpersonateTenant(tenantId: string) {
return api.post<Api.Auth.TokenResponse>({
url: `/api/admin/v1/tenants/${tenantId}/impersonate`
})
}
/**
* 生成租户主管理员重置密码链接(仅展示一次)
*/
export function fetchCreateTenantAdminResetLink(tenantId: string) {
return api.post<string>({
url: `/api/admin/v1/tenants/${tenantId}/admin/reset-link`
})
}
/**
* 获取租户配额购买记录(分页)
*/
export function fetchGetTenantQuotaPurchases(
tenantId: string,
params: { Page?: number; PageSize?: number } = {}
) {
return api.get<Api.Common.PageResult<Api.QuotaPackage.TenantQuotaPurchaseDto>>({
url: `/api/admin/v1/tenants/${tenantId}/quota-purchases`,
params: {
Page: params.Page ?? 1,
PageSize: params.PageSize ?? 10
}
})
}