# sys_user_role 角色关系 SQL 生成记录 ## 修改日期 2026-05-20 ## 需求范围 - 根据 `/Users/wkc/Downloads/892.xlsx` 的 `Sheet1` 生成 `sys_user_role` 插入语句。 - Excel 字段使用规则:`柜员号` 匹配 `sys_user.user_name` 后取 `sys_user.user_id`,`类型` 匹配 `sys_role.role_name` 后取 `sys_role.role_id`。 - 未将 Excel 柜员号直接写入 `sys_user_role.user_id`。 - 本次只生成 SQL 文件,未执行写入数据库。 ## 输出文件 - `sql/insert_sys_user_role_892_20260519.sql` ## 数据统计 - Excel 有效数据行:257 行。 - 管理员:4 行。 - 支行管理员:37 行。 - 客户经理:213 行。 - Excel 中 3 个重复柜员号同时出现客户经理和支行管理员,本次按支行管理员优先处理,不插入客户经理角色。 ## 重复柜员号 - `8922557`: 裘朝山 / 892220 / 客户经理 / Excel 第 26 行、裘朝山 / 892220 / 支行管理员 / Excel 第 117 行 - `8922667`: 徐华源 / 892080 / 客户经理 / Excel 第 66 行、徐华源 / 892080 / 支行管理员 / Excel 第 121 行 - `8923504`: 陈俊杰 / 892170 / 客户经理 / Excel 第 28 行、陈俊杰 / 892170 / 支行管理员 / Excel 第 118 行 - 处理规则:以上重复柜员号只保留在支行管理员插入语句中。 ## 数据库映射确认 - 已查询开发库 `sys_role`,当前有效角色为: - `管理员` -> `role_id=100`, `role_key=headAdmin` - `客户经理` -> `role_id=101`, `role_key=common` - `支行管理员` -> `role_id=102`, `role_key=branchAdmin` - SQL 文件不硬编码 `role_id`,执行时按 `sys_role.role_name` 动态匹配,避免不同环境角色自增 ID 不一致。 - SQL 使用 `INSERT IGNORE`,重复执行不会重复写入相同 `(user_id, role_id)`。 - SQL 不创建临时表,已按 `管理员`、`支行管理员`、`客户经理` 拆成三条独立插入语句,便于分角色执行和核对影响范围。 ## 验证记录 - 已读取 Excel 并校验 `类型` 只包含 `管理员`、`支行管理员`、`客户经理`。 - 已确认 `sys_user_role` 表结构为 `user_id`、`role_id` 联合主键。 - 已对开发库做不写入目标表的干跑校验:257 行角色均可匹配,当前库 Excel 柜员号匹配到的有效用户数为 0。 - 批量执行该 SQL 前需先导入 Excel 对应用户,否则三条插入语句因匹配不到 `sys_user.user_name` 不会写入关系。 - 已按要求移除临时表建表、临时表插入和临时表删除语句。 - 已在事务内执行 SQL 脚本并 `ROLLBACK`,确认三条插入语句语法通过且未落库。