chore: 初始化平台管理端
This commit is contained in:
263
src/api/tenant.ts
Normal file
263
src/api/tenant.ts
Normal 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 租户ID(Snowflake long → string)
|
||||
* @param data 更新数据(tenantId 会以入参为准覆盖)
|
||||
* @returns void(后端 BaseResponse<void> 的 data 字段)
|
||||
*
|
||||
* 后端接口:PUT /api/admin/v1/tenants/{tenantId}
|
||||
* 预期响应:BaseResponse<void>
|
||||
* 预期错误码:400(参数错误)、404(租户不存在)、409(code 冲突)
|
||||
* 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
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user