|
@@ -0,0 +1,108 @@
|
|
|
|
+package cn.com.qmth.stmms.common.interceptor;
|
|
|
|
+
|
|
|
|
+import java.util.Date;
|
|
|
|
+
|
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
|
+
|
|
|
|
+import org.slf4j.Logger;
|
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.web.method.HandlerMethod;
|
|
|
|
+import org.springframework.web.servlet.ModelAndView;
|
|
|
|
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
|
|
|
|
+
|
|
|
|
+import cn.com.qmth.stmms.admin.utils.SessionExamUtils;
|
|
|
|
+import cn.com.qmth.stmms.biz.exam.model.Exam;
|
|
|
|
+import cn.com.qmth.stmms.biz.exam.model.OperationLog;
|
|
|
|
+import cn.com.qmth.stmms.biz.exam.service.ExamService;
|
|
|
|
+import cn.com.qmth.stmms.biz.exam.service.MarkerService;
|
|
|
|
+import cn.com.qmth.stmms.biz.exam.service.OperationLogService;
|
|
|
|
+import cn.com.qmth.stmms.biz.user.service.UserService;
|
|
|
|
+import cn.com.qmth.stmms.common.annotation.Logging;
|
|
|
|
+import cn.com.qmth.stmms.common.domain.WebUser;
|
|
|
|
+import cn.com.qmth.stmms.common.utils.RequestUtils;
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * @Description: 日志操作拦截器
|
|
|
|
+ * @author ting.yin
|
|
|
|
+ */
|
|
|
|
+public class LogInterceptor extends HandlerInterceptorAdapter {
|
|
|
|
+
|
|
|
|
+ private static Logger log = LoggerFactory.getLogger(LogInterceptor.class);
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private OperationLogService logService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private ExamService examService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private MarkerService markerService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private UserService userService;
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
|
|
|
|
+ ModelAndView modelAndView) {
|
|
|
|
+ WebUser wu = RequestUtils.getWebUser(request);
|
|
|
|
+ String uri = request.getRequestURI();
|
|
|
|
+ HandlerMethod method = (HandlerMethod) handler;
|
|
|
|
+ if (uri.startsWith("/login")) {
|
|
|
|
+ // wu = buildWebUser(request, response);
|
|
|
|
+ }
|
|
|
|
+ Logging logging = method.getMethodAnnotation(Logging.class);
|
|
|
|
+ if (wu != null && logging != null) {
|
|
|
|
+ saveLog(logging, wu, request, response);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void saveLog(Logging logging, WebUser wu, HttpServletRequest request, HttpServletResponse response) {
|
|
|
|
+ int examId = SessionExamUtils.getExamId(request);
|
|
|
|
+
|
|
|
|
+ OperationLog log = new OperationLog();
|
|
|
|
+ log.setCreateTime(new Date());
|
|
|
|
+ log.setExamId(examId > 0 ? null : examId);
|
|
|
|
+ log.setMenu(logging.menu());
|
|
|
|
+ log.setType(logging.type());
|
|
|
|
+ log.setMarker(wu.isMarker());
|
|
|
|
+ if (wu.isMarker()) {
|
|
|
|
+ log.setMarker(true);
|
|
|
|
+ log.setOperatorId(wu.getMarker().getId());
|
|
|
|
+ log.setIpAddress(wu.getMarker().getLastLoginIp());
|
|
|
|
+ log.setLoginName(wu.getMarker().getLoginName());
|
|
|
|
+ Exam exam = examService.findById(wu.getMarker().getExamId());
|
|
|
|
+ log.setSchoolId(exam.getSchoolId());
|
|
|
|
+ } else {
|
|
|
|
+ log.setMarker(false);
|
|
|
|
+ log.setOperatorId(wu.getUser().getId());
|
|
|
|
+ log.setIpAddress(wu.getUser().getLastLoginIp());
|
|
|
|
+ log.setLoginName(wu.getUser().getLoginName());
|
|
|
|
+ log.setSchoolId(wu.getUser().getSchoolId());
|
|
|
|
+ }
|
|
|
|
+ log.setDescription(RequestUtils.getLog(request));
|
|
|
|
+ logService.save(log);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 从session中构造WebUser对象
|
|
|
|
+ *
|
|
|
|
+ * @param request
|
|
|
|
+ * @param response
|
|
|
|
+ * @throws Exception
|
|
|
|
+ */
|
|
|
|
+ // private WebUser buildWebUser(HttpServletRequest request,
|
|
|
|
+ // HttpServletResponse response) {
|
|
|
|
+ // WebUser wu = WebUser.buildFromSession(RequestUtils.getSession(request));
|
|
|
|
+ // if (wu != null) {
|
|
|
|
+ // RequestUtils.setWebUser(request, wu);
|
|
|
|
+ // if (wu.isMarker()) {
|
|
|
|
+ // wu.setDataObject(markerService.findById(wu.getId()));
|
|
|
|
+ // } else {
|
|
|
|
+ // wu.setDataObject(userService.findById(wu.getId()));
|
|
|
|
+ // }
|
|
|
|
+ // }
|
|
|
|
+ // return wu;
|
|
|
|
+ // }
|
|
|
|
+}
|