先写拦截器代码
package com.dlcloud.oa.erp.aop; import com.alibaba.fastjson.JSON; import com.dlcloud.oa.common.constant.BehaviorEnum; import com.dlcloud.oa.erp.admin.entity.AdminUser; import com.dlcloud.oa.erp.work.entity.OperateLog; import com.dlcloud.oa.utils.BaseUtil; import com.dlcloud.oa.utils.BehaviorEnumlUtils; import com.dlcloud.oa.utils.R; import com.jfinal.aop.Interceptor; import com.jfinal.aop.Invocation; import com.jfinal.core.Controller; import com.jfinal.log.Log; import org.apache.commons.lang3.StringUtils; import javax.servlet.http.HttpServletRequest; import java.util.Date; import java.util.HashMap; import java.util.Map; public class BehaviorLogInterceptor implements Interceptor { @Override public void intercept(Invocation invocation) { invocation.invoke(); try { Controller controller = invocation.getController(); HttpServletRequest request = controller.getRequest(); String methodName = invocation.getMethodName();//方法名称 String url = request.getRequestURL().toString();//请求的url BehaviorEnum behaviorEnum = null;//拦截协议 if (StringUtils.isNoneBlank(url)) { behaviorEnum = BehaviorEnumlUtils.getBehaviorEnumByUrl(url); } if (null != behaviorEnum) {//找到拦截协议 String addr = request.getRemoteAddr(); String ip = request.getRemoteHost(); int port = request.getRemotePort(); AdminUser userInfo = BaseUtil.getUser();//用户信息 userInfo.getUserId();//用户id userInfo.getRoles();//用户角色 String paramContent = getRequestBody(invocation, controller, request);//请求参数 OperateLog operateLog = new OperateLog(); operateLog.setRealname(userInfo.getRealname());//用户姓名 operateLog.setMethod(methodName);//方法名称 // paramContent=2000<paramContent.length()?paramContent.substring(0,2000):paramContent; operateLog.setParamContent(paramContent);//参数内容 operateLog.setLastLoginIp(ip);//ip operateLog.setRestUrl(url);//请求url operateLog.setNum(userInfo.getNum());//员工编号 operateLog.setDeptId(userInfo.getDeptId()); operateLog.setPost(userInfo.getPost()); operateLog.setVisitTime(new Date());//访问时间 operateLog.setUsername(userInfo.getUsername());//登录名称 operateLog.setUserId(userInfo.getUserId());//用户id operateLog.setMethodMean(behaviorEnum.getBehaviorName());//行为名称 operateLog.setBusinessType(behaviorEnum.getModuleName());//业务模块 operateLog.setControllerType(behaviorEnum.getControllerName());//controller名称 operateLog.setLastLoginTime(userInfo.getLastLoginTime());//最后登录时间 operateLog.save(); } } catch (Exception e) { invocation.getController().renderJson(R.error("服务器响应异常:" + e.getMessage())); Log.getLog(invocation.getController().getClass()).error("响应错误", e); } finally { BaseUtil.removeThreadLocal(); } } private String getRequestBody(Invocation inv, Controller controller, HttpServletRequest request) { //Parameter[] parameters = inv.getMethod().getParameters();//不要提前使用 String jsonData = controller.getRawData(); Map<String, Object> paramContent = new HashMap<String, Object>(); paramContent.put("传递参数", request.getParameterMap()); if (StringUtils.isNoneBlank(jsonData)) { paramContent.put("发送参数", jsonData); } return JSON.toJSONString(paramContent); } }
——————————————————————————————————
然后在配置类里面配置一下就齐活了