-- 健康模块第一阶段:只新增表,不删除或导入旧数据。 -- 先执行 V001,再执行 V002 菜单脚本。重复执行不会清空数据,也不会升级已存在表的字段。 SET NAMES utf8mb4; CREATE TABLE IF NOT EXISTS health_identity ( id bigint NOT NULL AUTO_INCREMENT COMMENT '主键', member_id bigint NOT NULL COMMENT 'member_user.id;不是 system_user.id', identity_type tinyint NOT NULL COMMENT '10 老人、20 志愿者、30 家属;创建后不更换', real_name varchar(30) NOT NULL COMMENT '真实姓名', contact_phone varchar(30) NULL COMMENT '联系方式,可与登录手机号不同', gender tinyint NOT NULL DEFAULT 3 COMMENT '1 男、2 女、3 未知', birth_date date NULL COMMENT '出生日期', address varchar(500) NULL COMMENT '地址', status tinyint NOT NULL DEFAULT 0 COMMENT '0 启用、1 停用', audit_status tinyint NOT NULL COMMENT '0 待审、1 通过、2 驳回', audit_user_id bigint NULL COMMENT '审核管理员 system_users.id', audit_time datetime NULL COMMENT '最近审核时间', audit_reason varchar(500) NULL COMMENT '最近审核理由', creator varchar(64) DEFAULT '' COMMENT '创建者', create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updater varchar(64) DEFAULT '' COMMENT '更新者', update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', deleted bit(1) NOT NULL DEFAULT b'0' COMMENT '逻辑删除标记;身份管理使用停用保留历史', tenant_id bigint NOT NULL COMMENT '租户编号', PRIMARY KEY (id), UNIQUE KEY uk_health_identity_member (tenant_id, member_id), KEY idx_health_identity_type (tenant_id, identity_type, status, audit_status) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='健康业务身份,一个账号一种身份'; CREATE TABLE IF NOT EXISTS health_elderly_profile ( id bigint NOT NULL AUTO_INCREMENT COMMENT '主键', identity_id bigint NOT NULL COMMENT 'health_identity.id,必须是老人身份', emergency_contact varchar(60) NULL COMMENT '紧急联系人', emergency_phone varchar(30) NULL COMMENT '紧急联系电话', health_status varchar(500) NULL COMMENT '健康状况摘要,不替代历次评估', medical_history varchar(2000) NULL COMMENT '病史', medication_info varchar(2000) NULL COMMENT '用药信息', special_needs varchar(1000) NULL COMMENT '特殊需求', creator varchar(64) DEFAULT '' COMMENT '创建者', create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updater varchar(64) DEFAULT '' COMMENT '更新者', update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', deleted bit(1) NOT NULL DEFAULT b'0' COMMENT '逻辑删除标记;身份管理使用停用保留历史', tenant_id bigint NOT NULL COMMENT '租户编号', PRIMARY KEY (id), UNIQUE KEY uk_health_elderly_identity (tenant_id, identity_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='老人基础健康档案'; CREATE TABLE IF NOT EXISTS health_volunteer_profile ( id bigint NOT NULL AUTO_INCREMENT COMMENT '主键', identity_id bigint NOT NULL COMMENT 'health_identity.id,必须是志愿者身份', skills varchar(1000) NULL COMMENT '服务技能', service_areas varchar(500) NULL COMMENT '服务区域;后续匹配可细化', available_time varchar(1000) NULL COMMENT '可服务时间说明;后续排班可细化', service_experience varchar(2000) NULL COMMENT '服务经验', creator varchar(64) DEFAULT '' COMMENT '创建者', create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updater varchar(64) DEFAULT '' COMMENT '更新者', update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', deleted bit(1) NOT NULL DEFAULT b'0' COMMENT '逻辑删除标记;身份管理使用停用保留历史', tenant_id bigint NOT NULL COMMENT '租户编号', PRIMARY KEY (id), UNIQUE KEY uk_health_volunteer_identity (tenant_id, identity_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='志愿者服务档案'; CREATE TABLE IF NOT EXISTS health_family_relation ( id bigint NOT NULL AUTO_INCREMENT COMMENT '主键', family_identity_id bigint NOT NULL COMMENT '家属 health_identity.id', elderly_profile_id bigint NOT NULL COMMENT '老人 health_elderly_profile.id,不是 member_id', relationship varchar(30) NOT NULL COMMENT '与老人关系', status tinyint NOT NULL DEFAULT 0 COMMENT '0 待确认、1 已确认、2 已拒绝、3 已解除', review_user_type tinyint NULL COMMENT '确认者账号类型:1 member、2 admin', review_user_id bigint NULL COMMENT '确认者账号编号,结合 user_type 解释', review_time datetime NULL COMMENT '最近确认或拒绝时间', review_reason varchar(500) NULL COMMENT '管理员确认必须记录核实理由', revoke_user_type tinyint NULL COMMENT '解除者账号类型', revoke_user_id bigint NULL COMMENT '解除者账号编号', revoke_time datetime NULL COMMENT '最近解除时间', revoke_reason varchar(500) NULL COMMENT '解除理由', creator varchar(64) DEFAULT '' COMMENT '创建者', create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updater varchar(64) DEFAULT '' COMMENT '更新者', update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', deleted bit(1) NOT NULL DEFAULT b'0' COMMENT '逻辑删除标记;身份管理使用停用保留历史', tenant_id bigint NOT NULL COMMENT '租户编号', PRIMARY KEY (id), UNIQUE KEY uk_health_family_pair (tenant_id, family_identity_id, elderly_profile_id), KEY idx_health_family_elderly (tenant_id, elderly_profile_id, status) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='家属与老人多对多关联,确认后授权';