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

5.0 KiB
Raw Permalink Blame History

订单表安装指南

快速安装

方式一:直接执行 SQL 脚本(推荐)

在你的数据库管理工具(如 phpMyAdmin、Navicat 等)中执行以下 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='订单详情表';

方式二:使用命令行

# 进入项目根目录
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 检查表是否创建成功:

-- 检查表是否存在
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。如果要重新创建表,先删除旧表:

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

DROP TABLE IF EXISTS la_order_detail;
DROP TABLE IF EXISTS la_order;

下一步

表创建成功后,你可以:

  1. 在后端权限系统中添加订单相关权限
  2. 访问订单列表页面测试功能
  3. 创建测试订单验证系统

需要帮助?

如果遇到问题,请检查:

  1. 数据库连接是否正常
  2. 表前缀是否正确(应该是 la_
  3. 用户权限是否足够(需要 CREATE TABLE 权限)
  4. 字符集是否为 utf8mb4