Files
biz-api-cloud-zax/db/20260817_add_sys_user_student_guardian_phones.sql
T
dzc f7aab36210 feat:删除绑定关系
feat:修改绑定关系权限问题
feat:学生导入饭卡
feat:学生充值导入
feat:学生用户类型增加监护人手机号
2026-08-17 18:42:09 +08:00

50 lines
2.3 KiB
SQL

-- 为学生扩展表补充监护人手机号集合,并兼容已经存在学生、用户关系的历史环境。
-- guardian_phones 保存当前未逻辑删除的 GUARDIAN_WARD 关系中全部监护人手机号,按关系创建顺序去重并使用英文逗号分隔。
SET @guardian_phones_column_exists = (
SELECT COUNT(*)
FROM information_schema.columns
WHERE table_schema = DATABASE()
AND table_name = 'sys_user_student'
AND column_name = 'guardian_phones'
);
SET @guardian_phones_ddl = IF(
@guardian_phones_column_exists = 0,
'ALTER TABLE `sys_user_student` ADD COLUMN `guardian_phones` text DEFAULT NULL COMMENT ''监护人手机号集合,按监护关系创建顺序去重并使用英文逗号分隔'' AFTER `class_name`',
'SELECT ''sys_user_student.guardian_phones already exists'''
);
PREPARE guardian_phones_statement FROM @guardian_phones_ddl;
EXECUTE guardian_phones_statement;
DEALLOCATE PREPARE guardian_phones_statement;
SET @previous_group_concat_max_len = @@SESSION.group_concat_max_len;
SET SESSION group_concat_max_len = 65535;
UPDATE `sys_user_student` AS student
LEFT JOIN (
SELECT relation.tenant_id,
relation.object_user_id AS student_user_id,
GROUP_CONCAT(DISTINCT TRIM(guardian.phone) ORDER BY relation.relation_id SEPARATOR ',') AS guardian_phones
FROM `sys_user_relation` AS relation
INNER JOIN `sys_user_relation_type` AS relation_type
ON relation_type.relation_type_id = relation.relation_type_id
AND relation_type.tenant_id = relation.tenant_id
AND COALESCE(relation_type.del_flag, '0') = '0'
AND relation_type.relation_code = 'GUARDIAN_WARD'
INNER JOIN `sys_user` AS guardian
ON guardian.user_id = relation.subject_user_id
AND guardian.tenant_id = relation.tenant_id
AND COALESCE(guardian.del_flag, '0') = '0'
AND guardian.phone IS NOT NULL
AND TRIM(guardian.phone) <> ''
WHERE COALESCE(relation.del_flag, '0') = '0'
GROUP BY relation.tenant_id, relation.object_user_id
) AS guardian_relation
ON guardian_relation.student_user_id = student.user_id
AND guardian_relation.tenant_id = student.tenant_id
SET student.guardian_phones = guardian_relation.guardian_phones;
SET SESSION group_concat_max_len = @previous_group_concat_max_len;