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

308 lines
7.9 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.
# 订单系统实现完成
## ✅ 已完成的工作
### 前端实现
- ✅ 订单 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 语句。
**方式二:使用命令行**
```bash
mysql -u root -p your_database < admin/order.sql
```
**方式三:使用 ThinkPHP 迁移**
```bash
cd server
php think migrate:run
```
### 第二步:验证表创建
```sql
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(订单表)
```sql
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(订单详情表)
```sql
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` - 本文件
## 🔧 使用示例
### 创建订单
```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'
const result = await orderPay({
id: 1,
payment_method: 'alipay'
})
```
### 获取订单列表
```typescript
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
**状态**: ✅ 完成