init
This commit is contained in:
134
miniprogram/services/good/fetchGoodsDetailsComments.js
Normal file
134
miniprogram/services/good/fetchGoodsDetailsComments.js
Normal file
@@ -0,0 +1,134 @@
|
||||
import { config } from '../../config/index';
|
||||
|
||||
/** 获取商品详情页评论数 */
|
||||
function mockFetchGoodDetailsCommentsCount(spuId = 0) {
|
||||
const { delay } = require('../_utils/delay');
|
||||
const {
|
||||
getGoodsDetailsCommentsCount,
|
||||
} = require('../../model/detailsComments');
|
||||
return delay().then(() => getGoodsDetailsCommentsCount(spuId));
|
||||
}
|
||||
|
||||
/** 获取商品详情页评论数 */
|
||||
export function getGoodsDetailsCommentsCount(spuId = 0) {
|
||||
if (config.useMock) {
|
||||
return mockFetchGoodDetailsCommentsCount(spuId);
|
||||
}
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
wx.request({
|
||||
url: `${config.apiBase}/products/${spuId}/reviews/count`,
|
||||
method: 'GET',
|
||||
header: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
success: (res) => {
|
||||
if (res.statusCode === 200) {
|
||||
// 转换后端数据格式为前端需要的格式
|
||||
const data = {
|
||||
commentCount: res.data.data.total || 0,
|
||||
goodRate: res.data.data.good_rate || '100',
|
||||
badCount: res.data.data.bad_count || 0,
|
||||
goodCount: res.data.data.good_count || 0,
|
||||
middleCount: res.data.data.middle_count || 0,
|
||||
hasImageCount: res.data.data.has_image_count || 0,
|
||||
};
|
||||
resolve(data);
|
||||
} else {
|
||||
console.error('获取评论统计失败:', res);
|
||||
// 失败时返回默认数据
|
||||
resolve({
|
||||
commentCount: 0,
|
||||
goodRate: '100',
|
||||
badCount: 0,
|
||||
goodCount: 0,
|
||||
middleCount: 0,
|
||||
hasImageCount: 0,
|
||||
});
|
||||
}
|
||||
},
|
||||
fail: (error) => {
|
||||
console.error('获取评论统计请求失败:', error);
|
||||
// 网络错误时返回默认数据
|
||||
resolve({
|
||||
commentCount: 0,
|
||||
goodRate: '100',
|
||||
badCount: 0,
|
||||
goodCount: 0,
|
||||
middleCount: 0,
|
||||
hasImageCount: 0,
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/** 获取商品详情页评论 */
|
||||
function mockFetchGoodDetailsCommentList(spuId = 0) {
|
||||
const { delay } = require('../_utils/delay');
|
||||
const { getGoodsDetailsComments } = require('../../model/detailsComments');
|
||||
return delay().then(() => getGoodsDetailsComments(spuId));
|
||||
}
|
||||
|
||||
/** 获取商品详情页评论 */
|
||||
export function getGoodsDetailsCommentList(spuId = 0, page = 1, limit = 10) {
|
||||
if (config.useMock) {
|
||||
return mockFetchGoodDetailsCommentList(spuId);
|
||||
}
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
wx.request({
|
||||
url: `${config.apiBase}/products/${spuId}/reviews`,
|
||||
method: 'GET',
|
||||
data: {
|
||||
page: page,
|
||||
limit: limit,
|
||||
},
|
||||
header: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
success: (res) => {
|
||||
if (res.statusCode === 200) {
|
||||
// 转换后端数据格式为前端需要的格式
|
||||
const reviews = res.data.data.list || [];
|
||||
const transformedData = reviews.map(review => ({
|
||||
spuId: review.product_id?.toString() || spuId.toString(),
|
||||
skuId: review.sku_id?.toString() || '0',
|
||||
specInfo: review.spec_info || '',
|
||||
commentContent: review.content || '',
|
||||
commentResources: review.images ? review.images.map(img => ({
|
||||
src: img,
|
||||
type: 'image'
|
||||
})) : [],
|
||||
commentScore: review.rating || 5,
|
||||
uid: review.user_id?.toString() || '',
|
||||
userName: review.user_name || '匿名用户',
|
||||
userHeadUrl: review.user_avatar || 'https://tdesign.gtimg.com/miniprogram/template/retail/avatar/avatar1.png',
|
||||
isAnonymity: review.is_anonymous || false,
|
||||
commentTime: review.created_at ? new Date(review.created_at).getTime().toString() : Date.now().toString(),
|
||||
isAutoComment: false,
|
||||
sellerReply: review.reply || '',
|
||||
goodsDetailInfo: review.spec_info || '',
|
||||
}));
|
||||
|
||||
resolve({
|
||||
homePageComments: transformedData
|
||||
});
|
||||
} else {
|
||||
console.error('获取评论列表失败:', res);
|
||||
// 失败时返回空数组
|
||||
resolve({
|
||||
homePageComments: []
|
||||
});
|
||||
}
|
||||
},
|
||||
fail: (error) => {
|
||||
console.error('获取评论列表请求失败:', error);
|
||||
// 网络错误时返回空数组
|
||||
resolve({
|
||||
homePageComments: []
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user