Skip to content

halavah/kiro-basket

Repository files navigation

社区团购管理平台

基于 Vue 3 + Node.js + Express + MySQL + MongoDB 的全栈社区团购管理系统

📋 项目简介

这是一个完整的社区团购管理平台,包含团长端管理后台、居民端购物平台和后端 API 服务。系统采用前后端分离架构,支持商品管理、订单处理、佣金结算、数据统计等功能。

核心功能

  • 👨‍💼 团长端: 商品管理、订单处理、居民管理、佣金统计、数据看板
  • 👤 居民端: 商品浏览、购物车、订单管理、个人中心
  • 🔐 权限管理: JWT 身份认证、角色权限控制
  • 📊 数据统计: 销售趋势、订单统计、热销商品分析
  • 💰 佣金系统: 自动计算佣金、佣金明细查询
  • 📱 响应式设计: 支持多端访问

🛠️ 技术栈

前端技术

  • 框架: Vue 3 + Vite
  • UI 库: Element Plus
  • 状态管理: Pinia
  • 路由: Vue Router 4
  • HTTP 客户端: Axios
  • 样式: SCSS

后端技术

  • 运行环境: Node.js
  • Web 框架: Express
  • 数据库 ORM/ODM: Sequelize (MySQL) + Mongoose (MongoDB)
  • 身份认证: JWT + bcryptjs
  • 文件上传: Multer
  • 环境配置: dotenv

数据库

  • MySQL: 核心业务数据(用户、商品、订单、佣金)
  • MongoDB: 日志和统计数据(登录日志、操作日志、库存日志)

🗂️ 项目结构

node192/
├── bin/                        # 启动脚本目录
│   ├── start-captain.bat      # 启动团长端前端 (Windows)
│   ├── start-captain.sh       # 启动团长端前端 (Linux/Mac)
│   ├── start-resident.bat     # 启动居民端前端 (Windows)
│   ├── start-resident.sh      # 启动居民端前端 (Linux/Mac)
│   ├── start-server.bat       # 启动后端服务器 (Windows)
│   ├── start-server.sh        # 启动后端服务器 (Linux/Mac)
│   ├── init-db.bat            # 初始化数据库 (Windows)
│   ├── init-db.sh             # 初始化数据库 (Linux/Mac)
│   ├── deploy.bat             # Git 部署 (Windows)
│   ├── deploy.sh              # Git 部署 (Linux/Mac)
│   ├── ignore.bat             # Git 清理 (Windows)
│   ├── ignore.sh              # Git 清理 (Linux/Mac)
│   ├── test-api.bat           # API 测试 (Windows)
│   └── test-api.sh            # API 测试 (Linux/Mac)
│
├── client-captain/            # 团长端前端 (端口: 5173)
│   ├── src/
│   │   ├── views/            # 页面组件
│   │   ├── components/       # 公共组件
│   │   ├── stores/           # Pinia 状态管理
│   │   ├── router/           # 路由配置
│   │   ├── utils/            # 工具函数
│   │   └── api/              # API 接口
│   ├── package.json
│   ├── vite.config.js
│   └── README.md             # 团长端文档
│
├── client-resident/           # 居民端前端 (端口: 5174)
│   ├── src/
│   │   ├── views/            # 页面组件
│   │   ├── components/       # 公共组件
│   │   ├── stores/           # Pinia 状态管理
│   │   ├── router/           # 路由配置
│   │   ├── utils/            # 工具函数
│   │   └── api/              # API 接口
│   ├── package.json
│   ├── vite.config.js
│   └── README.md             # 居民端文档
│
├── server/                    # 后端服务 (端口: 3000)
│   ├── src/
│   │   ├── config/           # 数据库配置
│   │   ├── models/           # 数据模型
│   │   │   ├── mysql/       # MySQL 模型 (8个)
│   │   │   └── mongodb/     # MongoDB 模型 (6个)
│   │   ├── middleware/       # 中间件
│   │   ├── services/         # 业务逻辑层
│   │   ├── controllers/      # 控制器层
│   │   ├── routes/           # 路由层
│   │   └── utils/            # 工具函数
│   ├── uploads/              # 文件上传目录
│   ├── app.js                # 应用入口
│   ├── package.json
│   ├── .env                  # 环境变量配置
│   └── README.md             # 后端文档
│
├── server-test/               # 服务端 API 自动化测试
│   ├── 00-环境变量.http       # 测试环境配置
│   ├── 01-认证模块.http       # 认证接口测试
│   ├── 02-商品分类模块.http   # 分类接口测试
│   ├── 03-商品管理模块.http   # 商品接口测试
│   ├── 04-购物车模块.http     # 购物车接口测试
│   ├── 05-订单模块.http       # 订单接口测试
│   ├── 06-居民管理模块.http   # 居民管理接口测试
│   ├── 07-佣金统计模块.http   # 佣金统计接口测试
│   ├── 08-消息通知模块.http   # 消息通知接口测试
│   ├── 09-数据看板模块.http   # 数据看板接口测试
│   ├── 10-文件上传模块.http   # 文件上传接口测试
│   ├── test-runner.js         # 自动化测试运行器
│   ├── test-report.json       # JSON 格式测试报告
│   ├── test-report.html       # HTML 格式测试报告
│   ├── package.json
│   ├── README.md              # 测试使用文档
│   └── TEST-README.md         # 测试脚本文档
│
├── server-init/             # 数据库初始化工具
│   ├── init-dev.js          # 初始化脚本
│   ├── db.config.env         # 数据库配置
│   ├── package.json
│   └── README.md             # 数据库初始化文档
│
├── manage.bat                 # Windows 管理控制台
├── manage.sh                  # Linux/Mac 管理控制台
└── README.md                  # 本文档

🚀 快速开始

环境要求

  • Node.js: >= 16.0.0
  • MySQL: >= 5.7
  • MongoDB: >= 4.0
  • npmyarn

1. 克隆项目

git clone <repository-url>
cd node192

2. 配置数据库

编辑 server-init/db.config.env 文件,配置你的数据库连接信息:

# MySQL 配置
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=your_password

# MongoDB 配置
MONGO_HOST=localhost
MONGO_PORT=27017
MONGO_DB_NAME=kiro_basket_logs

3. 初始化数据库

使用管理脚本初始化数据库:

Windows:

manage.bat
# 选择选项 4:初始化数据库

Linux/Mac:

./manage.sh
# 选择选项 4:初始化数据库

或直接运行初始化脚本:

Windows:

bin\init-db.bat

Linux/Mac:

./bin/init-db.sh

4. 配置后端环境

编辑 server/.env 文件:

# MySQL 配置
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=your_password
MYSQL_DATABASE=kiro_basket

# MongoDB 配置
MONGO_URI=mongodb://localhost:27017/kiro_basket_logs

# JWT 配置
JWT_SECRET=your_jwt_secret_key
JWT_EXPIRES_IN=7d

# 服务器配置
PORT=3000
NODE_ENV=development

5. 启动项目

方法一:使用管理控制台(推荐)

Windows:

manage.bat

Linux/Mac:

./manage.sh

然后选择对应的选项:

  • 0: 🚢 部署到 Git(默认)
  • 1: 🚀 启动后端服务器
  • 2: 👨‍💼 启动团长端前端
  • 3: 👤 启动居民端前端
  • 4: 🗄️ 初始化数据库
  • 5: 🧹 清理 Git 跟踪
  • 6: 🚪 退出

方法二:使用独立脚本

启动后端服务器:

# Windows
bin\start-server.bat

# Linux/Mac
./bin/start-server.sh

启动团长端前端:

# Windows
bin\start-captain.bat

# Linux/Mac
./bin/start-captain.sh

启动居民端前端:

# Windows
bin\start-resident.bat

# Linux/Mac
./bin/start-resident.sh

方法三:手动启动

后端服务器:

cd server
npm install
npm run dev

团长端前端:

cd client-captain
npm install
npm run dev

居民端前端:

cd client-resident
npm install
npm run dev

6. 访问应用

启动成功后,访问以下地址:

服务 地址 说明
后端 API http://localhost:3000/api RESTful API 服务
团长端 http://localhost:5173 团长管理后台
居民端 http://localhost:5174 居民购物平台
健康检查 http://localhost:3000/health 服务状态检查

📡 API 接口说明

团长端接口 (/api/captain)

  • 认证: POST /captain/login - 团长登录
  • 分类管理: GET/POST/PUT/DELETE /captain/categories
  • 商品管理: GET/POST/PUT/DELETE/PATCH /captain/products
  • 订单管理: GET/PATCH /captain/orders
  • 居民管理: GET /captain/residents
  • 佣金统计: GET /captain/commission
  • 消息通知: GET/PATCH/DELETE /captain/notifications
  • 数据看板: GET /captain/dashboard

居民端接口 (/api/resident)

  • 认证: POST /resident/register, POST /resident/login
  • 商品浏览: GET /resident/products, GET /resident/categories
  • 购物车: GET/POST/PUT/DELETE /resident/cart
  • 订单管理: GET/POST/PATCH /resident/orders
  • 个人信息: GET/PUT /resident/profile

通用接口

  • 文件上传: POST /api/upload
  • 健康检查: GET /health

详细 API 文档请查看:

API 自动化测试

项目提供了完整的 API 自动化测试套件,位于 server-test/ 目录:

# 进入测试目录
cd server-test

# 安装测试依赖
npm install

# 运行自动化测试
npm test

# 生成 HTML 测试报告
npm run test:report

测试覆盖

  • ✅ 11 个测试模块(认证、商品、订单、购物车等)
  • ✅ 77 个测试用例
  • ✅ 自动化 Token 管理
  • ✅ JSON + HTML 双格式报告
  • ✅ 彩色控制台输出

详细测试文档请查看:API 测试文档

💾 数据库说明

MySQL 数据表(8个)

  1. captains - 团长信息表
  2. residents - 居民信息表
  3. categories - 商品分类表
  4. products - 商品信息表
  5. orders - 订单表
  6. order_items - 订单明细表
  7. commissions - 佣金记录表
  8. carts - 购物车表

MongoDB 集合(6个)

  1. login_logs - 登录日志
  2. stock_logs - 库存变动日志
  3. notifications - 系统通知
  4. order_status_logs - 订单状态变更日志
  5. dashboard_stats - 数据统计
  6. operation_logs - 操作日志

详细数据库文档请查看:数据库初始化文档

🔐 默认测试账号

初始化数据库后,可以使用以下测试账号登录系统。所有账号的默认密码均为:123456

团长端账号

访问团长端:http://localhost:5173

用户名 密码 手机号 说明
admin 123456 13800138000 管理员账号

居民端账号

访问居民端:http://localhost:5174

用户名 密码 手机号 姓名 地址
zhangsan 123456 13900139001 张三 1号楼101室
lisi 123456 13900139002 李四 1号楼102室
wangwu 123456 13900139003 王五 2号楼201室
zhaoliu 123456 13900139004 赵六 2号楼202室
sunqi 123456 13900139005 孙七 3号楼301室

注意

  • 这些是测试账号,仅供开发和演示使用
  • 生产环境部署前请务必修改或删除这些默认账号
  • 居民端也支持新用户注册功能

📝 开发说明

添加新功能

  1. 后端: 在 server/src/ 中添加模型、服务、控制器和路由
  2. 前端: 在对应的 client-*/src/ 中添加页面、组件和 API 调用
  3. 更新文档: 更新对应的 README.md 文件

代码规范

  • 使用 ESLint 进行代码检查
  • 遵循 Vue 3 Composition API 风格
  • 后端使用 RESTful API 规范
  • 统一的错误处理和响应格式

分支管理

  • master - 主分支,用于生产环境
  • develop - 开发分支
  • feature/* - 功能分支
  • bugfix/* - 修复分支

🔧 故障排除

常见问题

1. 无法连接数据库

  • 检查 MySQL 和 MongoDB 服务是否运行
  • 验证配置文件中的连接信息
  • 确认数据库用户权限

2. 端口被占用

  • 修改对应的配置文件更改端口
  • 或关闭占用端口的进程

3. 依赖安装失败

  • 尝试清除缓存:npm cache clean --force
  • 删除 node_modulespackage-lock.json 后重新安装
  • 使用国内镜像:npm config set registry https://registry.npmmirror.com

4. Token 验证失败

  • 检查 JWT_SECRET 配置
  • 确认请求头中携带正确的 Token
  • 检查 Token 是否过期

更多问题请查看各子项目的 README 文档。

📦 项目部署

前端部署

# 团长端
cd client-captain
npm run build
# 将 dist 目录部署到服务器

# 居民端
cd client-resident
npm run build
# 将 dist 目录部署到服务器

后端部署

cd server
npm install --production
NODE_ENV=production npm start

建议使用 PM2 进行进程管理:

npm install -g pm2
pm2 start app.js --name "community-server"

📄 许可证

本项目仅供学习和研究使用。

📞 技术支持


开发时间: 2024-12-18 技术栈: Vue 3 + Element Plus + Node.js + Express + MySQL + MongoDB

About

社区团购管理平台,基于 Vue 3 + Express 的全栈社区团购管理系统

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published