import http from "../http"; export interface ExternalAppVO { id: number; tenantId?: number; appName: string; appType: "native" | "web"; appInfo?: Record; iconUrl?: string; description?: string; sortOrder?: number; status: number; createdBy?: number; creatorUsername?: string; createdAt?: string; updatedAt?: string; remark?: string; } export interface ExternalAppDTO { appName: string; appType: "native" | "web"; appInfo?: Record; iconUrl?: string; description?: string; sortOrder?: number; status: number; remark?: string; } export interface ExternalAppApkUploadResult { apkUrl?: string; apkSize?: number; apkMd5?: string; appName?: string | null; packageName?: string | null; versionName?: string | null; versionCode?: string | null; } export interface ExternalAppIconUploadResult { iconUrl?: string; fileSize?: number; } export async function listExternalApps(params?: { appType?: string; status?: number }) { const resp = await http.get("/api/external-apps", { params }); return resp.data.data as ExternalAppVO[]; } export async function createExternalApp(payload: ExternalAppDTO) { const resp = await http.post("/api/external-apps", payload); return resp.data.data as ExternalAppVO; } export async function updateExternalApp(id: number, payload: Partial) { const resp = await http.put(`/api/external-apps/${id}`, payload); return resp.data.data as ExternalAppVO; } export async function deleteExternalApp(id: number) { const resp = await http.delete(`/api/external-apps/${id}`); return resp.data.data as boolean; } export async function uploadExternalAppApk(file: File) { const formData = new FormData(); formData.append("apkFile", file); const resp = await http.post("/api/external-apps/upload-apk", formData, { headers: { "Content-Type": "multipart/form-data" }, timeout: 600000 }); return resp.data.data as ExternalAppApkUploadResult; } export async function uploadExternalAppIcon(file: File) { const formData = new FormData(); formData.append("iconFile", file); const resp = await http.post("/api/external-apps/upload-icon", formData, { headers: { "Content-Type": "multipart/form-data" }, }); return resp.data.data as ExternalAppIconUploadResult; }