1
0
Pārlūkot izejas kodu

修复登录后,评卷员解绑或被删除前端报500的问题

ting.yin 4 gadi atpakaļ
vecāks
revīzija
83f03dc082

+ 1 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/InspectedController.java

@@ -179,6 +179,7 @@ public class InspectedController extends BaseExamController {
                 obj.accumulate("success", true);
             } else {
                 obj.accumulate("success", false);
+                obj.accumulate("message", "无法复核,请刷新页面");
             }
         } catch (Exception e) {
             obj.accumulate("success", false);

+ 3 - 2
stmms-web/src/main/java/cn/com/qmth/stmms/mark/MarkController.java

@@ -571,10 +571,10 @@ public class MarkController extends BaseController {
         MarkGroup group = groupService.findOne(marker.getExamId(), marker.getSubjectCode(), marker.getGroupNumber());
         if (group == null) {
             result.accumulate("success", false);
-            result.accumulate("message", "user.login.error.group");
+            result.accumulate("message", "评卷分组不存在");
         } else if (group.getStatus() == MarkStatus.FINISH) {
             result.accumulate("success", false);
-            result.accumulate("message", "user.login.error.finish");
+            result.accumulate("message", "评卷分组已结束");
         } else {
             releaseMarker(old);
             user.setMarkerId(marker.getId());
@@ -636,6 +636,7 @@ public class MarkController extends BaseController {
         JSONObject subject = new JSONObject();
         subject.accumulate("name", examSubject.getName());
         subject.accumulate("code", examSubject.getCode());
+        examSubject.setPaperAnswerUrl(fileService);
         subject.accumulate("paperUrl", examSubject.getPaperUrl() == null ? "" : examSubject.getPaperUrl());
         subject.accumulate("answerUrl", examSubject.getAnswerUrl() == null ? "" : examSubject.getAnswerUrl());
         setting.accumulate("subject", subject);

+ 22 - 10
stmms-web/src/main/java/cn/com/qmth/stmms/mark/interceptor/MarkInterceptor.java

@@ -1,15 +1,17 @@
 package cn.com.qmth.stmms.mark.interceptor;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Autowired;
+
+import cn.com.qmth.stmms.biz.exam.model.Marker;
 import cn.com.qmth.stmms.biz.exam.service.MarkerService;
 import cn.com.qmth.stmms.biz.user.service.UserService;
 import cn.com.qmth.stmms.common.domain.WebUser;
 import cn.com.qmth.stmms.common.enums.Role;
 import cn.com.qmth.stmms.common.interceptor.SessionInterceptor;
 import cn.com.qmth.stmms.common.utils.RequestUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 
 /**
  * Mark模块操作拦截器
@@ -25,8 +27,7 @@ public class MarkInterceptor extends SessionInterceptor {
     private MarkerService markerService;
 
     @Override
-    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
-            throws Exception {
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
         WebUser wu = buildUser(request);
         if (wu != null) {
             if (wu.getUser().getLastLoginTime() == null && request.getServletPath().startsWith("/mark/reset")) {
@@ -35,12 +36,20 @@ public class MarkInterceptor extends SessionInterceptor {
             } else if (wu.getMarkerId() == null && !request.getServletPath().startsWith("/mark/subject")) {
                 // 通用帐号未选择科目,首先选择强制选择评卷科目
                 return redirect(request, response, "/mark/subject-select");
+            } else if (request.getServletPath().startsWith("/mark/logout")) {
+                return true;
+            } else if (wu.getMarkerId() != null && wu.getMarker() == null) {
+                // 用户存在但评卷员解绑
+                return sessionExpireAjax(request, response, "/mark-login");
+            } else if (request.getServletPath().startsWith("/mark/logout")) {
+                return true;
             }
             return true;
         }
-        if (request.getServletPath().startsWith("/mark/subject-select") || request.getServletPath()
-                .startsWith("/mark/index") || request.getServletPath().startsWith("/mark/reset") || request
-                .getServletPath().startsWith("/mark/logout")) {
+        if (request.getServletPath().startsWith("/mark/subject-select")
+                || request.getServletPath().startsWith("/mark/index")
+                || request.getServletPath().startsWith("/mark/reset")
+                || request.getServletPath().startsWith("/mark/logout")) {
             return sessionExpire(request, response, "/mark-login");
         }
         return sessionExpireAjax(request, response, "/mark-login");
@@ -50,7 +59,10 @@ public class MarkInterceptor extends SessionInterceptor {
         WebUser wu = WebUser.buildFromSession(RequestUtils.getSession(request), userService);
         if (wu != null && wu.getRole().equals(Role.MARKER)) {
             if (wu.getMarkerId() != null) {
-                wu.setMarker(markerService.findById(wu.getMarkerId()));
+                Marker marker = markerService.findById(wu.getMarkerId());
+                if (marker != null) {
+                    wu.setMarker(marker);
+                }
             }
             RequestUtils.setWebUser(request, wu);
             return wu;