This commit is contained in:
2026-08-03 14:58:17 +08:00
parent bc44a7942d
commit ee997ae894
17 changed files with 1694 additions and 303 deletions
+169
View File
@@ -46,6 +46,44 @@ export interface PlatformTenantResource {
contactName: string | null
contactPhone: string | null
contactEmail: string | null
servicePackage: string | null
contactWechat: string | null
salesOwnerName: string | null
paymentTermDays: number | null
enterpriseType: string | null
establishedDate: string | null
registeredCapital: number | string | null
registeredCapitalCurrency: string | null
registeredAddress: string | null
internalRemark: string | null
createdAt: string | null
approvedAt: string | null
}
export interface CreatePlatformTenantRequest {
tenantName: string
legalName: string
unifiedSocialCreditCode: string
contactName: string
contactPhone: string
contactEmail: string
servicePackage: string
contactWechat: string
salesOwnerName: string
paymentTermDays: number
enterpriseType: string
establishedDate: string | null
registeredCapital: number | null
registeredCapitalCurrency: string
registeredAddress: string
internalRemark: string
}
export type UpdatePlatformTenantRequest = Omit<CreatePlatformTenantRequest, 'unifiedSocialCreditCode'>
export interface PlatformTenantOrderCount {
tenantId: number | string
orderCount: number
}
export interface PlatformTenantPage {
@@ -71,6 +109,17 @@ export interface PlatformTenantQualification {
documentUrl: string
status: 'PENDING' | 'APPROVED' | 'REJECTED'
reviewComment: string | null
validTo?: string | null
}
export type PlatformQualificationType = 'BUSINESS_LICENSE' | 'LEGAL_PERSON_ID' | 'FREIGHT_FORWARDER_CERTIFICATE' | 'BANK_ACCOUNT_LICENSE'
export interface PlatformQualificationUploadResponse {
qualificationId: number | string
reviewId: number | string | null
tenantStatus: PlatformTenantStatus
documentUrl: string
replacedDocumentUrl?: string | null
}
export interface PlatformRoleResource {
@@ -146,6 +195,49 @@ export interface UpdatePlatformInternalUserRequest {
roleIds: Array<number | string>
}
export interface PlatformManagedUser {
membershipId: number | string
userId: number | string
authUserId: number | string
username: string
displayName: string
phone: string | null
email: string | null
tenantId: number | string
tenantName: string
memberType: string
memberNo: string | null
status: 'ACTIVE' | 'DISABLED'
roleIds: Array<number | string>
roleNames: string[]
lastLoginAt: string | null
protectedAccount: boolean
}
export interface PlatformUserOptions {
tenants: Array<{ id: number | string; name: string; status: string }>
roles: Array<{ id: number | string; tenantId: number | string; name: string; status: string }>
}
export interface CreatePlatformManagedUserRequest {
username: string
displayName: string
phone: string
email: string
tenantId: number | string
roleIds: Array<number | string>
password: string
status: 'ACTIVE' | 'DISABLED'
}
export interface UpdatePlatformManagedUserRequest {
displayName: string
phone: string
email: string
tenantId: number | string
roleIds: Array<number | string>
}
async function getData<T>(path: string): Promise<T> {
const response = await http.get<ApiEnvelope<T>, ApiEnvelope<T>>(path)
return unwrapApiResponse(response)
@@ -190,9 +282,62 @@ export async function listPlatformTenants(query: PlatformTenantQuery) {
},
},
)
const data = unwrapApiResponse(response)
return {
...data,
page: Number(data.page),
size: Number(data.size),
total: Number(data.total),
pages: Number(data.pages),
}
}
export function getPlatformTenant(tenantId: number | string) {
return getData<PlatformTenantResource>(`/platform/v1/iam/tenants/${tenantId}`)
}
export function createPlatformTenant(payload: CreatePlatformTenantRequest) {
return postData<PlatformTenantResource>('/platform/v1/iam/tenants', payload)
}
export function updatePlatformTenant(tenantId: number | string, payload: UpdatePlatformTenantRequest) {
return putData<PlatformTenantResource>(`/platform/v1/iam/tenants/${tenantId}`, payload)
}
export function changePlatformTenantStatus(tenantId: number | string, status: 'ACTIVE' | 'DISABLED') {
return putData<PlatformTenantResource>(`/platform/v1/iam/tenants/${tenantId}/status`, { status })
}
export function submitPlatformTenantReview(tenantId: number | string) {
return postData<PlatformTenantResource>(`/platform/v1/iam/tenants/${tenantId}/submit-review`, {})
}
export async function uploadPlatformTenantQualification(
tenantId: number | string,
qualificationType: PlatformQualificationType,
file: File,
validTo?: string,
certificateNo?: string,
replace = false,
) {
const form = new FormData()
form.append('file', file)
form.append('qualificationType', qualificationType)
if (validTo) form.append('validTo', validTo)
if (certificateNo) form.append('certificateNo', certificateNo)
if (replace) form.append('replace', 'true')
const response = await http.post<ApiEnvelope<PlatformQualificationUploadResponse>, ApiEnvelope<PlatformQualificationUploadResponse>>(
`/platform/v1/files/qualifications/${tenantId}`,
form,
)
return unwrapApiResponse(response)
}
export function listPlatformTenantOrderCounts(tenantIds: Array<number | string>) {
const ids = tenantIds.map((id) => encodeURIComponent(String(id))).join(',')
return getData<PlatformTenantOrderCount[]>(`/platform/v1/orders/first-leg/tenant-counts?tenantIds=${ids}`)
}
export function listTenantQualifications(tenantId: number | string) {
return getData<PlatformTenantQualification[]>(`/platform/v1/iam/tenants/${tenantId}/qualifications`)
}
@@ -284,6 +429,30 @@ export function assignPlatformInternalUserRoles(membershipId: number | string, r
return putData<PlatformInternalUser>(`/platform/v1/iam/internal-users/${membershipId}/roles`, { roleIds })
}
export function listPlatformManagedUsers() {
return getData<PlatformManagedUser[]>('/platform/v1/iam/users')
}
export function getPlatformUserOptions() {
return getData<PlatformUserOptions>('/platform/v1/iam/users/options')
}
export function createPlatformManagedUser(payload: CreatePlatformManagedUserRequest) {
return postData<PlatformManagedUser>('/platform/v1/iam/users', payload)
}
export function updatePlatformManagedUser(membershipId: number | string, payload: UpdatePlatformManagedUserRequest) {
return putData<PlatformManagedUser>(`/platform/v1/iam/users/${membershipId}`, payload)
}
export function changePlatformManagedUserStatus(membershipId: number | string, status: 'ACTIVE' | 'DISABLED') {
return putData<PlatformManagedUser>(`/platform/v1/iam/users/${membershipId}/status`, { status })
}
export function resetPlatformManagedUserPassword(membershipId: number | string, newPassword: string) {
return putData<void>(`/platform/v1/iam/users/${membershipId}/password`, { newPassword })
}
export function approveEnterpriseReview(reviewId: number, comment: string) {
return postData<unknown>(`/platform/v1/iam/reviews/${reviewId}/approve`, { comment })
}