ソースを参照

修复重启后examId为空的情况

yin 12 時間 前
コミット
45a9ee26ba

+ 13 - 3
stmms-web/src/main/java/cn/com/qmth/stmms/api/interceptor/ApiInterceptor.java

@@ -3,6 +3,7 @@ package cn.com.qmth.stmms.api.interceptor;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import cn.com.qmth.stmms.admin.utils.SessionExamUtils;
 import cn.com.qmth.stmms.common.session.model.StmmsSession;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -157,6 +158,13 @@ public class ApiInterceptor extends HandlerInterceptorAdapter {
     private boolean buildApiUser(HttpServletRequest request, HttpServletResponse response, User user) {
         ApiUser wu = new ApiUser(user);
         if (wu != null) {
+            if(wu.getRole() == Role.SYS_ADMIN){
+                return true;
+            }
+            Integer examId = SessionExamUtils.getExamId(request);
+            if(examId== null || examId<=0){
+                return false;
+            }
             if (wu.getRole() == Role.SUBJECT_HEADER || wu.getRole() == Role.INSPECTOR
                     || wu.getRole() == Role.COLLEGE_ADMIN || wu.getRole() == Role.SCHOOL_VIEWER) {
                 wu.setSubjectCodeSet(subjectUserService.findSubjectCode(wu.getId()));
@@ -164,10 +172,12 @@ public class ApiInterceptor extends HandlerInterceptorAdapter {
             RequestUtils.setRolePrivilegeCodes(request,
                     rolePrivilegeService.getRoleCodes(wu.getUser().getSchoolId(), wu.getRole()));
             RequestUtils.setPrivileges(request, privilegeService.getMenuPrivileges());
+            RequestUtils.setApiUser(request, wu);
+            sessionService.put(request, response, RequestUtils.getSession(request));
+            return true;
+        }else{
+            return false;
         }
-        RequestUtils.setApiUser(request, wu);
-        sessionService.put(request, response, RequestUtils.getSession(request));
-        return true;
     }
 
     @Override