276 lines
8.1 KiB
JavaScript
276 lines
8.1 KiB
JavaScript
|
|
import { config } from '../../config/index';
|
|||
|
|
|
|||
|
|
/** 获取售后单mock数据 */
|
|||
|
|
function mockFetchRightsPreview(params) {
|
|||
|
|
console.log('[订单操作服务] 使用Mock数据获取售后预览', {
|
|||
|
|
params,
|
|||
|
|
timestamp: new Date().toISOString()
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
const { delay } = require('../_utils/delay');
|
|||
|
|
const { genRightsPreview } = require('../../model/order/applyService');
|
|||
|
|
|
|||
|
|
return delay().then(() => {
|
|||
|
|
const result = genRightsPreview(params);
|
|||
|
|
console.log('[订单操作服务] Mock售后预览数据生成完成', result);
|
|||
|
|
return result;
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/** 获取售后单数据 */
|
|||
|
|
export function fetchRightsPreview(params) {
|
|||
|
|
console.log('[订单操作服务] 开始获取售后预览', {
|
|||
|
|
params,
|
|||
|
|
useMock: config.useMock,
|
|||
|
|
timestamp: new Date().toISOString()
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
if (config.useMock) {
|
|||
|
|
console.log('[订单操作服务] 使用Mock模式获取售后预览');
|
|||
|
|
return mockFetchRightsPreview(params);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
console.log('[订单操作服务] 使用真实API获取售后预览(暂未实现)');
|
|||
|
|
return new Promise((resolve) => {
|
|||
|
|
resolve('real api');
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/** 确认收货 */
|
|||
|
|
export function dispatchConfirmReceived(orderNo) {
|
|||
|
|
console.log('[订单操作服务] 开始确认收货', {
|
|||
|
|
orderNo,
|
|||
|
|
useMock: config.useMock,
|
|||
|
|
timestamp: new Date().toISOString()
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
if (config.useMock) {
|
|||
|
|
console.log('[订单操作服务] 使用Mock模式确认收货');
|
|||
|
|
const { delay } = require('../_utils/delay');
|
|||
|
|
return delay().then(() => {
|
|||
|
|
console.log('[订单操作服务] Mock确认收货完成', { orderNo });
|
|||
|
|
return { success: true, message: '确认收货成功' };
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return new Promise((resolve, reject) => {
|
|||
|
|
const token = wx.getStorageSync('token');
|
|||
|
|
console.log('[订单操作服务] 检查登录状态', {
|
|||
|
|
hasToken: !!token,
|
|||
|
|
orderNo
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
if (!token) {
|
|||
|
|
console.error('[订单操作服务] 用户未登录');
|
|||
|
|
reject(new Error('未登录'));
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (!orderNo) {
|
|||
|
|
console.error('[订单操作服务] 缺少订单号');
|
|||
|
|
reject(new Error('缺少订单号'));
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const requestUrl = `${config.apiBase}/orders/${orderNo}/confirm`;
|
|||
|
|
console.log('[订单操作服务] 发送确认收货API请求', {
|
|||
|
|
url: requestUrl,
|
|||
|
|
orderNo
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
wx.request({
|
|||
|
|
url: requestUrl,
|
|||
|
|
method: 'POST',
|
|||
|
|
header: {
|
|||
|
|
'Authorization': `Bearer ${token}`,
|
|||
|
|
'Content-Type': 'application/json'
|
|||
|
|
},
|
|||
|
|
success: (res) => {
|
|||
|
|
console.log('[订单操作服务] 确认收货API响应', {
|
|||
|
|
statusCode: res.statusCode,
|
|||
|
|
dataCode: res.data?.code,
|
|||
|
|
message: res.data?.message,
|
|||
|
|
orderNo
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
if (res.statusCode === 200 && res.data.code === 200) {
|
|||
|
|
console.log('[订单操作服务] 确认收货成功', { orderNo });
|
|||
|
|
resolve({ success: true, message: '确认收货成功' });
|
|||
|
|
} else {
|
|||
|
|
const errorMsg = res.data?.message || '确认收货失败';
|
|||
|
|
console.error('[订单操作服务] 确认收货失败', {
|
|||
|
|
statusCode: res.statusCode,
|
|||
|
|
dataCode: res.data?.code,
|
|||
|
|
message: errorMsg,
|
|||
|
|
orderNo
|
|||
|
|
});
|
|||
|
|
reject(new Error(errorMsg));
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
fail: (err) => {
|
|||
|
|
console.error('[订单操作服务] 确认收货请求失败', {
|
|||
|
|
error: err,
|
|||
|
|
orderNo,
|
|||
|
|
url: requestUrl,
|
|||
|
|
timestamp: new Date().toISOString()
|
|||
|
|
});
|
|||
|
|
reject(new Error('网络请求失败'));
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/** 获取可选的mock售后原因列表 */
|
|||
|
|
function mockFetchApplyReasonList(params) {
|
|||
|
|
console.log('[订单操作服务] 使用Mock数据获取售后原因列表', {
|
|||
|
|
params,
|
|||
|
|
timestamp: new Date().toISOString()
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
const { delay } = require('../_utils/delay');
|
|||
|
|
const { genApplyReasonList } = require('../../model/order/applyService');
|
|||
|
|
|
|||
|
|
return delay().then(() => {
|
|||
|
|
const result = genApplyReasonList(params);
|
|||
|
|
console.log('[订单操作服务] Mock售后原因列表生成完成', {
|
|||
|
|
reasonCount: result.data?.length || 0
|
|||
|
|
});
|
|||
|
|
return result;
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/** 获取可选的售后原因列表 */
|
|||
|
|
export function fetchApplyReasonList(params) {
|
|||
|
|
console.log('[订单操作服务] 开始获取售后原因列表', {
|
|||
|
|
params,
|
|||
|
|
useMock: config.useMock,
|
|||
|
|
timestamp: new Date().toISOString()
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
if (config.useMock) {
|
|||
|
|
console.log('[订单操作服务] 使用Mock模式获取售后原因列表');
|
|||
|
|
return mockFetchApplyReasonList(params);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
console.log('[订单操作服务] 使用真实API获取售后原因列表(暂未实现)');
|
|||
|
|
return new Promise((resolve) => {
|
|||
|
|
resolve('real api');
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/** 发起mock售后申请 */
|
|||
|
|
function mockDispatchApplyService(params) {
|
|||
|
|
console.log('[订单操作服务] 使用Mock数据发起售后申请', {
|
|||
|
|
params,
|
|||
|
|
timestamp: new Date().toISOString()
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
const { delay } = require('../_utils/delay');
|
|||
|
|
const { applyService } = require('../../model/order/applyService');
|
|||
|
|
|
|||
|
|
return delay().then(() => {
|
|||
|
|
const result = applyService(params);
|
|||
|
|
console.log('[订单操作服务] Mock售后申请完成', {
|
|||
|
|
success: result.success,
|
|||
|
|
serviceId: result.data?.serviceId
|
|||
|
|
});
|
|||
|
|
return result;
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/** 发起售后申请 */
|
|||
|
|
export function dispatchApplyService(params) {
|
|||
|
|
console.log('[订单操作服务] 开始发起售后申请', {
|
|||
|
|
params,
|
|||
|
|
useMock: config.useMock,
|
|||
|
|
timestamp: new Date().toISOString()
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
if (config.useMock) {
|
|||
|
|
console.log('[订单操作服务] 使用Mock模式发起售后申请');
|
|||
|
|
return mockDispatchApplyService(params);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return new Promise((resolve, reject) => {
|
|||
|
|
const token = wx.getStorageSync('token');
|
|||
|
|
console.log('[订单操作服务] 检查登录状态', {
|
|||
|
|
hasToken: !!token,
|
|||
|
|
orderNo: params.orderNo
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
if (!token) {
|
|||
|
|
console.error('[订单操作服务] 用户未登录');
|
|||
|
|
reject(new Error('未登录'));
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (!params.orderNo) {
|
|||
|
|
console.error('[订单操作服务] 缺少订单号', { params });
|
|||
|
|
reject(new Error('缺少订单号'));
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const requestUrl = `${config.apiBase}/orders/${params.orderNo}/service`;
|
|||
|
|
console.log('[订单操作服务] 发送售后申请API请求', {
|
|||
|
|
url: requestUrl,
|
|||
|
|
orderNo: params.orderNo,
|
|||
|
|
reason: params.reason,
|
|||
|
|
description: params.description
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
wx.request({
|
|||
|
|
url: requestUrl,
|
|||
|
|
method: 'POST',
|
|||
|
|
data: {
|
|||
|
|
reason: params.reason,
|
|||
|
|
description: params.description,
|
|||
|
|
images: params.images || [],
|
|||
|
|
type: params.type || 1 // 1-退款 2-退货退款
|
|||
|
|
},
|
|||
|
|
header: {
|
|||
|
|
'Authorization': `Bearer ${token}`,
|
|||
|
|
'Content-Type': 'application/json'
|
|||
|
|
},
|
|||
|
|
success: (res) => {
|
|||
|
|
console.log('[订单操作服务] 售后申请API响应', {
|
|||
|
|
statusCode: res.statusCode,
|
|||
|
|
dataCode: res.data?.code,
|
|||
|
|
message: res.data?.message,
|
|||
|
|
serviceId: res.data?.data?.serviceId,
|
|||
|
|
orderNo: params.orderNo
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
if (res.statusCode === 200 && res.data.code === 200) {
|
|||
|
|
console.log('[订单操作服务] 售后申请成功', {
|
|||
|
|
orderNo: params.orderNo,
|
|||
|
|
serviceId: res.data.data?.serviceId
|
|||
|
|
});
|
|||
|
|
resolve({
|
|||
|
|
success: true,
|
|||
|
|
message: '售后申请提交成功',
|
|||
|
|
data: res.data.data
|
|||
|
|
});
|
|||
|
|
} else {
|
|||
|
|
const errorMsg = res.data?.message || '售后申请失败';
|
|||
|
|
console.error('[订单操作服务] 售后申请失败', {
|
|||
|
|
statusCode: res.statusCode,
|
|||
|
|
dataCode: res.data?.code,
|
|||
|
|
message: errorMsg,
|
|||
|
|
orderNo: params.orderNo
|
|||
|
|
});
|
|||
|
|
reject(new Error(errorMsg));
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
fail: (err) => {
|
|||
|
|
console.error('[订单操作服务] 售后申请请求失败', {
|
|||
|
|
error: err,
|
|||
|
|
orderNo: params.orderNo,
|
|||
|
|
url: requestUrl,
|
|||
|
|
timestamp: new Date().toISOString()
|
|||
|
|
});
|
|||
|
|
reject(new Error('网络请求失败'));
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
});
|
|||
|
|
}
|