1. 项目概述
作为一名有10年全栈开发经验的程序员,我想分享一个基于Node.js和Spring Boot的大众点评类美食小程序毕业设计项目。这个项目不仅包含了完整的前后端代码,还配套了详细的开发文档、讲解视频和调试指南,非常适合计算机相关专业的同学作为毕业设计参考。
这个项目采用前后端分离架构,前端使用微信小程序开发,后端基于Spring Boot框架,数据库选用MySQL。系统实现了用户注册登录、商家信息展示、美食评价、收藏点赞等核心功能,完整复刻了大众点评的核心业务流程。
2. 技术架构设计
2.1 整体架构设计
项目采用典型的三层架构设计:
- 表现层:微信小程序前端
- 业务逻辑层:Spring Boot后端服务
- 数据访问层:MySQL数据库
这种分层架构使得系统各模块职责明确,便于维护和扩展。前后端通过RESTful API进行通信,接口设计遵循JSON格式规范。
2.2 技术栈选型
2.2.1 前端技术栈
- 微信小程序:使用WXML、WXSS和JavaScript开发
- Vue.js:部分复杂页面采用Vue框架实现
- ECharts:用于数据可视化展示
2.2.2 后端技术栈
- Spring Boot 2.7:快速构建微服务
- MyBatis-Plus:简化数据库操作
- Redis:缓存热点数据
- JWT:实现用户认证
- Swagger:API文档生成
2.2.3 数据库设计
MySQL数据库设计遵循第三范式,主要包含以下表:
- 用户表(user)
- 商家表(merchant)
- 菜品表(dish)
- 评价表(review)
- 收藏表(favorite)
3. 核心功能实现
3.1 用户系统模块
3.1.1 注册登录功能
采用JWT实现无状态认证,密码存储使用BCrypt加密。注册流程包含手机号验证和基本信息填写。
java复制// 用户注册核心代码示例
@PostMapping("/register")
public Result register(@RequestBody User user) {
// 验证手机号是否已注册
if(userService.checkMobile(user.getMobile())) {
return Result.fail("手机号已注册");
}
// 密码加密
user.setPassword(DigestUtils.bcryptHash(user.getPassword()));
// 保存用户
userService.save(user);
// 生成token
String token = JwtUtil.generateToken(user.getId());
return Result.ok(token);
}
3.1.2 用户信息管理
实现用户基本信息修改、头像上传、密码重置等功能。头像上传使用阿里云OSS存储服务。
3.2 商家展示模块
3.2.1 商家列表
支持按分类、距离、评分等多维度筛选商家。使用Redis缓存热门商家数据,减轻数据库压力。
java复制// 获取附近商家代码示例
@GetMapping("/nearby")
public Result getNearbyShops(
@RequestParam Double longitude,
@RequestParam Double latitude,
@RequestParam Integer distance) {
// 使用Redis GEO命令查询附近商家
List<Shop> shops = shopService.findNearby(longitude, latitude, distance);
return Result.ok(shops);
}
3.2.2 商家详情
展示商家基本信息、菜品列表、用户评价等。实现图片懒加载优化页面性能。
3.3 评价系统模块
3.3.1 发表评价
用户可以对商家和菜品发表评价,支持文字、图片和星级评分。评价内容经过敏感词过滤。
3.3.2 评价管理
商家可以回复用户评价,用户可以对评价点赞。热门评价会优先展示。
4. 项目部署与测试
4.1 开发环境搭建
4.1.1 前端环境
- 安装微信开发者工具
- 配置小程序AppID
- 导入项目源码
- 修改config.js中的API地址
4.1.2 后端环境
- 安装JDK 1.8+
- 安装Maven
- 导入Spring Boot项目
- 配置application.yml中的数据库连接
4.2 数据库部署
sql复制-- 创建数据库
CREATE DATABASE food_review DEFAULT CHARACTER SET utf8mb4;
-- 创建用户表
CREATE TABLE `user` (
`id` bigint NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`mobile` varchar(20) NOT NULL,
`password` varchar(100) NOT NULL,
`avatar` varchar(255) DEFAULT NULL,
`create_time` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_mobile` (`mobile`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
4.3 系统测试
4.3.1 单元测试
使用JUnit对核心业务逻辑进行单元测试,确保每个方法按预期工作。
java复制@Test
public void testUserRegister() {
User user = new User();
user.setMobile("13800138000");
user.setPassword("123456");
Result result = userController.register(user);
assertEquals(200, result.getCode());
assertNotNull(result.getData());
}
4.3.2 接口测试
使用Postman对RESTful API进行全面测试,验证接口功能和性能。
4.3.3 压力测试
使用JMeter模拟高并发场景,测试系统吞吐量和响应时间。
5. 项目优化与扩展
5.1 性能优化
- 使用Redis缓存热点数据
- 数据库查询优化,添加适当索引
- 启用Gzip压缩减小传输体积
- 前端资源合并与压缩
5.2 安全加固
- 接口防刷限流
- SQL注入防护
- XSS攻击防范
- 敏感数据加密
5.3 功能扩展
- 增加外卖订餐功能
- 实现会员积分系统
- 开发商家管理后台
- 添加数据统计分析
6. 开发经验分享
在实际开发过程中,我总结了以下几点经验:
- 微信小程序开发要注意兼容性问题,不同机型表现可能不同
- 后端API设计要遵循RESTful规范,保持接口风格统一
- 数据库设计要考虑扩展性,避免后期频繁修改表结构
- 项目文档要及时更新,方便后续维护
注意事项:
- 微信小程序上线需要企业资质,个人开发者只能用于学习和测试
- 项目中使用到的第三方服务(如阿里云OSS)需要自行申请
- 数据库配置信息不要提交到代码仓库,使用环境变量管理
这个项目完整实现了大众点评的核心功能,代码结构清晰,注释完善,非常适合作为毕业设计参考。如果需要完整源码和开发文档,可以通过文末方式联系我获取。