Files
ai_dianshang/miniprogram/pages/debug/comment-display-test.js
2025-11-17 13:32:54 +08:00

186 lines
5.2 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const { fetchComments } = require('../../services/comments/fetchComments');
const { fetchCommentsCount } = require('../../services/comments/fetchCommentsCount');
Page({
data: {
spuId: 1,
commentsList: [],
commentsStatistics: {
badCount: 0,
commentCount: 0,
goodCount: 0,
goodRate: 0,
hasImageCount: 0,
middleCount: 0,
},
isLoading: false,
debugInfo: {
apiCalled: false,
dataReceived: false,
errorMessage: '',
rawData: null,
processedData: null
}
},
onLoad() {
console.log('评论显示测试页面加载');
this.loadCommentData();
},
async loadCommentData() {
this.setData({
isLoading: true,
'debugInfo.apiCalled': false,
'debugInfo.dataReceived': false,
'debugInfo.errorMessage': '',
'debugInfo.rawData': null,
'debugInfo.processedData': null
});
try {
// 获取评论统计
await this.getCommentsStatistics(this.data.spuId);
// 获取评论列表
await this.getCommentsList(this.data.spuId);
this.setData({
isLoading: false,
'debugInfo.dataReceived': true
});
} catch (error) {
console.error('加载评论数据失败:', error);
this.setData({
isLoading: false,
'debugInfo.errorMessage': error.message || '未知错误'
});
}
},
// 获取评论统计数据 - 复制商品详情页面的逻辑
async getCommentsStatistics(spuId) {
try {
this.setData({ 'debugInfo.apiCalled': true });
console.log('调用 fetchCommentsCountspuId:', spuId);
const res = await fetchCommentsCount(spuId);
console.log('fetchCommentsCount 返回结果:', res);
this.setData({ 'debugInfo.rawData': res });
if (res) {
const goodRate = res.total_count > 0 ? Math.round((res.good_count / res.total_count) * 100) : 0;
const commentsStatistics = {
commentCount: res.total_count || 0,
goodCount: res.good_count || 0,
middleCount: res.medium_count || 0,
badCount: res.bad_count || 0,
goodRate: goodRate,
hasImageCount: res.image_count || 0,
};
console.log('处理后的统计数据:', commentsStatistics);
console.log('显示条件 (commentCount > 0):', commentsStatistics.commentCount > 0);
this.setData({
commentsStatistics: commentsStatistics,
'debugInfo.processedData': commentsStatistics
});
}
} catch (error) {
console.error('获取评论统计失败:', error);
this.setData({
'debugInfo.errorMessage': error.message || '获取评论统计失败',
commentsStatistics: {
commentCount: 0,
goodCount: 0,
middleCount: 0,
badCount: 0,
goodRate: 0,
hasImageCount: 0,
}
});
}
},
// 获取评论列表数据 - 复制商品详情页面的逻辑
async getCommentsList(spuId) {
try {
console.log('调用 fetchComments参数:', { productId: spuId, page: 1, pageSize: 3 });
const res = await fetchComments({ productId: spuId, page: 1, pageSize: 3 });
console.log('fetchComments 返回结果:', res);
if (res && res.comments) {
// 转换评论数据格式
const commentsList = res.comments.map(comment => ({
id: comment.id,
userName: comment.is_anonymous ? '匿名用户' : (comment.user_name || '用户'),
userHeadUrl: comment.user_avatar || 'https://tdesign.gtimg.com/miniprogram/template/retail/avatar/avatar1.png',
commentScore: comment.rating || 5,
commentContent: comment.content || '',
commentTime: comment.created_at ? this.formatTime(comment.created_at) : '',
specInfo: comment.product_spec || '',
commentResources: (comment.images || []).map(imageUrl => ({
src: imageUrl,
type: 'image'
})),
isAnonymity: comment.is_anonymous || false,
sellerReply: comment.reply_content || '',
goodsDetailInfo: ''
}));
console.log('处理后的评论列表:', commentsList);
this.setData({
commentsList: commentsList
});
}
} catch (error) {
console.error('获取评论列表失败:', error);
this.setData({
commentsList: []
});
}
},
// 格式化时间
formatTime(dateString) {
if (!dateString) return '';
try {
const date = new Date(dateString);
return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`;
} catch (error) {
return dateString;
}
},
// 重新加载数据
reloadData() {
this.loadCommentData();
},
// 清除数据
clearData() {
this.setData({
commentsList: [],
commentsStatistics: {
badCount: 0,
commentCount: 0,
goodCount: 0,
goodRate: 0,
hasImageCount: 0,
middleCount: 0,
},
debugInfo: {
apiCalled: false,
dataReceived: false,
errorMessage: '',
rawData: null,
processedData: null
}
});
}
});