-- ============================================================ -- 统一学校管理员体系改造:sys_user 新增字段 + 数据迁移 -- 数据库:达梦 DM8 -- 说明:废弃 complaint_admin 推送名单,统一用 sys_user 管理学校管理员 -- ============================================================ -- 1. sys_user 表新增字段(学工号:公众号推送匹配;职位:校长/主任/经办人等) -- 注意:identity 是达梦保留字,数据库字段名用 job_title,Java 属性名仍为 identity ALTER TABLE sys_user ADD staff_no VARCHAR(32); COMMENT ON COLUMN sys_user.staff_no IS '学工号(公众号消息推送匹配,选填)'; ALTER TABLE sys_user ADD job_title VARCHAR(20); COMMENT ON COLUMN sys_user.job_title IS '职位(校长/主任/经办人等)'; -- unit_uid 字段已存在(关联学校机构UID,学校管理员数据权限用) -- ============================================================ -- 2. 数据迁移:complaint_admin → sys_user -- 为每个启用的学校管理员创建 sys_user 账号 -- 用户名:手机号(避免重复),默认密码:123456(MD5加密后) -- 部门ID:100(若依默认根部门,可根据实际调整) -- ============================================================ -- 先查询是否有重复手机号(重复的需要手动处理) SELECT phone, COUNT(*) as cnt FROM complaint_admin WHERE status = 1 GROUP BY phone HAVING COUNT(*) > 1; -- 迁移 complaint_admin 到 sys_user(仅迁移手机号不重复的) -- 注意:以下SQL中密码 'admin123' 的MD5值需要根据实际加密方式调整 -- 若依默认密码加密:BCrypt,这里用 $2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu(对应 123456) INSERT INTO sys_user ( dept_id, user_name, nick_name, email, phonenumber, unit_uid, staff_no, job_title, sex, avatar, password, status, del_flag, login_ip, login_date, pwd_update_date, create_by, create_time, update_by, update_time, remark ) SELECT 100 as dept_id, -- 默认根部门,可根据实际调整 ca.phone as user_name, -- 用户名用手机号 ca.admin_name as nick_name, -- 昵称用管理员姓名 NULL as email, ca.phone as phonenumber, ca.unit_uid as unit_uid, -- 绑定学校 ca.staff_no as staff_no, -- 学工号 ca."identity" as job_title, -- 职位(identity是达梦保留字,需双引号) '2' as sex, -- 未知 '' as avatar, '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu' as password, -- 123456 '0' as status, -- 正常 '0' as del_flag, '' as login_ip, NULL as login_date, NULL as pwd_update_date, 'system' as create_by, SYSDATE as create_time, '' as update_by, NULL as update_time, '从complaint_admin迁移' as remark FROM complaint_admin ca WHERE ca.status = 1 AND ca.phone IS NOT NULL AND ca.phone NOT IN (SELECT user_name FROM sys_user WHERE del_flag = '0'); -- ============================================================ -- 3. 为迁移的学校管理员分配"学校管理员"角色 -- 需要先确认学校管理员角色的 role_id(从 complaint_roles.sql 看可能是某个固定值) -- ============================================================ -- 查询角色列表,确认学校管理员角色ID SELECT role_id, role_name, role_key FROM sys_role WHERE del_flag = '0'; -- 假设学校管理员角色 role_key = 'school_admin',执行以下分配(取消注释并替换实际role_id) -- INSERT INTO sys_user_role (user_id, role_id) -- SELECT u.user_id, <学校管理员角色ID> -- FROM sys_user u -- WHERE u.remark = '从complaint_admin迁移' -- AND u.user_id NOT IN (SELECT user_id FROM sys_user_role WHERE role_id = <学校管理员角色ID>); -- ============================================================ -- 4. 验证迁移结果 -- ============================================================ -- 查询迁移的学校管理员账号 SELECT user_id, user_name, nick_name, phonenumber, unit_uid, staff_no, identity, status FROM sys_user WHERE remark = '从complaint_admin迁移' ORDER BY user_id; -- 统计迁移数量 SELECT COUNT(*) as 迁移学校管理员数量 FROM sys_user WHERE remark = '从complaint_admin迁移'; -- ============================================================ -- 5. (可选)停用 complaint_admin 表,不再使用 -- 确认推送服务已切换到 sys_user 后,可执行以下语句标记废弃 -- ============================================================ -- ALTER TABLE complaint_admin RENAME TO complaint_admin_deprecated; -- 或直接保留表但不再写入(推荐,保留历史数据)