// 基础服务 - 对应 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.acetoys.cn/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, };