76 lines
3.1 KiB
JavaScript
76 lines
3.1 KiB
JavaScript
|
|
const { config } = require('../../config/index');
|
||
|
|
|
||
|
|
/** 获取商品评论数 */
|
||
|
|
function mockFetchCommentsCount(ID = 0) {
|
||
|
|
const { delay } = require('../_utils/delay');
|
||
|
|
const { getGoodsCommentsCount } = require('../../model/comments');
|
||
|
|
return delay().then(() => getGoodsCommentsCount(ID));
|
||
|
|
}
|
||
|
|
|
||
|
|
/** 获取商品评论数 */
|
||
|
|
function fetchCommentsCount(productId = 0) {
|
||
|
|
console.log('[fetchCommentsCount] 接收到的productId:', productId, '类型:', typeof productId);
|
||
|
|
|
||
|
|
// 验证productId参数
|
||
|
|
if (productId === null || productId === undefined || productId === '' || productId === 'undefined' || productId === 'null') {
|
||
|
|
console.error('[fetchCommentsCount] 商品ID为空或无效:', productId);
|
||
|
|
return Promise.reject(new Error('商品ID不能为空'));
|
||
|
|
}
|
||
|
|
|
||
|
|
// 确保productId是数字
|
||
|
|
const numericProductId = Number(productId);
|
||
|
|
console.log('[fetchCommentsCount] 转换后的数字ID:', numericProductId);
|
||
|
|
|
||
|
|
if (isNaN(numericProductId) || numericProductId <= 0) {
|
||
|
|
console.error('[fetchCommentsCount] 商品ID不是有效的正整数:', productId, '->', numericProductId);
|
||
|
|
return Promise.reject(new Error('商品ID必须是有效的正整数'));
|
||
|
|
}
|
||
|
|
|
||
|
|
if (config.useMock) {
|
||
|
|
return mockFetchCommentsCount(numericProductId);
|
||
|
|
}
|
||
|
|
|
||
|
|
return new Promise((resolve, reject) => {
|
||
|
|
wx.request({
|
||
|
|
url: `${config.apiBase}/comments/products/${numericProductId}/stats`,
|
||
|
|
method: 'GET',
|
||
|
|
success: (res) => {
|
||
|
|
if (res.statusCode === 200 && res.data.code === 200) {
|
||
|
|
// 转换数据格式以匹配前端期望的结构
|
||
|
|
const stats = res.data.data;
|
||
|
|
const result = {
|
||
|
|
// 原始数据保留
|
||
|
|
total_count: stats.total_count || 0,
|
||
|
|
average_rating: stats.average_rating || 0,
|
||
|
|
rating_1_count: stats.rating_1_count || 0,
|
||
|
|
rating_2_count: stats.rating_2_count || 0,
|
||
|
|
rating_3_count: stats.rating_3_count || 0,
|
||
|
|
rating_4_count: stats.rating_4_count || 0,
|
||
|
|
rating_5_count: stats.rating_5_count || 0,
|
||
|
|
good_count: (stats.rating_4_count || 0) + (stats.rating_5_count || 0),
|
||
|
|
medium_count: stats.rating_3_count || 0,
|
||
|
|
bad_count: (stats.rating_1_count || 0) + (stats.rating_2_count || 0),
|
||
|
|
image_count: stats.has_images_count || stats.image_count || 0,
|
||
|
|
|
||
|
|
// 页面期望的数据格式
|
||
|
|
commentCount: String(stats.total_count || 0),
|
||
|
|
goodCount: String((stats.rating_4_count || 0) + (stats.rating_5_count || 0)),
|
||
|
|
middleCount: String(stats.rating_3_count || 0),
|
||
|
|
badCount: String((stats.rating_1_count || 0) + (stats.rating_2_count || 0)),
|
||
|
|
hasImageCount: String(stats.has_images_count || stats.image_count || 0),
|
||
|
|
uidCount: '0', // 用户自己的评论数,需要单独获取
|
||
|
|
};
|
||
|
|
resolve(result);
|
||
|
|
} else {
|
||
|
|
reject(new Error(res.data.message || '获取评论统计失败'));
|
||
|
|
}
|
||
|
|
},
|
||
|
|
fail: (err) => {
|
||
|
|
reject(err);
|
||
|
|
}
|
||
|
|
});
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
module.exports = { fetchCommentsCount };
|