# dianpingV2 **Repository Path**: OrzR3/dianping-v2 ## Basic Information - **Project Name**: dianpingV2 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-24 - **Last Updated**: 2026-04-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 美食点评平台 V2 前后端分离版本,基于 Vue 2 + ElementUI + NestJS/Express + MySQL ## 项目结构 ``` dianpingV2/ ├── backend/ # Express 后端(旧版,维护中) ├── backend-nest/ # NestJS 后端(新版,推荐) ├── frontend/ # Vue 2 前端(Web) ├── frontend-uniapp/ # UniApp 前端(移动端 H5 / 小程序) └── README.md ``` ## 技术栈 ### 后端 | 版本 | 框架 | Node 版本 | ORM | 特点 | |------|------|-----------|-----|------| | backend/ | Express 4.x | 10.21.0+ | mysql2 (手写) | 轻量、简单 | | backend-nest/ | NestJS 10.x | 20.13.1+ | TypeORM | 模块化、企业级 | ### 前端 | 版本 | 框架 | 平台 | UI 库 | |------|------|------|-------| | frontend/ | Vue 2.6 | Web (PC/Mobile) | ElementUI 2.15 | | frontend-uniapp/ | UniApp | H5 / 微信小程序 | uView 2.x | ### 数据库 - MySQL 8.x - 数据库名:`dianping` - 字符集:`utf8mb4` ## 快速开始 ### 1. 环境要求 - Node.js >= 20.13.1(推荐) - MySQL 8.x - Git ### 2. 数据库初始化 ```sql -- 创建数据库 CREATE DATABASE dianping DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 导入数据(从原项目获取) -- mysql -u root -p dianping < D:\workspace\dianping\sql\init.sql ``` ### 3. 启动后端服务 #### 方式一:NestJS 后端(推荐) ```bash cd backend-nest # 安装依赖 npm install # 开发模式(热更新) npm run dev # 生产模式 npm run start # 生产构建 npm run build ``` #### 方式二:Express 后端(兼容旧版) ```bash cd backend # 安装依赖 npm install # 开发模式 npm run dev # 生产模式 npm run start ``` **后端启动后访问地址**: - Express: http://localhost:3000 - NestJS: http://localhost:3000 ### 4. 启动前端 #### Web 前端 ```bash cd frontend # 安装依赖 npm install # 开发模式 npm run dev # 生产构建 npm run build ``` #### UniApp 前端 ```bash cd frontend-uniapp # 安装依赖 npm install # H5 开发 npm run dev:h5 # 微信小程序 npm run dev:mp-weixin # 构建 H5 npm run build:h5 # 构建小程序 npm run build:mp-weixin ``` ### 5. 访问应用 | 应用 | 地址 | |------|------| | Web 前端 | http://localhost:8080 | | 后端 API | http://localhost:3000/api | | H5 前端 | http://localhost:5173 | ## 环境变量配置 ### 后端配置 编辑 `backend/config/default.json`(Express)或 `backend-nest/src/config/development.json`(NestJS): ```json { "port": 3000, "database": { "host": "localhost", "port": 3306, "username": "root", "password": "123456", "database": "dianping" }, "jwt": { "secret": "your-secret-key", "expiresIn": "7d" } } ``` ### 前端配置 前端通过 `.env` 文件配置 API 地址: ```bash # .env.development(开发环境) VUE_APP_API_BASE_URL=http://localhost:3000/api # .env.production(生产环境) VUE_APP_API_BASE_URL=http://your-domain.com/api ``` ## API 接口文档 ### 认证相关 | 接口 | 方法 | 说明 | 认证 | |------|------|------|------| | `/api/auth/register` | POST | 用户注册 | 否 | | `/api/auth/login` | POST | 用户登录 | 否 | | `/api/auth/me` | GET | 获取当前用户信息 | 是 | | `/api/auth/password` | PUT | 修改密码 | 是 | ### 商家相关 | 接口 | 方法 | 说明 | 认证 | |------|------|------|------| | `/api/shops` | GET | 获取商家列表 | 否 | | `/api/shops/categories` | GET | 获取商家分类统计 | 否 | | `/api/shops/:id` | GET | 获取商家详情 | 否 | | `/api/shops/:id/dishes` | GET | 获取商家菜品列表 | 否 | | `/api/shops/:id/reviews` | GET | 获取商家评价列表 | 否 | | `/api/shops` | POST | 创建商家 | 是 | | `/api/shops/:id` | PUT | 更新商家信息 | 是 | | `/api/shops/:id` | DELETE | 删除商家 | 是 | ### 菜品相关 | 接口 | 方法 | 说明 | 认证 | |------|------|------|------| | `/api/dishes/:id` | GET | 获取菜品详情 | 否 | | `/api/dishes/:id/reviews` | POST | 添加菜品评价 | 是 | | `/api/dishes` | POST | 创建菜品 | 是 | | `/api/dishes/:id` | PUT | 更新菜品 | 是 | | `/api/dishes/:id` | DELETE | 删除菜品 | 是 | ### 评价相关 | 接口 | 方法 | 说明 | 认证 | |------|------|------|------| | `/api/reviews` | POST | 发布评价 | 是 | | `/api/reviews/my` | GET | 获取我的评价 | 是 | | `/api/reviews/:id` | DELETE | 删除评价 | 是 | ### 收藏相关 | 接口 | 方法 | 说明 | 认证 | |------|------|------|------| | `/api/favorites` | GET | 获取收藏列表 | 是 | | `/api/favorites` | POST | 添加收藏 | 是 | | `/api/favorites/:shopId` | DELETE | 取消收藏 | 是 | ## 数据模型 ### 用户 (User) | 字段 | 类型 | 说明 | |------|------|------| | id | INT | 主键 | | username | VARCHAR(50) | 用户名(唯一) | | password | VARCHAR(255) | 密码(加密存储) | | nickname | VARCHAR(50) | 昵称 | | avatar | VARCHAR(255) | 头像 URL | | created_at | DATETIME | 创建时间 | ### 商家 (Shop) | 字段 | 类型 | 说明 | |------|------|------| | id | INT | 主键 | | name | VARCHAR(100) | 商家名称 | | category | VARCHAR(50) | 分类 | | address | VARCHAR(255) | 地址 | | phone | VARCHAR(20) | 联系电话 | | hours | VARCHAR(100) | 营业时间 | | avg_price | INT | 人均价格 | | description | TEXT | 描述 | | image | VARCHAR(255) | 图片 URL | | rating | DECIMAL(2,1) | 评分 | | review_count | INT | 评价数量 | ### 菜品 (Dish) | 字段 | 类型 | 说明 | |------|------|------| | id | INT | 主键 | | shop_id | INT | 商家 ID | | name | VARCHAR(100) | 菜品名称 | | price | DECIMAL(10,2) | 价格 | | description | TEXT | 描述 | | image | VARCHAR(255) | 图片 URL | ### 评价 (Review) | 字段 | 类型 | 说明 | |------|------|------| | id | INT | 主键 | | user_id | INT | 用户 ID | | shop_id | INT | 商家 ID | | rating | INT | 评分(1-5) | | content | TEXT | 评价内容 | | created_at | DATETIME | 创建时间 | ### 收藏 (Favorite) | 字段 | 类型 | 说明 | |------|------|------| | id | INT | 主键 | | user_id | INT | 用户 ID | | shop_id | INT | 商家 ID | | created_at | DATETIME | 收藏时间 | ## 测试账号 - 用户名:`test001` - 密码:`123456` ## 功能特性 - [x] 用户注册/登录 - [x] JWT 认证 - [x] 商家浏览(分类、搜索、排序) - [x] 商家详情(信息、菜品、评价) - [x] 发布评价 - [x] 收藏商家 - [x] 我的收藏 - [x] 我的评价 - [x] 多端支持(Web / H5 / 小程序) ## 部署说明 ### PM2 部署后端 ```bash # 安装 PM2 npm install -g pm2 # 启动服务 cd backend-nest npm run build pm2 start npm --name "dianping-api" -- start # 查看状态 pm2 list # 查看日志 pm2 logs dianping-api # 重启 pm2 restart dianping-api ``` ### Nginx 配置 ```nginx server { listen 80; server_name your-domain.com; # 前端静态文件 location / { root /var/www/dianping/frontend/dist; try_files $uri $uri/ /index.html; } # API 代理 location /api { proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ``` ## 开发指南 ### 项目启动顺序 1. 启动 MySQL 数据库 2. 启动后端服务(backend-nest) 3. 启动前端(frontend 或 frontend-uniapp) ### 切换后端版本 前端默认连接 backend-nest。如需切换到 Express 后端: 1. 关闭 backend-nest 2. 启动 backend 3. 确保 API 路由格式一致 ### 小程序开发 1. 运行 `npm run dev:mp-weixin` 2. 打开微信开发者工具 3. 导入 `frontend-uniapp/dist/dev/mp-weixin` 目录 ## License MIT