From e78a523bf9bc14136c3e09aff3333477dbfa5ea6 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期四, 04 七月 2024 15:38:16 +0800
Subject: [PATCH] 考试加时、强制收卷完善

---
 src/main/java/com/ycl/jxkg/domain/form/AddTimeForm.java      |    3 ++-
 src/main/java/com/ycl/jxkg/server/WebsocketServer.java       |   12 ++++++++++++
 src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java |    6 ++++++
 3 files changed, 20 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/ycl/jxkg/domain/form/AddTimeForm.java b/src/main/java/com/ycl/jxkg/domain/form/AddTimeForm.java
index 1e17bf1..3bef3ba 100644
--- a/src/main/java/com/ycl/jxkg/domain/form/AddTimeForm.java
+++ b/src/main/java/com/ycl/jxkg/domain/form/AddTimeForm.java
@@ -3,6 +3,7 @@
 import lombok.Data;
 
 import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
 
 /**
  * @author锛歺p
@@ -21,6 +22,6 @@
 
     /** 娣诲姞澶氬皯鏃堕棿锛氱 */
     @NotNull(message = "璇峰~鍐欏姞鏃剁鏁�")
-    private Integer addTimeSecond;
+    private BigDecimal addTimeM;
 
 }
diff --git a/src/main/java/com/ycl/jxkg/server/WebsocketServer.java b/src/main/java/com/ycl/jxkg/server/WebsocketServer.java
index 9886607..2c3a644 100644
--- a/src/main/java/com/ycl/jxkg/server/WebsocketServer.java
+++ b/src/main/java/com/ycl/jxkg/server/WebsocketServer.java
@@ -20,6 +20,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.concurrent.CopyOnWriteArraySet;
 
 /**
@@ -133,4 +134,15 @@
         }
     }
 
+    /**
+     * 鏍¢獙鐢ㄦ埛鏄惁鍦ㄧ嚎
+     *
+     * @param userId
+     * @return
+     */
+    public Boolean checkUserOnline(Integer userId) {
+        Session session = SESSION_POOL.get(userId);
+        return Objects.nonNull(session);
+    }
+
 }
diff --git a/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java
index 03ff2fa..1139c33 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java
@@ -885,6 +885,9 @@
         WebsocketDataVO websocket = new WebsocketDataVO();
         websocket.setCommend(WebsocketCommendEnum.DELAYED.getCommend());
         websocket.setData(form);
+        if (! websocketServer.checkUserOnline(form.getUserId())) {
+            throw new RuntimeException("璇ュ鍛樹笉鍦ㄧ嚎锛屾棤娉曟墽琛岃鎿嶄綔");
+        }
         // 鍙戦�亀ebsocket娑堟伅
         websocketServer.sendOneMessage(form.getUserId(), JSON.toJSONString(form));
         return Result.ok("鎿嶄綔鎴愬姛");
@@ -895,6 +898,9 @@
         WebsocketDataVO websocket = new WebsocketDataVO();
         websocket.setCommend(WebsocketCommendEnum.FORCE_SUBMIT.getCommend());
         websocket.setData(form);
+        if (! websocketServer.checkUserOnline(form.getUserId())) {
+            throw new RuntimeException("璇ュ鍛樹笉鍦ㄧ嚎锛屾棤娉曟墽琛岃鎿嶄綔");
+        }
         // 鍙戦�亀ebsocket娑堟伅
         websocketServer.sendOneMessage(form.getUserId(), JSON.toJSONString(form));
         return Result.ok("鎿嶄綔鎴愬姛");

--
Gitblit v1.8.0