-- cytx_api 初始化脚本 -- 数据库:pap_cytx -- 需要的表:admin_user, admin_role, operation_log CREATE DATABASE IF NOT EXISTS `pap_cytx` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; USE `pap_cytx`; SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ======================================== -- 管理员用户表 -- ======================================== CREATE TABLE IF NOT EXISTS `admin_user` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL COMMENT '用户名', `password` varchar(64) NOT NULL COMMENT '密码(MD5)', `nickname` varchar(50) DEFAULT '' COMMENT '昵称', `avatar` varchar(255) DEFAULT '' COMMENT '头像', `email` varchar(100) DEFAULT '' COMMENT '邮箱', `phone` varchar(20) DEFAULT '' COMMENT '手机号', `role_id` int unsigned DEFAULT 0 COMMENT '角色ID', `last_login_time` datetime DEFAULT NULL COMMENT '最后登录时间', `last_login_ip` varchar(50) DEFAULT '' COMMENT '最后登录IP', `login_fail_count` int DEFAULT 0 COMMENT '当日登录失败次数', `login_fail_date` date DEFAULT NULL COMMENT '最后登录失败日期', `status` tinyint(1) DEFAULT 1 COMMENT '状态: 1启用 0停用', `is_deleted` tinyint(1) DEFAULT 0 COMMENT '软删除: 0正常 1已删除', `create_by` int unsigned DEFAULT 0 COMMENT '创建人ID', `update_by` int unsigned DEFAULT 0 COMMENT '修改人ID', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_username` (`username`), KEY `idx_role_id` (`role_id`), KEY `idx_status` (`status`), KEY `idx_is_deleted` (`is_deleted`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管理员用户表'; -- ======================================== -- 角色表 -- ======================================== CREATE TABLE IF NOT EXISTS `admin_role` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL COMMENT '角色名称', `code` varchar(50) DEFAULT '' COMMENT '角色编码', `description` varchar(200) DEFAULT '' COMMENT '角色描述', `permissions` json DEFAULT NULL COMMENT '权限列表(JSON)', `is_default` tinyint(1) DEFAULT 0 COMMENT '是否默认角色: 0否 1是', `sort` int DEFAULT 0 COMMENT '排序', `status` tinyint(1) DEFAULT 1 COMMENT '状态: 1启用 0停用', `is_deleted` tinyint(1) DEFAULT 0 COMMENT '软删除: 0正常 1已删除', `create_by` int unsigned DEFAULT 0 COMMENT '创建人ID', `update_by` int unsigned DEFAULT 0 COMMENT '修改人ID', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_status` (`status`), KEY `idx_is_deleted` (`is_deleted`), KEY `idx_sort` (`sort`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表'; -- ======================================== -- 操作日志表 -- ======================================== CREATE TABLE IF NOT EXISTS `operation_log` ( `id` int NOT NULL AUTO_INCREMENT, `user_id` int DEFAULT 0 COMMENT '操作人ID', `username` varchar(50) DEFAULT '' COMMENT '操作人用户名', `action` varchar(20) DEFAULT '' COMMENT '操作类型: login/logout/add/edit/delete/export', `module` varchar(50) DEFAULT '' COMMENT '操作模块', `description` varchar(500) DEFAULT '' COMMENT '操作描述', `ip` varchar(50) DEFAULT '' COMMENT 'IP地址', `user_agent` varchar(500) DEFAULT '' COMMENT '浏览器UA', `create_time` datetime DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `idx_user` (`user_id`), KEY `idx_action` (`action`), KEY `idx_time` (`create_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='操作日志'; -- ======================================== -- 患者表 -- ======================================== CREATE TABLE IF NOT EXISTS `patient` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `patient_no` varchar(30) NOT NULL COMMENT '患者编号(YYYYMM+雪花ID)', `name` varchar(50) NOT NULL COMMENT '姓名', `phone` varchar(20) NOT NULL COMMENT '手机号', `id_card` varchar(18) NOT NULL COMMENT '身份证号', `gender` varchar(4) DEFAULT '' COMMENT '性别', `birth_date` date DEFAULT NULL COMMENT '出生日期', `province_code` varchar(6) DEFAULT '' COMMENT '省编码', `city_code` varchar(6) DEFAULT '' COMMENT '市编码', `district_code` varchar(6) DEFAULT '' COMMENT '区编码', `address` varchar(255) DEFAULT '' COMMENT '详细地址', `tag` varchar(50) DEFAULT '' COMMENT '标识(如直肠癌)', `documents` json DEFAULT NULL COMMENT '上传资料(检查报告等)JSON数组', `sign_income` varchar(255) DEFAULT '' COMMENT '个人可支配收入声明文件URL', `sign_privacy` varchar(255) DEFAULT '' COMMENT '个人信息处理同意书文件URL', `sign_promise` varchar(255) DEFAULT '' COMMENT '声明与承诺文件URL', `status` tinyint(1) DEFAULT 0 COMMENT '状态: 0待审核 1审核通过 2已驳回', `is_deleted` tinyint(1) DEFAULT 0 COMMENT '软删除: 0正常 1已删除', `create_by` int unsigned DEFAULT 0 COMMENT '创建人ID', `update_by` int unsigned DEFAULT 0 COMMENT '修改人ID', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_patient_no` (`patient_no`), KEY `idx_status` (`status`), KEY `idx_is_deleted` (`is_deleted`), KEY `idx_phone` (`phone`), KEY `idx_id_card` (`id_card`), KEY `idx_tag` (`tag`), KEY `idx_create_time` (`create_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='患者表'; -- ======================================== -- 患者审核记录表 -- ======================================== CREATE TABLE IF NOT EXISTS `patient_audit` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `patient_id` int unsigned NOT NULL COMMENT '患者ID', `action` varchar(20) NOT NULL COMMENT '操作: submit/approve/reject', `reason` varchar(500) DEFAULT '' COMMENT '驳回原因', `operator_id` int unsigned DEFAULT 0 COMMENT '操作人ID', `operator_name` varchar(50) DEFAULT '' COMMENT '操作人姓名', `is_deleted` tinyint(1) DEFAULT 0 COMMENT '软删除: 0正常 1已删除', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间', PRIMARY KEY (`id`), KEY `idx_patient_id` (`patient_id`), KEY `idx_action` (`action`), KEY `idx_is_deleted` (`is_deleted`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='患者审核记录表'; -- ======================================== -- 初始化数据 -- ======================================== -- 默认角色 INSERT INTO `admin_role` (`id`, `name`, `code`, `description`, `permissions`, `is_default`, `sort`) VALUES (1, '超级管理员', 'ADMIN', '拥有所有权限', '["*"]', 1, 1); -- 默认管理员 (密码: Admin123) INSERT INTO `admin_user` (`username`, `password`, `nickname`, `role_id`) VALUES ('admin', '0192023a7bbd73250516f069df18b500', '超级管理员', 1); SET FOREIGN_KEY_CHECKS = 1;