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

249 lines
6.4 KiB
Markdown
Raw Permalink 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.
# 订单系统 - 快速开始
## 🎯 概述
完整的订单管理系统,包括:
- 订单创建、编辑、删除
- 支付、取消、退款操作
- 订单列表、搜索、筛选
- 订单详情查看
- 订单导出
## ⚡ 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