// 基础服务 - 对应 supermart-mini/service/base.js import { get, post } from "./http"; const apis = { PAGE_CONFIG: "/api/app/page/getByPageId", MESSAGE: "/api/app/message", TRACK: "/api/track", FEEDBACK: "/api/app/feedback/submit", PARAM_CONFIG: "/param/paramConfig", }; export interface BannerItem { id: string; cover: string; path?: { url: string }; } export interface TabItem { title: string; cover: string; path?: { url: string }; } export interface PageConfig { components: Array<{ elements: any[]; }>; } // 获取页面配置 export const getPageConfig = async ( pageId: string, ): Promise => { const res = await get(apis.PAGE_CONFIG, { pageId }); return res.data; }; // 获取消息列表 export const getMessages = async ( current: number, size: number, type?: string, ) => { const params: any = { current, size }; if (type) params.type = type; const res = await get(apis.MESSAGE, params); return res.success ? res.data : null; }; // 获取消息列表(分页) export const getMessageList = async ( current: number, size: number, type?: string, ) => { const params: any = { current, size }; if (type) params.type = type; const res = await get(apis.MESSAGE, params); return res.success ? res.data : { records: [], total: 0 }; }; // 获取参数配置 export const getParamConfig = async (code: string) => { const res = await get(apis.PARAM_CONFIG, { code }); return res.data; }; // 提交反馈 export const submitFeedback = async (data: any) => { const res = await post(apis.FEEDBACK, data); return res.data; }; // 追踪 export const track = async () => { const res = await get(apis.TRACK); return res.data; }; // 上传文件 export const uploadFile = async ( fileUri: string, folder = "avatar", ): Promise => { try { const formData = new FormData(); // 获取文件名 const fileName = fileUri.split("/").pop() || "image.jpg"; // 创建文件对象 (React Native 格式) const fileObj = { uri: fileUri, type: "image/jpeg", name: fileName, } as any; formData.append("file", fileObj); formData.append("appId", "supermart-acetoys"); formData.append("folder", folder); // 使用http.ts中的getToken获取token const { getToken } = require("./http"); const token = getToken(); const response = await fetch("https://mm.acefig.com/api/oss/file/upload", { method: "POST", headers: { // 不设置 Content-Type,让 fetch 自动处理 multipart/form-data 边界 Authentication: token || "", }, body: formData, }); // 检查响应状态 if (!response.ok) { const errorText = await response.text(); console.error("上传响应状态:", response.status, "响应内容:", errorText); return null; } const text = await response.text(); if (!text) { console.error("上传响应为空"); return null; } const result = JSON.parse(text); // code 可能是数字或字符串 if ((result.code === 0 || result.code === "0") && result.data?.url) { return result.data.url; } console.error("上传返回错误:", result); return null; } catch (error) { console.error("上传文件失败:", error); return null; } }; export default { getPageConfig, getMessages, getMessageList, getParamConfig, submitFeedback, track, uploadFile, };