7.9 KiB
7.9 KiB
订单系统实现完成
✅ 已完成的工作
前端实现
- ✅ 订单 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'
})
⚠️ 注意事项
- 表前缀: 使用
la_前缀,与项目其他表保持一致 - 订单号: 自动生成,格式为
ORD + 时间戳 + 随机数 - 软删除: 订单支持软删除,不会真正删除数据
- 事务处理: 创建订单时使用事务确保数据一致性
- 权限验证: 所有操作都需要相应的权限节点
🐛 故障排除
表不存在错误
错误信息: Table 'zyt.order' doesn't exist
解决方案:
- 确保已执行 SQL 脚本创建表
- 检查表前缀是否正确(应该是
la_order而不是zyt_order) - 检查数据库连接配置
控制器找不到
错误信息: 控制器不存在:\\app\\adminapi\\controller\\order\\OrderController
解决方案:
- 确保文件在正确的目录:
server/app/adminapi/controller/order/ - 检查命名空间是否正确
- 清除应用缓存
权限不足
错误信息: 权限不足,无法访问或操作
解决方案:
- 在权限管理系统中添加相应的权限节点
- 确保用户被分配了正确的权限
- 检查权限缓存
📞 支持
如需帮助,请参考:
ORDER_SYSTEM_GUIDE.md- 完整的系统文档INSTALL_ORDER_TABLES.md- 表安装指南- 项目的其他模块实现作为参考
✨ 下一步建议
- 支付集成: 集成第三方支付接口(支付宝、微信等)
- 订单统计: 添加订单统计和报表功能
- 自动对账: 定期与支付平台对账
- 订单提醒: 支付超时提醒、订单状态变更通知
- 发票管理: 支持订单发票申请和管理
- 退款流程: 完善退款审核和处理流程
实现日期: 2024-03-10 版本: 1.0.0 状态: ✅ 完成