Prechádzať zdrojové kódy

[学员]登录成功后调用。

tom 2 mesiacov pred
rodič
commit
76434edad6

+ 6 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/controller/RealExamController.java

@@ -130,6 +130,12 @@ public class RealExamController extends BaseController {
         return realExamService.studentLoopPostRealExam(examId);
     }
 
+    @GetMapping("/student/exam/login-success")
+    @ApiOperation("[学员]登录成功后调用")
+    public AjaxResult studentLoginSuccess(@RequestParam final Long userId, @RequestParam final String ip) {
+        return realExamService.studentLoginSuccess(userId, ip);
+    }
+
     //    @GetMapping(value = "/student/{examId}")
 //    @ApiOperation("[学生][轮询]获取考试详细信息")
     public AjaxResult getInfoStudent(@PathVariable("examId") Long examId) {

+ 6 - 3
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/CommSendService.java

@@ -388,7 +388,11 @@ public class CommSendService {
      */
     public SimMsg debugClearOneFault(final Long seatId, final String bindHardwareMsg) {
         Seat seat = seatService.selectSeatBySeatId(seatId);
-        Sim sim = getSimBySeatIdNewVer(seatId);
+
+        // Sim sim = getSimBySeatIdNewVer(seatId);
+        // 不需要重复调用 getSimBySeatIdNewVer。
+
+        Sim sim = simService.selectSimBySimId(seat.getCurrentSimId());
         SimMsg sm = commBuildService.buildSendMsgClearFault(sim.getSimNum(), bindHardwareMsg);
         return send(sm, seat, sim, RETRY_COUNT_CLEAR_ONE_FAULT, commStrategy.getSleepLong());
     }
@@ -426,7 +430,6 @@ public class CommSendService {
      * @param seatId
      * @return
      */
-    @Transactional
     public AjaxResult debugClearAllFaultBySeatId(final Long seatId) {
         {
             AjaxResult ar = debugCheckSeatId(seatId);
@@ -1079,6 +1082,6 @@ public class CommSendService {
 
         // 删除debug表中所有数据。
         debugFaultService.deleteAll();
-        return AjaxResult.success("全部重置成功。老铁666!");
+        return AjaxResult.success("全部重置成功。");
     }
 }

+ 26 - 2
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/RealExamService.java

@@ -669,7 +669,31 @@ public class RealExamService {
      * @return
      */
     public AjaxResult studentLoginSuccess(final Long userId, final String ip) {
-        
-        return AjaxResult.success();
+        RealExamCollection rec = realExamCollectionService.selectRealExamCollectionOpened();
+        if (rec == null || rec.getExamCollectionId() == 0L) {
+            return AjaxResult.success("没有打开的考试集合");
+        }
+        RealExam q = new RealExam();
+        q.setUserId(userId);
+        q.setExamCollectionId(rec.getExamCollectionId());
+        List<RealExam> list = selectRealExamList(q);
+        if (list.isEmpty()) {
+            return AjaxResult.success("没有学生考试数据");
+        }
+        if (list.size() == 1) {
+            RealExam re = list.get(0);
+            if (StringUtils.equals(re.getExamStatus(), RealExam.State.NOT_LOGGED_IN) ||
+                    StringUtils.equals(re.getExamStatus(), RealExam.State.LOGGED_IN)) {
+                Seat s = seatService.uniqueByBindIp(ip);
+                if (s == null || s.getSeatId() == 0L) {
+                    return AjaxResult.success("没有座次信息");
+                }
+                re.setSeatId(s.getSeatId());
+                re.setExamStatus(RealExam.State.LOGGED_IN);
+                updateRealExam(re);
+                return AjaxResult.success("成功");
+            }
+        }
+        return AjaxResult.success("考试数据错误");
     }
 }