-- 如果表不存在则创建表,如果存在则添加缺失的列 -- 检查并创建appointment表或添加缺失列 CREATE TABLE IF NOT EXISTS appointment ( id BIGINT AUTO_INCREMENT PRIMARY KEY, customer_id BIGINT NOT NULL, pet_id BIGINT NOT NULL, doctor_id BIGINT, department VARCHAR(50), appointment_date DATE, time_slot VARCHAR(20), -- 添加这个缺失的列 status VARCHAR(20) DEFAULT 'PENDING', remark TEXT, cancel_time TIMESTAMP NULL, create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, deleted INT DEFAULT 0 ); -- 检查并创建visit表 CREATE TABLE IF NOT EXISTS visit ( id BIGINT AUTO_INCREMENT PRIMARY KEY, appointment_id BIGINT, customer_id BIGINT NOT NULL, pet_id BIGINT NOT NULL, doctor_id BIGINT NOT NULL, symptoms TEXT, diagnosis TEXT, treatment_plan TEXT, status VARCHAR(20) DEFAULT 'PENDING', total_amount DECIMAL(10,2), payment_status VARCHAR(20) DEFAULT 'UNPAID', payment_method VARCHAR(20), payment_time TIMESTAMP NULL, start_time TIMESTAMP, end_time TIMESTAMP, create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, deleted INT DEFAULT 0 ); -- 检查并创建prescription表 CREATE TABLE IF NOT EXISTS prescription ( id BIGINT AUTO_INCREMENT PRIMARY KEY, visit_id BIGINT, doctor_id BIGINT, customer_id BIGINT, total_amount DECIMAL(10,2), status VARCHAR(20) DEFAULT 'DRAFT', remark TEXT, create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, deleted INT DEFAULT 0 ); -- 检查并创建prescription_item表 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 ); -- 检查并创建order_info表 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 ); -- 检查并创建drug表 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 ); -- 检查并创建pet表 CREATE TABLE IF NOT EXISTS pet ( id BIGINT AUTO_INCREMENT PRIMARY KEY, owner_id BIGINT NOT NULL, name VARCHAR(50) NOT NULL, species VARCHAR(50), breed VARCHAR(100), gender VARCHAR(10), -- 修改为VARCHAR以支持MALE/FEMALE birthday DATE, -- 添加birthday字段而不是age weight DOUBLE, -- 添加weight字段 photo VARCHAR(255), -- 添加photo字段 remark TEXT, -- 添加remark字段 create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, deleted INT DEFAULT 0 ); -- 检查并创建doctor表 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 ); -- 检查并创建user表 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 ); -- 检查并创建medical_record表 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 ); -- 检查并创建message表 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 ); -- 检查并创建notice表 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 ); -- 检查并创建report表 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 ); -- 检查并创建stock_in表 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 ); -- 检查并创建stock_out表 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 ); -- 检查并创建vaccine_record表 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 );