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

9.0 KiB
Raw Permalink Blame History

Python Flask 订餐系统

一个基于 Flask 框架开发的在线订餐管理系统,包含完整的后台管理平台和小程序端 API 接口。系统采用 MVC 架构设计,支持食品管理、订单处理、会员管理、财务管理等核心业务功能。

📋 项目概述

本项目是一个功能完善的在线订餐系统,主要面向餐饮行业,提供从商品管理、订单处理到数据统计的完整解决方案。系统分为后台管理端和小程序端两部分,后台管理端用于商家管理商品、订单和会员信息,小程序端为用户提供在线订餐服务。

功能特性

后台管理功能

  • 账号管理:管理员账号的创建、编辑和权限管理
  • 食品管理:食品分类、商品信息、库存管理、价格设置
  • 会员管理:会员信息查看、编辑、状态管理、评论管理
  • 订单管理:订单查询、状态跟踪、订单详情查看
  • 财务管理:订单统计、收入分析、财务报表
  • 数据统计:每日数据统计、食品销售统计、会员统计、站点统计
  • 文件上传:支持图片上传和管理

小程序端 API

  • 食品展示:食品列表、分类查询、搜索功能
  • 购物车:商品加入购物车、数量修改、结算
  • 订单管理:订单创建、支付、订单列表、订单详情
  • 会员功能:会员注册、登录、个人信息管理、地址管理
  • 评论系统:商品评论、评分功能

系统功能

  • 权限控制:基于 Cookie 的认证机制,支持登录拦截
  • 日志记录:访问日志、错误日志记录
  • 定时任务:支持定时统计任务、队列处理任务
  • 图片管理:图片上传、存储和管理

🛠 技术栈

后端技术

  • 框架Flask 2.3.3
  • ORMFlask-SQLAlchemy 3.1.1 + SQLAlchemy 2.0.45
  • 数据库MySQL 5.7+ (使用 PyMySQL 连接)
  • 任务调度Flask CLI 命令系统
  • 服务器uWSGI (生产环境)

前端技术

  • 模板引擎Jinja2
  • UI框架Bootstrap
  • JavaScriptjQuery
  • 富文本编辑器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. 克隆项目
git clone <repository-url>
cd order
  1. 创建虚拟环境
python3 -m venv venv_linux
source venv_linux/bin/activate
  1. 安装依赖
pip install -r requirements.txt
  1. 配置数据库 编辑 config/base_setting.pyconfig/production_setting.py,配置数据库连接信息:
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://user:password@host:port/food_db?charset=utf8mb4'
  1. 初始化数据库
# 创建数据库
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
  1. 创建管理员账户
# 使用Python脚本创建参考项目中的创建脚本
# 默认账户admin / 123456

启动服务

开发环境

export ops_config=local
python manager.py runserver

访问地址:http://127.0.0.1:8032

生产环境

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

📖 使用说明

后台管理

  1. 登录系统

  2. 主要功能模块

    • 仪表盘:查看系统概览和统计数据
    • 账号管理:管理后台管理员账号
    • 美餐管理:管理食品分类和商品信息
    • 会员列表:查看和管理会员信息
    • 财务管理:查看订单和财务数据
    • 统计管理:查看各类统计数据

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 相关配置和脚本。