| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- -- ============================================================
- -- 统一学校管理员体系改造: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;
- -- 或直接保留表但不再写入(推荐,保留历史数据)
|