From 336faf6feb4b26781196776327214958a02e848f Mon Sep 17 00:00:00 2001 From: RuoYi <yzz_ivy@163.com> Date: Wed, 1 Aug 2018 13:17:11 +0800 Subject: [PATCH] 角色权限唯一校验 --- src/main/java/com/ruoyi/common/constant/UserConstants.java | 4 ++++ src/main/java/com/ruoyi/project/system/role/controller/RoleController.java | 15 +++++++++++++++ src/main/java/com/ruoyi/project/system/role/mapper/RoleMapper.java | 8 ++++++++ src/main/java/com/ruoyi/project/system/role/service/IRoleService.java | 8 ++++++++ src/main/java/com/ruoyi/project/system/role/service/RoleServiceImpl.java | 18 ++++++++++++++++++ src/main/resources/mybatis/system/RoleMapper.xml | 5 +++++ src/main/resources/templates/system/role/add.html | 19 ++++++++++++++++++- src/main/resources/templates/system/role/edit.html | 22 +++++++++++++++++++++- 8 files changed, 97 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/ruoyi/common/constant/UserConstants.java b/src/main/java/com/ruoyi/common/constant/UserConstants.java index cff69c1..5114184 100644 --- a/src/main/java/com/ruoyi/common/constant/UserConstants.java +++ b/src/main/java/com/ruoyi/common/constant/UserConstants.java @@ -48,6 +48,10 @@ public class UserConstants /** 角色名称是否唯一的返回结果码 */ public final static String ROLE_NAME_UNIQUE = "0"; public final static String ROLE_NAME_NOT_UNIQUE = "1"; + + /** 角色权限是否唯一的返回结果码 */ + public final static String ROLE_KEY_UNIQUE = "0"; + public final static String ROLE_KEY_NOT_UNIQUE = "1"; /** 菜单名称是否唯一的返回结果码 */ public final static String MENU_NAME_UNIQUE = "0"; diff --git a/src/main/java/com/ruoyi/project/system/role/controller/RoleController.java b/src/main/java/com/ruoyi/project/system/role/controller/RoleController.java index 7b1ff9a..6a333d5 100644 --- a/src/main/java/com/ruoyi/project/system/role/controller/RoleController.java +++ b/src/main/java/com/ruoyi/project/system/role/controller/RoleController.java @@ -146,6 +146,21 @@ public class RoleController extends BaseController } return uniqueFlag; } + + /** + * 校验角色权限 + */ + @PostMapping("/checkRoleKeyUnique") + @ResponseBody + public String checkRoleKeyUnique(Role role) + { + String uniqueFlag = "0"; + if (role != null) + { + uniqueFlag = roleService.checkRoleKeyUnique(role); + } + return uniqueFlag; + } /** * 选择菜单树 diff --git a/src/main/java/com/ruoyi/project/system/role/mapper/RoleMapper.java b/src/main/java/com/ruoyi/project/system/role/mapper/RoleMapper.java index 1cc4fe1..eba5aa9 100644 --- a/src/main/java/com/ruoyi/project/system/role/mapper/RoleMapper.java +++ b/src/main/java/com/ruoyi/project/system/role/mapper/RoleMapper.java @@ -81,5 +81,13 @@ public interface RoleMapper * @return 角色信息 */ public Role checkRoleNameUnique(String roleName); + + /** + * 校验角色权限是否唯一 + * + * @param roleKey 角色权限 + * @return 角色信息 + */ + public Role checkRoleKeyUnique(String roleKey); } diff --git a/src/main/java/com/ruoyi/project/system/role/service/IRoleService.java b/src/main/java/com/ruoyi/project/system/role/service/IRoleService.java index 02c6ccc..d522e9d 100644 --- a/src/main/java/com/ruoyi/project/system/role/service/IRoleService.java +++ b/src/main/java/com/ruoyi/project/system/role/service/IRoleService.java @@ -91,6 +91,14 @@ public interface IRoleService * @return 结果 */ public String checkRoleNameUnique(Role role); + + /** + * 校验角色权限是否唯一 + * + * @param role 角色信息 + * @return 结果 + */ + public String checkRoleKeyUnique(Role role); /** * 通过角色ID查询角色使用数量 diff --git a/src/main/java/com/ruoyi/project/system/role/service/RoleServiceImpl.java b/src/main/java/com/ruoyi/project/system/role/service/RoleServiceImpl.java index cae6b72..36c2ea5 100644 --- a/src/main/java/com/ruoyi/project/system/role/service/RoleServiceImpl.java +++ b/src/main/java/com/ruoyi/project/system/role/service/RoleServiceImpl.java @@ -224,6 +224,24 @@ public class RoleServiceImpl implements IRoleService } return UserConstants.ROLE_NAME_UNIQUE; } + + /** + * 校验角色权限是否唯一 + * + * @param role 角色信息 + * @return 结果 + */ + @Override + public String checkRoleKeyUnique(Role role) + { + Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId(); + Role info = roleMapper.checkRoleKeyUnique(role.getRoleKey()); + if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue()) + { + return UserConstants.ROLE_KEY_NOT_UNIQUE; + } + return UserConstants.ROLE_KEY_UNIQUE; + } /** * 通过角色ID查询角色使用数量 diff --git a/src/main/resources/mybatis/system/RoleMapper.xml b/src/main/resources/mybatis/system/RoleMapper.xml index 04ab82a..3733bd9 100644 --- a/src/main/resources/mybatis/system/RoleMapper.xml +++ b/src/main/resources/mybatis/system/RoleMapper.xml @@ -64,6 +64,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where role_name=#{roleName} </select> + <select id="checkRoleKeyUnique" parameterType="String" resultMap="RoleResult"> + <include refid="selectRoleVo"/> + where role_key=#{roleKey} + </select> + <delete id="deleteRoleById" parameterType="Long"> delete from sys_role where role_id = #{roleId} </delete> diff --git a/src/main/resources/templates/system/role/add.html b/src/main/resources/templates/system/role/add.html index 679ebd9..208abfa 100644 --- a/src/main/resources/templates/system/role/add.html +++ b/src/main/resources/templates/system/role/add.html @@ -98,6 +98,20 @@ }, roleKey:{ required:true, + remote: { + url: ctx + "system/role/checkRoleKeyUnique", + type: "post", + dataType: "json", + data: { + "roleName" : function() { + return $.trim($("#roleName").val()); + } + }, + dataFilter: function(data, type) { + if (data == "0") return true; + else return false; + } + } }, roleSort:{ required:true, @@ -106,7 +120,10 @@ }, messages: { "roleName": { - remote: "角色已经存在" + remote: "角色名称已经存在" + }, + "roleKey": { + remote: "角色权限已经存在" } }, submitHandler:function(form){ diff --git a/src/main/resources/templates/system/role/edit.html b/src/main/resources/templates/system/role/edit.html index 0227123..ef3e10e 100644 --- a/src/main/resources/templates/system/role/edit.html +++ b/src/main/resources/templates/system/role/edit.html @@ -102,6 +102,23 @@ }, roleKey:{ required:true, + remote: { + url: ctx + "system/role/checkRoleKeyUnique", + type: "post", + dataType: "json", + data: { + "roleId": function() { + return $("input[name='roleId']").val(); + }, + "roleKey": function() { + return $("input[name='roleKey']").val(); + } + }, + dataFilter: function(data, type) { + if (data == "0") return true; + else return false; + } + } }, roleSort:{ required:true, @@ -110,7 +127,10 @@ }, messages: { "roleName": { - remote: "角色已经存在" + remote: "角色名称已经存在" + }, + "roleKey": { + remote: "角色权限已经存在" } }, submitHandler:function(form){ -- libgit2 0.26.0