From fc8a9e4a57acd54a79ffec365196e6c75fa1889c Mon Sep 17 00:00:00 2001 From: zhangwei Date: Thu, 11 Oct 2018 18:39:40 +0800 Subject: [PATCH] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E8=A1=8C=E4=B8=BA=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E8=AE=B0=E5=BD=95=E5=8A=9F=E8=83=BD=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/nis/util/LogUtils.java | 72 +++++++++++++++++++++--- 1 file changed, 64 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/nis/util/LogUtils.java b/src/main/java/com/nis/util/LogUtils.java index 0ffc9e61f..1ce245243 100644 --- a/src/main/java/com/nis/util/LogUtils.java +++ b/src/main/java/com/nis/util/LogUtils.java @@ -1,9 +1,11 @@ package com.nis.util; +import java.io.IOException; import java.lang.reflect.Method; import java.util.Date; import java.util.List; import java.util.Map; +import java.util.Properties; import javax.servlet.http.HttpServletRequest; @@ -26,6 +28,7 @@ import com.sun.corba.se.impl.orbutil.closure.Constant; public class LogUtils { public static final String CACHE_MENU_NAME_PATH_MAP = "menuNamePathMap"; + public static final String CACHE_MENU_NAME_PATH_MAP2 = "menuNamePathMap2"; private static SysLogDao logDao = SpringContextHolder.getBean(SysLogDao.class); private static SysMenuDao menuDao = SpringContextHolder.getBean(SysMenuDao.class); @@ -59,6 +62,12 @@ public class LogUtils { log.setMethod(request.getMethod()); log.setCreateBy(user.getName()); log.setCreateDate(new Date()); + if(StringUtil.isEmpty(request.getParameter("functionId"))){ + log.setFunctionId(0); + }else{ + log.setFunctionId(Integer.parseInt(request.getParameter("functionId"))); + } + // 异步保存日志 new SaveLogThread(log, handler, ex).start(); } @@ -90,7 +99,8 @@ public class LogUtils { RequiresPermissions rp = m.getAnnotation(RequiresPermissions.class); permission = (rp != null ? StringUtils.join(rp.value(), ",") : ""); } - log.setTitle(getMenuNamePath(log.getRequestUri(), permission)); + Integer functionId = log.getFunctionId(); + log.setTitle(getMenuNamePath(log.getRequestUri(), permission,functionId)); } // 如果有异常,设置异常信息 log.setException(Exceptions.getStackTraceAsString(ex)); @@ -132,12 +142,21 @@ public class LogUtils { /** * 获取菜单名称路径(如:系统设置-机构用户-用户管理-编辑) */ - public static String getMenuNamePath(String requestUri, String permission){ + public static String getMenuNamePath(String requestUri, String permission,Integer functionId){ String href = StringUtils.substringAfter(requestUri, Configurations.getStringProperty("adminPath", "/nis")); @SuppressWarnings("unchecked") Map menuMap = (Map)CacheUtils.get(CACHE_MENU_NAME_PATH_MAP); + //用于记录功能按钮的操作日志【新增,修改,删除,审核等】 + Map menuMap2 = (Map)CacheUtils.get(CACHE_MENU_NAME_PATH_MAP2); if (menuMap == null){ menuMap = Maps.newHashMap(); + menuMap2 = Maps.newHashMap(); + Properties msgProp = new Properties(); + try { + msgProp.load(Configurations.class.getResourceAsStream("/messages/message_en.properties")); + } catch (IOException e) { + e.printStackTrace(); + } List menuList = menuDao.findAllList(new SysMenu()); for (SysMenu menu : menuList){ // 获取菜单名称路径(如:系统设置-机构用户-用户管理-编辑) @@ -152,30 +171,66 @@ public class LogUtils { } for (SysMenu m : menuList){ if (m.getId().equals(Long.valueOf(id))){ - namePathList.add(m.getName()); +// namePathList.add(m.getName()); + namePathList.add(msgProp.getProperty(m.getCode())==null?m.getCode():msgProp.getProperty(m.getCode())); break; } } } - namePathList.add(menu.getName()); +// namePathList.add(menu.getName()); + namePathList.add(msgProp.getProperty(menu.getCode())==null?menu.getCode():msgProp.getProperty(menu.getCode())); namePath = StringUtils.join(namePathList, "-"); } // 设置菜单名称路径 if (StringUtils.isNotBlank(menu.getHref())){ - menuMap.put(menu.getHref(), namePath); + if(!StringUtil.isEmpty(menu.getFunctionId())&&menu.getFunctionId()!=0){ + menuMap.put(menu.getHref()+"?functionId"+menu.getFunctionId(), namePath); + menuMap2.put("functionId"+menu.getFunctionId(), namePath);//用于记录功能按钮的操作日志 + }else{ + menuMap.put(menu.getHref(), namePath); + } }else if (StringUtils.isNotBlank(menu.getPermission())){ for (String p : StringUtils.split(menu.getPermission())){ - menuMap.put(p, namePath); + if(!StringUtil.isEmpty(menu.getFunctionId())&&menu.getFunctionId()!=0){ + menuMap.put(p+"?functionId"+menu.getFunctionId(), namePath); + menuMap2.put("functionId"+menu.getFunctionId(), namePath);//用于记录功能按钮的操作日志 + }else{ + menuMap.put(p, namePath); + } + } } - } + CacheUtils.put(CACHE_MENU_NAME_PATH_MAP, menuMap); + CacheUtils.put(CACHE_MENU_NAME_PATH_MAP2, menuMap2); + } + String menuNamePath = null; + if(functionId==0){ + menuNamePath = menuMap.get(href); + }else{ + menuNamePath = menuMap.get(href+"?functionId"+functionId); + if(menuNamePath==null){ + menuNamePath = menuMap2.get("functionId"+functionId); + /*String methodName = href.substring(href.lastIndexOf("/")+1).toLowerCase(); + if(!StringUtil.isEmpty(methodName)){ + if(methodName.contains("insert")||methodName.contains("save")||methodName.contains("update")||methodName.contains("edit")){ + menuNamePath +="-"+"Save or Update"; + }else if(methodName.contains("valid")){ + menuNamePath +="-"+"Delete"; + }else if(methodName.contains("audit")){ + menuNamePath +="-"+"Confirmation"; + } + + }*/ + } } - String menuNamePath = menuMap.get(href); if (menuNamePath == null){ for (String p : StringUtils.split(permission)){ + if(functionId!=0){ + p += "?functionId"+functionId; + } menuNamePath = menuMap.get(p); if (StringUtils.isNotBlank(menuNamePath)){ break; @@ -185,6 +240,7 @@ public class LogUtils { return ""; } } + System.out.println(menuNamePath); return menuNamePath; }