| | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public int insertRole(SysRole role) |
| | | { |
| | | // 角色表单只收「角色名称 + 备注 + 菜单权限」,下面这几项都不由界面提供。 |
| | | // 它们在 sys_role 里都是 NOT NULL 且无默认值的列,而 insertRole 的 <if> 守卫会直接跳过空值列 |
| | | // —— 库里拿不到值就会报 1364 Field doesn't have a default value, |
| | | // 所以「后端给默认值」不是可选项,是插入能成功的前提。 |
| | | if (StringUtils.isEmpty(role.getRoleKey())) |
| | | { |
| | | // 界面已不展示「权限字符」,它的唯一用途是给鉴权链路一个稳定的角色标识。 |
| | | // 用毫秒时间戳:插入时即定,不需要插入后按自增主键回填。 |
| | | role.setRoleKey("role_" + System.currentTimeMillis()); |
| | | } |
| | | if (role.getRoleSort() == null) |
| | | { |
| | | // 列表是按 role_sort 排的,界面又不给排序输入框,就把新角色排到末尾 |
| | | role.setRoleSort(roleMapper.selectMaxRoleSort() + 1); |
| | | } |
| | | if (StringUtils.isEmpty(role.getStatus())) |
| | | { |
| | | role.setStatus(UserConstants.ROLE_NORMAL); |
| | | } |
| | | if (StringUtils.isEmpty(role.getDataScope())) |
| | | { |
| | | // 界面没有数据权限配置,默认「全部数据权限」,与建表默认值一致 |
| | | role.setDataScope("1"); |
| | | } |
| | | // 这两列是 primitive boolean,MyBatis 的 <if test="... != null"> 恒真, |
| | | // 会把 false(0) 写进去、覆盖掉建表的 DEFAULT '1';显式设回 true,与既有角色行保持一致 |
| | | role.setMenuCheckStrictly(true); |
| | | role.setDeptCheckStrictly(true); |
| | | // 新增角色信息 |
| | | roleMapper.insertRole(role); |
| | | return insertRoleMenu(role); |