161 lines
4.6 KiB
JavaScript
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);
|
|||
|
|
}
|