Files
order/readme.md
2026-01-09 18:17:27 +08:00

309 lines
9.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 <repository-url>
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 相关配置和脚本。