# 订单系统 - 快速开始 ## 🎯 概述 完整的订单管理系统,包括: - 订单创建、编辑、删除 - 支付、取消、退款操作 - 订单列表、搜索、筛选 - 订单详情查看 - 订单导出 ## ⚡ 5分钟快速安装 ### 1️⃣ 创建数据库表(必须) **复制以下 SQL 到你的数据库管理工具执行:** ```sql -- 订单表 CREATE TABLE IF NOT EXISTS `la_order` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', `order_no` varchar(50) NOT NULL COMMENT '订单号', `patient_id` int(11) NOT NULL COMMENT '患者ID', `creator_id` int(11) NOT NULL COMMENT '创建人ID(推广ID)', `order_type` tinyint(1) NOT NULL COMMENT '订单类型 1-挂号费 2-问诊费 3-药品费用', `amount` decimal(10, 2) NOT NULL COMMENT '订单金额', `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '订单状态 1-待支付 2-已支付 3-已取消 4-已退款', `payment_method` varchar(20) DEFAULT NULL COMMENT '支付方式 alipay-支付宝 wechat-微信 bank-银行卡', `payment_time` datetime DEFAULT NULL COMMENT '支付时间', `remark` varchar(500) DEFAULT '' COMMENT '备注', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_time` datetime DEFAULT NULL COMMENT '删除时间', 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`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单表'; -- 订单详情表 CREATE TABLE IF NOT EXISTS `la_order_detail` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', `order_id` int(11) NOT NULL COMMENT '订单ID', `related_type` varchar(20) NOT NULL COMMENT '关联类型 appointment-挂号 diagnosis-问诊 medicine-药品', `related_id` int(11) NOT NULL COMMENT '关联ID', `quantity` int(11) DEFAULT '1' COMMENT '数量', `unit_price` decimal(10, 2) NOT NULL COMMENT '单价', `total_price` decimal(10, 2) NOT NULL COMMENT '总价', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_order` (`order_id`), KEY `idx_related` (`related_type`, `related_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单详情表'; ``` ### 2️⃣ 验证表创建 执行以下 SQL 检查表是否创建成功: ```sql SHOW TABLES LIKE 'la_order%'; DESC la_order; DESC la_order_detail; ``` ### 3️⃣ 添加权限节点 在后端权限管理系统中添加以下权限: ``` 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 - 导出订单 ``` ### 4️⃣ 完成! 现在你可以访问订单页面了。 ## 📂 文件位置 ### 前端 ``` 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 ``` ## 🔌 API 端点 ``` 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 | 医生挂号费用 | | 问诊费 | 2 | 医生问诊费用 | | 药品费用 | 3 | 药品购买费用 | ## 📊 订单状态 | 状态 | 值 | 说明 | |------|-----|------| | 待支付 | 1 | 订单已创建,等待支付 | | 已支付 | 2 | 订单已支付 | | 已取消 | 3 | 订单已取消 | | 已退款 | 4 | 订单已退款 | ## 💳 支付方式 | 方式 | 值 | 说明 | |------|-----|------| | 支付宝 | alipay | 支付宝支付 | | 微信 | wechat | 微信支付 | | 银行卡 | bank | 银行卡支付 | ## 🚀 使用示例 ### 创建订单 ```typescript 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 } ] }) ``` ### 支付订单 ```typescript import { orderPay } from '@/api/order' await orderPay({ id: 1, payment_method: 'alipay' }) ``` ### 获取订单列表 ```typescript import { orderLists } from '@/api/order' const result = await orderLists({ page_no: 1, page_size: 15, order_type: 1, status: 1 }) ``` ## ❓ 常见问题 ### Q: 表不存在错误? A: 执行上面的 SQL 脚本创建表。 ### Q: 控制器找不到? A: 确保文件在 `server/app/adminapi/controller/order/` 目录中。 ### Q: 权限不足? A: 在权限管理系统中添加相应的权限节点。 ### Q: 如何删除表? A: 执行以下 SQL: ```sql DROP TABLE IF EXISTS la_order_detail; DROP TABLE IF EXISTS la_order; ``` ## 📚 详细文档 - `ORDER_SYSTEM_GUIDE.md` - 完整系统指南 - `ORDER_SETUP.md` - 安装指南 - `INSTALL_ORDER_TABLES.md` - 表安装指南 - `ORDER_IMPLEMENTATION_COMPLETE.md` - 实现完成说明 ## ✨ 特性 ✅ 完整的 CRUD 操作 ✅ 支付状态管理 ✅ 订单详情关联 ✅ 创建人追踪(推广 ID) ✅ 软删除支持 ✅ 事务处理 ✅ 完整的验证规则 ✅ 搜索和筛选 ✅ 数据导出 ## 🔒 安全特性 - 权限验证 - 输入验证 - SQL 注入防护 - 事务处理 - 软删除 ## 📞 需要帮助? 1. 检查 `INSTALL_ORDER_TABLES.md` 了解表安装 2. 查看 `ORDER_SYSTEM_GUIDE.md` 了解完整功能 3. 参考其他模块的实现作为参考 --- **版本**: 1.0.0 **状态**: ✅ 完成 **最后更新**: 2024-03-10