156 lines
5.0 KiB
Markdown
156 lines
5.0 KiB
Markdown
# 订单表安装指南
|
||
|
||
## 快速安装
|
||
|
||
### 方式一:直接执行 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
|