summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorduandongmei <[email protected]>2019-04-30 11:34:08 +0800
committer段冬梅 <[email protected]>2019-04-30 11:35:13 +0800
commitd00a8556665a0da737e8bbb1a5fd618f9abb0651 (patch)
tree2d557f0fa0866bc16a1d8af32d29f9eb36aa53ce
parent2b57e33d124694d4ad5e0f3eb4fa692394a710f6 (diff)
审核角色自动添加审核菜单;
审核角色禁止修改角色名称
-rw-r--r--src/main/java/com/nis/web/dao/SysMenuDao.java2
-rw-r--r--src/main/java/com/nis/web/dao/SysMenuDao.xml7
-rw-r--r--src/main/java/com/nis/web/service/RoleService.java38
-rw-r--r--src/main/webapp/WEB-INF/views/sys/roleForm.jsp7
4 files changed, 51 insertions, 3 deletions
diff --git a/src/main/java/com/nis/web/dao/SysMenuDao.java b/src/main/java/com/nis/web/dao/SysMenuDao.java
index 87af932e3..2850bff77 100644
--- a/src/main/java/com/nis/web/dao/SysMenuDao.java
+++ b/src/main/java/com/nis/web/dao/SysMenuDao.java
@@ -28,4 +28,6 @@ public interface SysMenuDao extends CrudDao<SysMenu>{
String getMenuCodeByFunctionId(@Param("functionId")Integer functionId, @Param("parentId")String id);
+ List<SysMenu> findSysMenuByCode(@Param("code") String code);
+
} \ No newline at end of file
diff --git a/src/main/java/com/nis/web/dao/SysMenuDao.xml b/src/main/java/com/nis/web/dao/SysMenuDao.xml
index 28ff2734f..40787cf05 100644
--- a/src/main/java/com/nis/web/dao/SysMenuDao.xml
+++ b/src/main/java/com/nis/web/dao/SysMenuDao.xml
@@ -103,6 +103,13 @@
</select>
+ <select id="findSysMenuByCode" resultType="sysMenu">
+ SELECT *
+ FROM sys_menu a
+ WHERE a.del_flag = 1
+ and a.code=#{code}
+ </select>
+
diff --git a/src/main/java/com/nis/web/service/RoleService.java b/src/main/java/com/nis/web/service/RoleService.java
index 78b184e9a..d9b3eaedf 100644
--- a/src/main/java/com/nis/web/service/RoleService.java
+++ b/src/main/java/com/nis/web/service/RoleService.java
@@ -1,14 +1,17 @@
package com.nis.web.service;
+import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import com.nis.domain.SysMenu;
import com.nis.domain.SysRole;
import com.nis.domain.SysUser;
import com.nis.util.StringUtil;
+import com.nis.web.dao.SysMenuDao;
import com.nis.web.dao.SysRoleDao;
import com.nis.web.security.UserUtils;
@@ -16,6 +19,8 @@ import com.nis.web.security.UserUtils;
public class RoleService extends BaseService {
@Autowired
private SysRoleDao roleDao;
+ @Autowired
+ private SysMenuDao menuDao;
public List<SysRole> findAllRole() {
return UserUtils.getRoleList();
@@ -52,6 +57,19 @@ public class RoleService extends BaseService {
// 更新角色与菜单关联
roleDao.deleteRoleMenu(role);
}
+ //针对audit菜单特殊处理[判断是否存在audit权限,如果存在则不新增,如果不存在则新增]
+ List<SysMenu> auditMenuList=menuDao.findSysMenuByCode("save_and_audit");
+ if(!StringUtil.isEmpty(auditMenuList) //库中存在“保存并下发”权限菜单
+ && "saveAndAudit".equals(role.getName())//此角色为“保存并下发”角色
+ && !checkAuditAuth(role.getMenuList(),auditMenuList.get(0))){//此角色没有分配“保存并下发”菜单
+ if(!StringUtil.isEmpty(role.getMenuList())){
+ role.getMenuList().add(auditMenuList.get(0));
+ }else{
+ List<SysMenu> auditList=new ArrayList<>();
+ auditList.add(auditMenuList.get(0));
+ role.setMenuList(auditList);
+ }
+ }
if (role.getMenuList().size() > 0){
roleDao.insertRoleMenu(role);
@@ -80,7 +98,23 @@ public class RoleService extends BaseService {
// // 清除权限缓存
// systemRealm.clearAllCachedAuthorizationInfo();
}
-
-
+ /**
+ * 判断角色是否为审核角色
+ * true存在此角色
+ * false不存在此角色
+ */
+ public boolean checkAuditAuth(List<SysMenu> menuList,SysMenu menu){
+ boolean flag=false;
+ if(StringUtil.isEmpty(menuList)){
+ return flag;
+ }
+ for (SysMenu sysMenu : menuList) {
+ if(sysMenu.getId().equals(menu.getId())){
+ flag=true;
+ break;
+ }
+ }
+ return flag;
+ }
}
diff --git a/src/main/webapp/WEB-INF/views/sys/roleForm.jsp b/src/main/webapp/WEB-INF/views/sys/roleForm.jsp
index eb38d627e..6860f7231 100644
--- a/src/main/webapp/WEB-INF/views/sys/roleForm.jsp
+++ b/src/main/webapp/WEB-INF/views/sys/roleForm.jsp
@@ -103,7 +103,12 @@
<label class="col-md-3 control-label"><spring:message code="role_name"/>:</label>
<div class="col-md-4">
<input id="oldName" name="oldName" type="hidden" value="${role.name}">
- <form:input path="name" htmlEscape="false" maxlength="50" class="required form-control"/>
+ <c:if test="${role.name eq 'saveAndAudit'}">
+ <form:input path="name" htmlEscape="false" readonly="true" maxlength="50" class="required form-control" />
+ </c:if>
+ <c:if test="${role.name ne 'saveAndAudit'}">
+ <form:input path="name" htmlEscape="false" maxlength="50" class="required form-control" />
+ </c:if>
</div>
<span class="help-inline"><font color="red">*</font> </span>
</div>