import { config } from '../../../config/index'; import { mockIp, mockReqId } from '../../../utils/mock'; /** * Mock获取物流信息 */ function mockGetLogisticsInfo(params) { console.log('[物流API] 使用Mock数据获取物流信息', { params }); const mockData = { data: { logisticsNo: params.logisticsNo || '1234567890123', company: '顺丰快递', phoneNumber: '95338', nodes: [ { title: '已签收', desc: '您的快件已签收,感谢使用顺丰,期待再次为您服务', date: '2024-01-15 14:30:25', icon: 'check-circle' }, { title: '派送中', desc: '快件正在派送途中,请您准备签收', date: '2024-01-15 09:15:10', icon: 'location' }, { title: '到达目的地', desc: '快件已到达【北京朝阳区】', date: '2024-01-15 06:20:45', icon: 'location' }, { title: '运输中', desc: '快件在【北京转运中心】,正发往下一站', date: '2024-01-14 22:10:30', icon: 'swap' }, { title: '已发货', desc: '商家已发货,快件已交给顺丰快递', date: '2024-01-14 16:45:20', icon: 'check-circle' } ] }, code: 200, message: 'success', requestId: mockReqId(), clientIp: mockIp(), success: true }; return new Promise((resolve) => { setTimeout(() => { console.log('[物流API] Mock物流信息获取完成', mockData.data); resolve(mockData); }, 500); }); } /** * 获取物流信息 * @param {Object} params - 参数对象 * @param {string} params.logisticsNo - 物流单号 * @param {string} params.logisticsCompanyCode - 物流公司代码 * @param {string} params.orderNo - 订单号(可选) * @param {string} params.rightsNo - 售后单号(可选) */ export function getLogisticsInfo(params) { console.log('[物流API] 开始获取物流信息', { params, useMock: config.useMock, timestamp: new Date().toISOString() }); if (config.useMock) { return mockGetLogisticsInfo(params); } return new Promise((resolve, reject) => { const token = wx.getStorageSync('token'); if (!token) { console.error('[物流API] 用户未登录'); reject(new Error('未登录')); return; } if (!params.logisticsNo) { console.error('[物流API] 缺少物流单号'); reject(new Error('缺少物流单号')); return; } const requestUrl = `${config.apiBase}/logistics/track`; console.log('[物流API] 发送物流查询API请求', { url: requestUrl, logisticsNo: params.logisticsNo, companyCode: params.logisticsCompanyCode }); wx.request({ url: requestUrl, method: 'GET', data: { logisticsNo: params.logisticsNo, logisticsCompanyCode: params.logisticsCompanyCode, orderNo: params.orderNo, rightsNo: params.rightsNo }, header: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' }, success: (res) => { console.log('[物流API] 物流查询API响应', { statusCode: res.statusCode, dataCode: res.data?.code, message: res.data?.message, logisticsNo: params.logisticsNo }); if (res.statusCode === 200 && res.data.code === 200) { console.log('[物流API] 物流信息获取成功', { logisticsNo: params.logisticsNo, nodesCount: res.data.data?.nodes?.length || 0 }); resolve(res.data); } else { const errorMsg = res.data?.message || '获取物流信息失败'; console.error('[物流API] 物流信息获取失败', { statusCode: res.statusCode, dataCode: res.data?.code, message: errorMsg, logisticsNo: params.logisticsNo }); reject(new Error(errorMsg)); } }, fail: (err) => { console.error('[物流API] 物流查询请求失败', { error: err, logisticsNo: params.logisticsNo, url: requestUrl, timestamp: new Date().toISOString() }); reject(new Error('网络请求失败')); } }); }); } /** * 刷新物流信息 * @param {Object} params - 参数对象 */ export function refreshLogisticsInfo(params) { console.log('[物流API] 刷新物流信息', { params }); return getLogisticsInfo(params); }