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

156 lines
5.0 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.
# 订单表安装指南
## 快速安装
### 方式一:直接执行 SQL 脚本(推荐)
在你的数据库管理工具(如 phpMyAdmin、Navicat 等)中执行以下 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='订单详情表';
```
### 方式二:使用命令行
```bash
# 进入项目根目录
cd server
# 使用 MySQL 命令行
mysql -u root -p your_database < ../admin/order.sql
# 或使用 ThinkPHP 迁移
php think migrate:run
```
### 方式三:使用 phpMyAdmin
1. 打开 phpMyAdmin
2. 选择你的数据库
3. 点击 "SQL" 标签
4. 复制上面的 SQL 代码
5. 点击 "执行"
## 验证安装
执行以下 SQL 检查表是否创建成功:
```sql
-- 检查表是否存在
SHOW TABLES LIKE 'la_order%';
-- 查看订单表结构
DESC la_order;
-- 查看订单详情表结构
DESC la_order_detail;
```
## 表结构说明
### la_order 表(订单表)
| 字段 | 类型 | 说明 |
|------|------|------|
| id | int | 主键 |
| order_no | varchar(50) | 订单号(唯一) |
| patient_id | int | 患者ID |
| creator_id | int | 创建人ID(推广ID |
| order_type | tinyint | 订单类型:1=挂号费,2=问诊费,3=药品费用 |
| amount | decimal(10,2) | 订单金额 |
| status | tinyint | 订单状态:1=待支付,2=已支付,3=已取消,4=已退款 |
| payment_method | varchar(20) | 支付方式:alipay/wechat/bank |
| payment_time | datetime | 支付时间 |
| remark | varchar(500) | 备注 |
| create_time | datetime | 创建时间 |
| update_time | datetime | 更新时间 |
| delete_time | datetime | 删除时间(软删除) |
### la_order_detail 表(订单详情表)
| 字段 | 类型 | 说明 |
|------|------|------|
| id | int | 主键 |
| order_id | int | 订单ID |
| related_type | varchar(20) | 关联类型:appointment/diagnosis/medicine |
| related_id | int | 关联ID |
| quantity | int | 数量 |
| unit_price | decimal(10,2) | 单价 |
| total_price | decimal(10,2) | 总价 |
| create_time | datetime | 创建时间 |
## 常见问题
### Q: 执行 SQL 时出现 "Table already exists" 错误?
A: 这是正常的,因为 SQL 使用了 `IF NOT EXISTS`。如果要重新创建表,先删除旧表:
```sql
DROP TABLE IF EXISTS la_order_detail;
DROP TABLE IF EXISTS la_order;
```
### Q: 表创建成功但 API 仍然报错?
A: 确保:
1. 表名前缀正确(应该是 `la_order` 而不是 `zyt_order`
2. 数据库连接配置正确
3. 重启应用或清除缓存
### Q: 如何删除这些表?
A: 执行以下 SQL
```sql
DROP TABLE IF EXISTS la_order_detail;
DROP TABLE IF EXISTS la_order;
```
## 下一步
表创建成功后,你可以:
1. 在后端权限系统中添加订单相关权限
2. 访问订单列表页面测试功能
3. 创建测试订单验证系统
## 需要帮助?
如果遇到问题,请检查:
1. 数据库连接是否正常
2. 表前缀是否正确(应该是 `la_`
3. 用户权限是否足够(需要 CREATE TABLE 权限)
4. 字符集是否为 utf8mb4