308 lines
7.9 KiB
Markdown
308 lines
7.9 KiB
Markdown
# 订单系统实现完成
|
||
|
||
## ✅ 已完成的工作
|
||
|
||
### 前端实现
|
||
- ✅ 订单 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
|
||
**状态**: ✅ 完成
|