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