一、收藏功能核心设计
1. 用户场景
- 快速收藏常购商品(如每周必买的蔬菜、肉类)
- 收藏促销活动或限时优惠商品
- 通过收藏列表直接跳转购买
2. 功能模块
- 前端交互:
- 商品详情页添加「爱心图标」收藏按钮(带动画反馈)
- 个人中心新增「我的收藏」入口(带商品缩略图和价格)
- 支持滑动删除/批量管理收藏
- 后端逻辑:
- 用户-商品关联表(用户ID、商品ID、收藏时间)
- 防重复收藏校验
- 收藏数据统计(用于推荐算法)
3. 数据模型示例
```sql
CREATE TABLE user_favorites (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id VARCHAR(32) NOT NULL,
product_id VARCHAR(32) NOT NULL,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY (user_id, product_id)
);
```
二、基于万象源码的快速部署方案
假设使用类似「万象优选」的开源生鲜商城源码(如基于UniApp+Spring Cloud的架构):
1. 源码获取与环境准备
- 从GitHub/Gitee获取开源项目(如`wanxiang-mall`)
- 部署环境要求:
- 前端:HBuilderX + 微信开发者工具
- 后端:JDK 11 + MySQL 5.7 + Redis
- 服务器:CentOS 7+ / 宝塔面板
2. 修改核心代码
- 前端修改(Vue/UniApp示例):
```javascript
// 商品详情页收藏逻辑
methods: {
toggleFavorite() {
const productId = this.product.id;
if (this.isFavorite) {
api.unfavorite(productId).then(() => {
this.isFavorite = false;
uni.showToast({ title: 已取消收藏 });
});
} else {
api.favorite(productId).then(() => {
this.isFavorite = true;
uni.showToast({ title: 收藏成功, icon: success });
});
}
}
}
```
- 后端修改(Spring Boot示例):
```java
@PostMapping("/favorite")
public Result addFavorite(@RequestBody FavoriteRequest request) {
User user = UserContext.getCurrentUser();
if (favoriteService.exists(user.getId(), request.getProductId())) {
return Result.error("已收藏过");
}
favoriteService.save(new Favorite(user.getId(), request.getProductId()));
return Result.success();
}
```
3. 数据库初始化
- 执行SQL脚本创建收藏表
- 添加索引优化查询:
```sql
CREATE INDEX idx_user_product ON user_favorites(user_id, product_id);
```
三、部署优化建议
1. 性能优化
- 使用Redis缓存用户收藏状态(避免频繁查库)
- 对收藏列表分页加载(每页10条)
2. 用户体验增强
- 收藏商品降价时推送模板消息
- 在首页/分类页标记「已收藏」商品
3. 安全措施
- 接口添加用户鉴权(JWT/Session)
- 防止恶意刷收藏接口(限流+IP黑名单)
四、完整部署流程(以宝塔面板为例)
1. 服务器准备
- 购买云服务器(推荐2核4G配置)
- 安装Nginx + MySQL + Redis
2. 代码部署
```bash
后端部署(示例)
git clone https://github.com/your-repo/backend.git
cd backend
mvn package
java -jar target/mall-0.0.1.jar
前端部署
uni build --platform mp-weixin
将生成的dist文件上传至微信开发者工具
```
3. 微信配置
- 在微信公众平台配置合法域名
- 提交小程序审核(需包含收藏功能演示)
五、常见问题解决
1. 收藏状态不同步
- 检查`wx.login`获取的openid是否正确绑定用户
- 确保前后端`user_id`字段类型一致(建议统一用String)
2. 性能瓶颈
- 收藏列表接口添加Redis缓存(`SET user:123:favorites [1,2,3]`)
- 数据库添加分表策略(按用户ID哈希分表)
3. 跨端兼容
- 测试微信/支付宝/百度小程序的收藏图标显示差异
- 使用条件编译处理平台差异代码
六、进阶功能扩展
1. 社交化收藏
- 显示「XX人收藏了此商品」
- 收藏排行榜(热销收藏商品)
2. 智能推荐
- 基于收藏历史推荐相似商品(协同过滤算法)
- 收藏商品降价时自动提醒
3. 商家端功能
- 商家后台查看商品收藏数据
- 针对高收藏商品设置专属优惠
通过以上方案,可在3-5个工作日内完成收藏功能开发并部署上线。建议先在测试环境验证核心流程,再逐步灰度发布。实际部署时需根据具体源码结构调整代码路径和配置参数。