一、功能概述
本地供应商评价功能是小象买菜系统中连接消费者与本地供应商的重要桥梁,通过收集和分析用户反馈,帮助平台管理供应商质量,提升用户购物体验。
二、核心功能模块
1. 评价维度设计
- 商品质量:新鲜度、完整性、规格符合度
- 配送服务:准时性、包装完整性、配送员态度
- 价格合理性:性价比、市场竞争力
- 售后服务:退换货处理、问题解决效率
- 供应商信誉:历史表现、合规性
2. 评价系统实现
前端实现
```javascript
// 评价表单组件示例
const SupplierRating = ({ supplierId }) => {
const [rating, setRating] = useState({
quality: 5,
delivery: 5,
price: 5,
service: 5,
overall: 5
});
const [comment, setComment] = useState();
const handleSubmit = async () => {
try {
const response = await api.post(/api/ratings, {
supplierId,
...rating,
comment,
userId: currentUser.id
});
// 处理成功响应
} catch (error) {
// 错误处理
}
};
return (
{/* 星级评分组件 */}
setRating({...rating, quality: v})} label="商品质量" />
{/* 其他评分项... */}
);
};
```
后端实现(Node.js示例)
```javascript
// 评价模型
const RatingSchema = new mongoose.Schema({
supplierId: { type: mongoose.Schema.Types.ObjectId, ref: Supplier, required: true },
userId: { type: mongoose.Schema.Types.ObjectId, ref: User, required: true },
quality: { type: Number, min: 1, max: 5, required: true },
delivery: { type: Number, min: 1, max: 5, required: true },
price: { type: Number, min: 1, max: 5, required: true },
service: { type: Number, min: 1, max: 5, required: true },
overall: { type: Number, min: 1, max: 5, required: true },
comment: String,
createdAt: { type: Date, default: Date.now },
// 防止重复评价
orderId: { type: mongoose.Schema.Types.ObjectId, ref: Order, required: true }
});
// 路由处理
router.post(/ratings, authMiddleware, async (req, res) => {
try {
// 检查是否已评价过该订单
const existingRating = await Rating.findOne({
userId: req.user.id,
orderId: req.body.orderId
});
if (existingRating) {
return res.status(400).json({ error: 已评价过该订单 });
}
const rating = new Rating({
...req.body,
userId: req.user.id
});
await rating.save();
// 更新供应商平均评分
await Supplier.updateOne(
{ _id: req.body.supplierId },
{ $inc: { reviewCount: 1 } }
);
res.status(201).json(rating);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
```
3. 供应商评分计算
```javascript
// 计算供应商平均评分
async function calculateSupplierRating(supplierId) {
const ratings = await Rating.aggregate([
{ $match: { supplierId: mongoose.Types.ObjectId(supplierId) } },
{
$group: {
_id: null,
avgQuality: { $avg: $quality },
avgDelivery: { $avg: $delivery },
avgPrice: { $avg: $price },
avgService: { $avg: $service },
avgOverall: { $avg: $overall },
reviewCount: { $sum: 1 }
}
}
]);
if (ratings.length > 0) {
return {
...ratings[0],
// 计算加权总分(可根据业务需求调整权重)
weightedScore:
ratings[0].avgQuality * 0.3 +
ratings[0].avgDelivery * 0.25 +
ratings[0].avgPrice * 0.2 +
ratings[0].avgService * 0.25
};
}
return null;
}
```
4. 评价展示与筛选
```javascript
// 获取供应商评价列表
router.get(/suppliers/:id/ratings, async (req, res) => {
try {
const { page = 1, limit = 10, sort = -createdAt } = req.query;
const ratings = await Rating.find({ supplierId: req.params.id })
.populate(userId, username avatar)
.sort(sort)
.skip((page - 1) * limit)
.limit(parseInt(limit));
const total = await Rating.countDocuments({ supplierId: req.params.id });
res.json({
data: ratings,
pagination: {
page: parseInt(page),
limit: parseInt(limit),
total
}
});
} catch (error) {
res.status(500).json({ error: error.message });
}
});
```
三、关键技术实现
1. 防刷评机制:
- 每个订单只能评价一次
- IP限制(可选)
- 用户行为分析
2. 评价审核:
- 自动过滤敏感词
- 人工审核可疑评价
- 图片/视频评价审核
3. 数据可视化:
- 供应商评分趋势图
- 各维度评分对比
- 评价关键词云
4. 评价激励:
- 评价奖励积分
- 优质评价展示
- 评价排行榜
四、数据库设计
```
Supplier (供应商表)
- id
- name
- address
- contact
- avgRating
- reviewCount
- ...
Rating (评价表)
- id
- supplierId (FK)
- userId (FK)
- orderId (FK)
- quality (1-5)
- delivery (1-5)
- price (1-5)
- service (1-5)
- overall (1-5)
- comment
- createdAt
- images (可选数组)
```
五、扩展功能建议
1. 评价回复:供应商可回复用户评价
2. 评价标签:自动生成评价标签(如"配送快"、"价格实惠")
3. 评价对比:同品类供应商评分对比
4. 评价预警:评分骤降时自动通知供应商和平台
5. 评价溯源:关联订单信息,确保评价真实性
六、实施步骤
1. 需求分析与设计
2. 数据库设计与搭建
3. 后端API开发
4. 前端页面开发
5. 测试与优化
6. 上线与监控
通过以上实现方案,小象买菜系统可以构建一个完善的本地供应商评价体系,既能帮助消费者做出更明智的购买决策,也能激励供应商提升服务质量,形成良性循环的生鲜电商生态。