Files
ai_dianshang/miniprogram/services/order/applyService.js

276 lines
8.1 KiB
JavaScript
Raw Normal View History

2025-11-17 14:11:46 +08:00
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('网络请求失败'));
}
});
});
}