-- 用户表 CREATE TABLE IF NOT EXISTS `user` ( id BIGINT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, phone VARCHAR(20), email VARCHAR(100), password VARCHAR(255) NOT NULL, role VARCHAR(20) DEFAULT 'CUSTOMER', status INT DEFAULT 1, avatar VARCHAR(255), create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, deleted INT DEFAULT 0 ); -- 宠物表 CREATE TABLE IF NOT EXISTS pet ( id BIGINT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, species VARCHAR(50), breed VARCHAR(100), gender CHAR(1), age INT, owner_id BIGINT NOT NULL, health_status VARCHAR(100), vaccination_status VARCHAR(100), create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, deleted INT DEFAULT 0 ); -- 医生表 CREATE TABLE IF NOT EXISTS doctor ( id BIGINT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, department VARCHAR(50), title VARCHAR(50), phone VARCHAR(20), email VARCHAR(100), avatar VARCHAR(255), status INT DEFAULT 1, create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, deleted INT DEFAULT 0 ); -- 就诊记录表 CREATE TABLE IF NOT EXISTS visit ( id BIGINT AUTO_INCREMENT PRIMARY KEY, pet_id BIGINT NOT NULL, doctor_id BIGINT NOT NULL, customer_id BIGINT NOT NULL, symptoms TEXT, diagnosis TEXT, treatment_plan TEXT, visit_date DATE, status VARCHAR(20) DEFAULT 'PENDING', create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, deleted INT DEFAULT 0 ); -- 处方表 CREATE TABLE IF NOT EXISTS prescription ( id BIGINT AUTO_INCREMENT PRIMARY KEY, visit_id BIGINT NOT NULL, doctor_id BIGINT NOT NULL, customer_id BIGINT NOT NULL, total_amount DECIMAL(10,2), status VARCHAR(20) DEFAULT 'ACTIVE', create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, deleted INT DEFAULT 0 ); -- 处方明细表 CREATE TABLE IF NOT EXISTS prescription_item ( id BIGINT AUTO_INCREMENT PRIMARY KEY, prescription_id BIGINT NOT NULL, drug_id BIGINT NOT NULL, quantity INT NOT NULL, dosage VARCHAR(100), frequency VARCHAR(50), duration VARCHAR(50), usage_instructions TEXT, create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, deleted INT DEFAULT 0 ); -- 药品表 CREATE TABLE IF NOT EXISTS drug ( id BIGINT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, category VARCHAR(50), manufacturer VARCHAR(100), specification VARCHAR(100), unit_price DECIMAL(10,2), stock_quantity INT DEFAULT 0, unit VARCHAR(20), status INT DEFAULT 1, create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, deleted INT DEFAULT 0 ); -- 订单表 CREATE TABLE IF NOT EXISTS order_info ( id BIGINT AUTO_INCREMENT PRIMARY KEY, visit_id BIGINT, customer_id BIGINT NOT NULL, amount DECIMAL(10,2), status VARCHAR(20) DEFAULT 'UNPAID', payment_method VARCHAR(20), payment_time TIMESTAMP NULL, remark TEXT, create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, deleted INT DEFAULT 0 ); -- 预约表 CREATE TABLE IF NOT EXISTS appointment ( id BIGINT AUTO_INCREMENT PRIMARY KEY, pet_id BIGINT NOT NULL, doctor_id BIGINT NOT NULL, customer_id BIGINT NOT NULL, appointment_date DATE NOT NULL, appointment_time TIME NOT NULL, reason TEXT, status VARCHAR(20) DEFAULT 'PENDING', create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, deleted INT DEFAULT 0 ); -- 疫苗接种记录表 CREATE TABLE IF NOT EXISTS vaccine_record ( id BIGINT AUTO_INCREMENT PRIMARY KEY, pet_id BIGINT NOT NULL, vaccine_name VARCHAR(100) NOT NULL, dose_number INT, injection_date DATE, next_appointment_date DATE, doctor_id BIGINT, remark TEXT, create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, deleted INT DEFAULT 0 ); -- 库存入库表 CREATE TABLE IF NOT EXISTS stock_in ( id BIGINT AUTO_INCREMENT PRIMARY KEY, drug_id BIGINT NOT NULL, quantity INT NOT NULL, unit_price DECIMAL(10,2), supplier VARCHAR(100), operator_id BIGINT, remark TEXT, create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, deleted INT DEFAULT 0 ); -- 库存出库表 CREATE TABLE IF NOT EXISTS stock_out ( id BIGINT AUTO_INCREMENT PRIMARY KEY, drug_id BIGINT NOT NULL, quantity INT NOT NULL, unit_price DECIMAL(10,2), purpose VARCHAR(100), -- 用途:销售、损耗等 operator_id BIGINT, remark TEXT, create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, deleted INT DEFAULT 0 ); -- 消息表 CREATE TABLE IF NOT EXISTS message ( id BIGINT AUTO_INCREMENT PRIMARY KEY, sender_id BIGINT, receiver_id BIGINT NOT NULL, content TEXT NOT NULL, type VARCHAR(20) DEFAULT 'NOTICE', -- NOTICE通知, CHAT聊天 status VARCHAR(20) DEFAULT 'UNREAD', -- UNREAD未读, READ已读 create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, deleted INT DEFAULT 0 ); -- 公告表 CREATE TABLE IF NOT EXISTS notice ( id BIGINT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(200) NOT NULL, content TEXT NOT NULL, publisher_id BIGINT NOT NULL, publish_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, status INT DEFAULT 1, create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, deleted INT DEFAULT 0 ); -- 医疗记录表 CREATE TABLE IF NOT EXISTS medical_record ( id BIGINT AUTO_INCREMENT PRIMARY KEY, visit_id BIGINT NOT NULL, record_type VARCHAR(50), -- CHECKUP体检, DIAGNOSIS诊断, TREATMENT治疗 content TEXT, attachment_urls TEXT, doctor_id BIGINT, create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, deleted INT DEFAULT 0 ); -- 报表统计表 CREATE TABLE IF NOT EXISTS report ( id BIGINT AUTO_INCREMENT PRIMARY KEY, report_type VARCHAR(50) NOT NULL, -- REVENUE收入, CUSTOMER客户, PET宠物, DRUG药品 report_data JSON, period_start DATE, period_end DATE, generated_by BIGINT, create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, deleted INT DEFAULT 0 );