This commit is contained in:
Your Name
2026-03-11 09:49:47 +08:00
parent 02ae537b4c
commit 38ad60f4bb
290 changed files with 36917 additions and 123 deletions
+307
View File
@@ -0,0 +1,307 @@
# 订单系统实现完成
## ✅ 已完成的工作
### 前端实现
- ✅ 订单 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
**状态**: ✅ 完成