# 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 (生产环境) ### 安装步骤 1. **克隆项目** ```bash git clone cd order ``` 2. **创建虚拟环境** ```bash python3 -m venv venv_linux source venv_linux/bin/activate ``` 3. **安装依赖** ```bash pip install -r requirements.txt ``` 4. **配置数据库** 编辑 `config/base_setting.py` 或 `config/production_setting.py`,配置数据库连接信息: ```python SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://user:password@host:port/food_db?charset=utf8mb4' ``` 5. **初始化数据库** ```bash # 创建数据库 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 ``` 6. **创建管理员账户** ```bash # 使用Python脚本创建(参考项目中的创建脚本) # 默认账户:admin / 123456 ``` ### 启动服务 #### 开发环境 ```bash export ops_config=local python manager.py runserver ``` 访问地址:http://127.0.0.1:8032 #### 生产环境 ```bash export ops_config=production python manager.py runserver ``` 或使用 uWSGI: ```bash uwsgi --ini uwsgi.ini ``` #### 配置 Nginx ```bash # 复制nginx配置文件 sudo cp nginx_order.conf /etc/nginx/conf.d/order.conf # 测试配置 sudo nginx -t # 重新加载 sudo nginx -s reload ``` ## 📖 使用说明 ### 后台管理 1. **登录系统** - 访问:http://your-domain/user/login - 默认账号:admin - 默认密码:123456 2. **主要功能模块** - **仪表盘**:查看系统概览和统计数据 - **账号管理**:管理后台管理员账号 - **美餐管理**:管理食品分类和商品信息 - **会员列表**:查看和管理会员信息 - **财务管理**:查看订单和财务数据 - **统计管理**:查看各类统计数据 ### API 接口 小程序端通过以下 API 接口访问: - `/api/food/index` - 食品列表 - `/api/food/search` - 食品搜索 - `/api/cart/index` - 购物车 - `/api/order/create` - 创建订单 - `/api/member/login` - 会员登录 - `/api/my/order` - 我的订单 ### 定时任务 系统支持定时任务,使用 Flask CLI 命令执行: ```bash # 执行统计任务 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 自动生成模型: ```bash 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 相关配置和脚本。