import { config } from '../../config/index'; /** 创建商品评论 */ export function createComment(commentData) { return new Promise((resolve, reject) => { // 获取用户token const token = wx.getStorageSync('token'); if (!token) { reject(new Error('请先登录')); return; } // 如果有orderItemId,直接使用原有逻辑 if (commentData.orderItemId) { wx.request({ url: `${config.apiBaseUrl}/comments`, method: 'POST', header: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' }, data: { order_item_id: commentData.orderItemId, rating: commentData.rating, content: commentData.content, images: commentData.images || [], is_anonymous: commentData.isAnonymous || false }, success: (res) => { if (res.statusCode === 200 && res.data.code === 200) { resolve(res.data.data); } else { reject(new Error(res.data.message || '评论提交失败')); } }, fail: (err) => { reject(err); } }); return; } // 如果有orderNo和productId,先查找对应的订单项 if (commentData.orderNo && commentData.productId) { // 先获取订单详情,找到对应的订单项 wx.request({ url: `${config.apiBaseUrl}/orders/${commentData.orderNo}`, method: 'GET', header: { 'Authorization': `Bearer ${token}` }, success: (orderRes) => { if (orderRes.statusCode === 200 && orderRes.data.code === 200) { const order = orderRes.data.data; // 调试:打印关键信息 console.log('[createComment] 查找的产品ID:', commentData.productId, '类型:', typeof commentData.productId); console.log('[createComment] 订单项数量:', order.orderItemVOs?.length); // 查找匹配的订单项 const orderItem = order.orderItemVOs?.find(item => { // 确保数据类型一致进行比较 const itemSpuId = String(item.spuId); const searchProductId = String(commentData.productId); console.log('[createComment] 比较:', itemSpuId, '===', searchProductId, '结果:', itemSpuId === searchProductId); return itemSpuId === searchProductId; }); console.log('[createComment] 找到的订单项:', orderItem ? `ID: ${orderItem.id}, 商品: ${orderItem.goodsName}` : '未找到'); if (!orderItem) { reject(new Error('未找到对应的订单项')); return; } // 使用找到的订单项ID创建评论 wx.request({ url: `${config.apiBaseUrl}/comments`, method: 'POST', header: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' }, data: { order_item_id: parseInt(orderItem.id), rating: commentData.rating, content: commentData.content, images: commentData.images || [], is_anonymous: commentData.isAnonymous || false }, success: (res) => { if (res.statusCode === 200 && res.data.code === 200) { resolve(res.data.data); } else { reject(new Error(res.data.message || '评论提交失败')); } }, fail: (err) => { reject(err); } }); } else { reject(new Error(orderRes.data.message || '获取订单信息失败')); } }, fail: (err) => { reject(err); } }); return; } reject(new Error('缺少必要的参数')); }); } /** 获取用户评论列表 */ export function fetchUserComments(params = {}) { return new Promise((resolve, reject) => { const token = wx.getStorageSync('token'); if (!token) { reject(new Error('请先登录')); return; } const { page = 1, pageSize = 10 } = params; wx.request({ url: `${config.apiBaseUrl}/comments/user`, method: 'GET', header: { 'Authorization': `Bearer ${token}` }, data: { page, page_size: pageSize }, success: (res) => { if (res.statusCode === 200 && res.data.code === 200) { resolve(res.data.data); } else { reject(new Error(res.data.message || '获取评论列表失败')); } }, fail: (err) => { reject(err); } }); }); } /** 获取未评论的订单项 */ export function fetchUncommentedOrderItems() { return new Promise((resolve, reject) => { const token = wx.getStorageSync('token'); if (!token) { reject(new Error('请先登录')); return; } wx.request({ url: `${config.apiBaseUrl}/user/uncommented-order-items`, method: 'GET', header: { 'Authorization': `Bearer ${token}` }, success: (res) => { if (res.statusCode === 200 && res.data.code === 200) { resolve(res.data.data); } else { reject(new Error(res.data.message || '获取待评论订单失败')); } }, fail: (err) => { reject(err); } }); }); }