Files
zyt/admin/ORDER_IMPLEMENTATION_COMPLETE.md
T
2026-03-11 09:49:47 +08:00

7.9 KiB
Raw Blame History

订单系统实现完成

已完成的工作

前端实现

  • 订单 API 接口 (src/api/order.ts)
  • 订单列表页面 (src/views/order/index.vue)
  • 搜索、筛选、分页功能
  • 订单详情、支付、取消、退款、删除操作

后端实现

  • 订单模型 (app/common/model/Order.php)
  • 订单详情模型 (app/common/model/OrderDetail.php)
  • 订单控制器 (app/adminapi/controller/order/OrderController.php)
  • 订单业务逻辑 (app/adminapi/logic/order/OrderLogic.php)
  • 订单验证规则 (app/adminapi/validate/order/OrderValidate.php)
  • 订单列表类 (app/adminapi/lists/order/OrderLists.php)
  • 数据库迁移文件 (database/migrations/2024_03_10_create_order_tables.php)

数据库

  • 订单表 (la_order)
  • 订单详情表 (la_order_detail)
  • 所有必要的索引和约束

文档

  • 完整的系统指南 (ORDER_SYSTEM_GUIDE.md)
  • 快速安装指南 (ORDER_SETUP.md)
  • 表安装指南 (INSTALL_ORDER_TABLES.md)

🚀 快速开始

第一步:创建数据库表

方式一:直接执行 SQL(推荐)

在数据库管理工具中执行 admin/order.sql 文件中的 SQL 语句。

方式二:使用命令行

mysql -u root -p your_database < admin/order.sql

方式三:使用 ThinkPHP 迁移

cd server
php think migrate:run

第二步:验证表创建

SHOW TABLES LIKE 'la_order%';
DESC la_order;
DESC la_order_detail;

第三步:添加权限节点

在后端权限管理系统中添加以下权限:

order.order/lists      - 订单列表
order.order/detail     - 订单详情
order.order/create     - 创建订单
order.order/edit       - 编辑订单
order.order/pay        - 支付订单
order.order/cancel     - 取消订单
order.order/refund     - 退款订单
order.order/delete     - 删除订单
order.order/export     - 导出订单

第四步:访问订单页面

在前端路由中添加订单页面,然后访问 /order 即可使用订单功能。

📋 API 端点

所有 API 端点都遵循 RESTful 规范,使用 /order.order/ 前缀:

GET    /order.order/lists       - 获取订单列表
GET    /order.order/detail      - 获取订单详情
POST   /order.order/create      - 创建订单
POST   /order.order/edit        - 编辑订单
POST   /order.order/pay         - 支付订单
POST   /order.order/cancel      - 取消订单
POST   /order.order/refund      - 退款订单
POST   /order.order/delete      - 删除订单
GET    /order.order/export      - 导出订单

🔑 关键特性

1. 创建人追踪

  • 自动记录创建订单的管理员 ID(推广 ID)
  • 支持查询特定创建人的订单

2. 多种订单类型

  • 挂号费 (type=1)
  • 问诊费 (type=2)
  • 药品费用 (type=3)

3. 订单状态管理

  • 待支付 (status=1)
  • 已支付 (status=2)
  • 已取消 (status=3)
  • 已退款 (status=4)

4. 支付方式

  • 支付宝 (alipay)
  • 微信 (wechat)
  • 银行卡 (bank)

5. 订单详情

  • 支持多个订单项
  • 关联挂号、问诊、药品等
  • 记录单价和总价

6. 数据安全

  • 软删除支持
  • 事务处理
  • 唯一订单号
  • 完整的验证规则

📊 数据库表结构

la_order(订单表)

CREATE TABLE `la_order` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `order_no` varchar(50) NOT NULL UNIQUE,
  `patient_id` int(11) NOT NULL,
  `creator_id` int(11) NOT NULL,
  `order_type` tinyint(1) NOT NULL,
  `amount` decimal(10, 2) NOT NULL,
  `status` tinyint(1) DEFAULT 1,
  `payment_method` varchar(20),
  `payment_time` datetime,
  `remark` varchar(500),
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP,
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `delete_time` datetime,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_order_no` (`order_no`),
  KEY `idx_patient` (`patient_id`),
  KEY `idx_creator` (`creator_id`),
  KEY `idx_status` (`status`),
  KEY `idx_create_time` (`create_time`)
);

la_order_detail(订单详情表)

CREATE TABLE `la_order_detail` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `order_id` int(11) NOT NULL,
  `related_type` varchar(20) NOT NULL,
  `related_id` int(11) NOT NULL,
  `quantity` int(11) DEFAULT 1,
  `unit_price` decimal(10, 2) NOT NULL,
  `total_price` decimal(10, 2) NOT NULL,
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_order` (`order_id`),
  KEY `idx_related` (`related_type`, `related_id`)
);

📁 文件清单

前端文件

  • admin/src/api/order.ts - API 接口
  • admin/src/views/order/index.vue - 列表页面

后端文件

  • server/app/common/model/Order.php - 订单模型
  • server/app/common/model/OrderDetail.php - 订单详情模型
  • server/app/adminapi/controller/order/OrderController.php - 控制器
  • server/app/adminapi/logic/order/OrderLogic.php - 业务逻辑
  • server/app/adminapi/validate/order/OrderValidate.php - 验证规则
  • server/app/adminapi/lists/order/OrderLists.php - 列表类

数据库文件

  • server/database/migrations/2024_03_10_create_order_tables.php - 迁移文件
  • admin/order.sql - SQL 脚本

文档文件

  • admin/ORDER_SYSTEM_GUIDE.md - 完整系统指南
  • admin/ORDER_SETUP.md - 快速安装指南
  • admin/INSTALL_ORDER_TABLES.md - 表安装指南
  • admin/ORDER_IMPLEMENTATION_COMPLETE.md - 本文件

🔧 使用示例

创建订单

import { orderCreate } from '@/api/order'

const result = await orderCreate({
  patient_id: 1,
  order_type: 1,
  amount: 100.00,
  remark: '挂号费',
  details: [
    {
      related_type: 'appointment',
      related_id: 1,
      quantity: 1,
      unit_price: 100.00,
      total_price: 100.00
    }
  ]
})

支付订单

import { orderPay } from '@/api/order'

const result = await orderPay({
  id: 1,
  payment_method: 'alipay'
})

获取订单列表

import { orderLists } from '@/api/order'

const result = await orderLists({
  page_no: 1,
  page_size: 15,
  order_no: '',
  patient_keyword: '',
  order_type: 1,
  status: 1,
  create_time_start: '2024-03-01',
  create_time_end: '2024-03-31'
})

⚠️ 注意事项

  1. 表前缀: 使用 la_ 前缀,与项目其他表保持一致
  2. 订单号: 自动生成,格式为 ORD + 时间戳 + 随机数
  3. 软删除: 订单支持软删除,不会真正删除数据
  4. 事务处理: 创建订单时使用事务确保数据一致性
  5. 权限验证: 所有操作都需要相应的权限节点

🐛 故障排除

表不存在错误

错误信息: Table 'zyt.order' doesn't exist

解决方案:

  1. 确保已执行 SQL 脚本创建表
  2. 检查表前缀是否正确(应该是 la_order 而不是 zyt_order
  3. 检查数据库连接配置

控制器找不到

错误信息: 控制器不存在:\\app\\adminapi\\controller\\order\\OrderController

解决方案:

  1. 确保文件在正确的目录:server/app/adminapi/controller/order/
  2. 检查命名空间是否正确
  3. 清除应用缓存

权限不足

错误信息: 权限不足,无法访问或操作

解决方案:

  1. 在权限管理系统中添加相应的权限节点
  2. 确保用户被分配了正确的权限
  3. 检查权限缓存

📞 支持

如需帮助,请参考:

  • ORDER_SYSTEM_GUIDE.md - 完整的系统文档
  • INSTALL_ORDER_TABLES.md - 表安装指南
  • 项目的其他模块实现作为参考

下一步建议

  1. 支付集成: 集成第三方支付接口(支付宝、微信等)
  2. 订单统计: 添加订单统计和报表功能
  3. 自动对账: 定期与支付平台对账
  4. 订单提醒: 支付超时提醒、订单状态变更通知
  5. 发票管理: 支持订单发票申请和管理
  6. 退款流程: 完善退款审核和处理流程

实现日期: 2024-03-10 版本: 1.0.0 状态: 完成