Python Flask 订餐系统
一个基于 Flask 框架开发的在线订餐管理系统,包含完整的后台管理平台和小程序端 API 接口。系统采用 MVC 架构设计,支持食品管理、订单处理、会员管理、财务管理等核心业务功能。
📋 项目概述
本项目是一个功能完善的在线订餐系统,主要面向餐饮行业,提供从商品管理、订单处理到数据统计的完整解决方案。系统分为后台管理端和小程序端两部分,后台管理端用于商家管理商品、订单和会员信息,小程序端为用户提供在线订餐服务。
✨ 功能特性
后台管理功能
- 账号管理:管理员账号的创建、编辑和权限管理
- 食品管理:食品分类、商品信息、库存管理、价格设置
- 会员管理:会员信息查看、编辑、状态管理、评论管理
- 订单管理:订单查询、状态跟踪、订单详情查看
- 财务管理:订单统计、收入分析、财务报表
- 数据统计:每日数据统计、食品销售统计、会员统计、站点统计
- 文件上传:支持图片上传和管理
小程序端 API
- 食品展示:食品列表、分类查询、搜索功能
- 购物车:商品加入购物车、数量修改、结算
- 订单管理:订单创建、支付、订单列表、订单详情
- 会员功能:会员注册、登录、个人信息管理、地址管理
- 评论系统:商品评论、评分功能
系统功能
- 权限控制:基于 Cookie 的认证机制,支持登录拦截
- 日志记录:访问日志、错误日志记录
- 定时任务:支持定时统计任务、队列处理任务
- 图片管理:图片上传、存储和管理
🛠 技术栈
后端技术
- 框架:Flask 2.3.3
- ORM:Flask-SQLAlchemy 3.1.1 + SQLAlchemy 2.0.45
- 数据库:MySQL 5.7+ (使用 PyMySQL 连接)
- 任务调度:Flask CLI 命令系统
- 服务器:uWSGI (生产环境)
前端技术
- 模板引擎:Jinja2
- UI框架:Bootstrap
- JavaScript:jQuery
- 富文本编辑器:UEditor
部署环境
- 操作系统:Linux
- Web服务器:Nginx
- Python版本:Python 3.9+
🏗 系统架构
┌─────────────┐
│ 小程序端 │
└──────┬──────┘
│
│ HTTP API
▼
┌─────────────────┐
│ Nginx 反向代理 │
└──────┬──────────┘
│
├──────────┐
│ │
▼ ▼
┌──────────┐ ┌──────────┐
│ Flask应用 │ │ 静态资源 │
└────┬─────┘ └──────────┘
│
▼
┌──────────┐
│ MySQL │
└──────────┘
📁 项目结构
order/
├── application.py # Flask应用主入口
├── manager.py # 管理脚本(启动服务器、定时任务)
├── www.py # 路由注册和拦截器配置
├── requirements.txt # Python依赖清单
├── uwsgi.ini # uWSGI配置文件
├── nginx_order.conf # Nginx配置文件
│
├── config/ # 配置文件目录
│ ├── base_setting.py # 基础配置
│ ├── local_setting.py # 本地开发配置
│ └── production_setting.py # 生产环境配置
│
├── common/ # 公共模块
│ ├── libs/ # 工具类库
│ │ ├── Helper.py # 通用工具函数
│ │ ├── LogService.py # 日志服务
│ │ ├── UploadService.py # 文件上传服务
│ │ └── UrlManager.py # URL管理
│ └── models/ # 数据模型
│ ├── User.py # 用户模型
│ ├── member/ # 会员相关模型
│ ├── food/ # 食品相关模型
│ └── pay/ # 支付相关模型
│
├── web/ # Web应用模块
│ ├── controllers/ # 控制器
│ │ ├── user/ # 用户管理
│ │ ├── food/ # 食品管理
│ │ ├── member/ # 会员管理
│ │ ├── finance/ # 财务管理
│ │ ├── stat/ # 数据统计
│ │ └── api/ # API接口
│ ├── templates/ # 模板文件
│ ├── static/ # 静态资源
│ └── interceptors/ # 拦截器
│
├── jobs/ # 定时任务
│ ├── tasks/ # 任务脚本
│ └── launcher.py # 任务启动器
│
└── 数据库文件/ # 数据库初始化脚本
├── food.sql # 数据库表结构
└── 后台初始账户.sql # 初始管理员账户
🚀 快速开始
环境要求
- Linux 系统
- Python 3.9+
- MySQL 5.7+
- Nginx (生产环境)
安装步骤
- 克隆项目
git clone <repository-url>
cd order
- 创建虚拟环境
python3 -m venv venv_linux
source venv_linux/bin/activate
- 安装依赖
pip install -r requirements.txt
- 配置数据库
编辑
config/base_setting.py或config/production_setting.py,配置数据库连接信息:
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://user:password@host:port/food_db?charset=utf8mb4'
- 初始化数据库
# 创建数据库
mysql -u root -p
CREATE DATABASE food_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# 导入表结构
mysql -u root -p food_db < 数据库文件/food.sql
# 或导入完整数据
mysql -u root -p food_db < food1.sql
- 创建管理员账户
# 使用Python脚本创建(参考项目中的创建脚本)
# 默认账户:admin / 123456
启动服务
开发环境
export ops_config=local
python manager.py runserver
生产环境
export ops_config=production
python manager.py runserver
或使用 uWSGI:
uwsgi --ini uwsgi.ini
配置 Nginx
# 复制nginx配置文件
sudo cp nginx_order.conf /etc/nginx/conf.d/order.conf
# 测试配置
sudo nginx -t
# 重新加载
sudo nginx -s reload
📖 使用说明
后台管理
-
登录系统
- 访问:http://your-domain/user/login
- 默认账号:admin
- 默认密码:123456
-
主要功能模块
- 仪表盘:查看系统概览和统计数据
- 账号管理:管理后台管理员账号
- 美餐管理:管理食品分类和商品信息
- 会员列表:查看和管理会员信息
- 财务管理:查看订单和财务数据
- 统计管理:查看各类统计数据
API 接口
小程序端通过以下 API 接口访问:
/api/food/index- 食品列表/api/food/search- 食品搜索/api/cart/index- 购物车/api/order/create- 创建订单/api/member/login- 会员登录/api/my/order- 我的订单
定时任务
系统支持定时任务,使用 Flask CLI 命令执行:
# 执行统计任务
python manager.py runjob -m stat/daily -a member
python manager.py runjob -m stat/daily -a food
python manager.py runjob -m stat/daily -a site
🔧 配置说明
环境变量
ops_config=local- 使用本地开发配置ops_config=production- 使用生产环境配置
主要配置项
- 数据库连接:在配置文件中设置
SQLALCHEMY_DATABASE_URI - 应用域名:在
APP['domain']中配置 - 上传路径:在
UPLOAD配置中设置 - 服务器端口:在
SERVER_PORT中配置(默认:8032)
📝 生成 ORM 模型
使用 flask-sqlacodegen 自动生成模型:
flask-sqlacodegen 'mysql://root:password@host:port/food_db' \
--tables table_name \
--outfile "common/models/path/ModelName.py" \
--flask
注意:生成后需要修改模型文件,将 from flask_sqlalchemy import SQLAlchemy 改为 from application import db
🗄 数据库设计
主要数据表
- user - 管理员用户表
- member - 会员表
- food - 食品表
- food_cat - 食品分类表
- pay_order - 订单表
- pay_order_item - 订单明细表
- member_cart - 购物车表
- member_comments - 评论表
- app_access_log - 访问日志表
- app_error_log - 错误日志表
- stat_daily_* - 统计数据表
🔒 安全说明
- 密码使用 MD5 + Salt 加密存储
- 支持 Cookie 认证机制
- 访问日志和错误日志记录
- 支持权限拦截和验证
📄 许可证
本项目仅供学习和参考使用。
👥 贡献
欢迎提交 Issue 和 Pull Request。
📞 联系方式
如有问题,请通过 Issue 反馈。
注意:本项目仅支持 Linux 环境运行,已移除所有 Windows 相关配置和脚本。
Description
Languages
Python
89.6%
JavaScript
8.3%
CSS
1.1%
HTML
0.8%