elder-yudao-pro/mysql_script/health/V001__health_identity.sql

90 lines
5.9 KiB
MySQL
Raw Normal View History

-- 健康模块第一阶段:只新增表,不删除或导入旧数据。
-- 先执行 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='家属与老人多对多关联,确认后授权';