Files
ai_dianshang/miniprogram/pages/order/delivery-detail/api.js
2025-11-17 14:11:46 +08:00

161 lines
4.6 KiB
JavaScript

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);
}