Selaa lähdekoodia

Merge branch 'dev'
1

wangliang 4 vuotta sitten
vanhempi
commit
3bdcd4f5af

+ 0 - 3
themis-backend/src/main/java/com/qmth/themis/backend/websocket/WebSocketAdminServer.java

@@ -103,12 +103,9 @@ public class WebSocketAdminServer
                     if (webSocketMap.containsKey(this.userId)) {
                         webSocketMap.remove(this.userId);
                         webSocketMap.put(this.userId, this);
-                        //加入set中
                     } else {
                         webSocketMap.put(this.userId, this);
-                        //加入set中
                         addOnlineCount();
-                        //在线数加1
                     }
                     //发送恢复网络mq消息
                     log.info("用户连接:" + this.sessionId + ",当前在线人数为:" + getOnlineCount());

+ 20 - 31
themis-exam/src/main/java/com/qmth/themis/exam/websocket/WebSocketMobileServer.java

@@ -8,7 +8,6 @@ import com.qmth.themis.business.constant.SystemConstant;
 import com.qmth.themis.business.dto.MqDto;
 import com.qmth.themis.business.dto.WebsocketDto;
 import com.qmth.themis.business.entity.TBSession;
-import com.qmth.themis.business.enums.ExamRecordStatusEnum;
 import com.qmth.themis.business.enums.MonitorStatusSourceEnum;
 import com.qmth.themis.business.enums.MonitorVideoSourceEnum;
 import com.qmth.themis.business.enums.WebsocketTypeEnum;
@@ -20,7 +19,6 @@ import com.qmth.themis.common.enums.ExceptionResultEnum;
 import com.qmth.themis.common.exception.BusinessException;
 import com.qmth.themis.common.signature.SignatureInfo;
 import com.qmth.themis.common.signature.SignatureType;
-import com.qmth.themis.exam.config.ExamConstant;
 import com.qmth.themis.exam.listener.service.MqOeLogicService;
 import com.qmth.themis.exam.websocketTemplete.WebSocketMobileMessageTemplete;
 import com.qmth.themis.mq.templete.Concurrently;
@@ -102,36 +100,27 @@ public class WebSocketMobileServer implements Concurrently {
             } else {
                 if (info.validate(tbSession.getAccessToken()) && info.getTimestamp() < tbSession.getExpireTime().getTime()
                         && platform.equalsIgnoreCase(tbSession.getPlatform()) && Objects.equals(deviceId, tbSession.getDeviceId())) {
-//                    ExamRecordStatusEnum status = ExamRecordCacheUtil.getStatus(this.recordId);
-//                    if (Objects.nonNull(status) && Objects.equals(ExamRecordStatusEnum.BREAK_OFF, status)) {//如果是已中断状态,则给客户端和移动端发送考试停止的消息
-//                        ExamConstant.sendExamStopMsg(recordId);
-//                        throw new BusinessException("考试已中断,请重新登录");
-//                    } else {
-                        this.session = session;
-                        session.setMaxIdleTimeout(SystemConstant.WEBSOCKET_MAX_TIME_OUT);
-                        this.sessionId = tbSession.getId();
-                        if (webSocketMap.containsKey(this.recordId + "-" + this.source.name())) {
-                            webSocketMap.remove(this.recordId + "-" + this.source.name());
-                            webSocketMap.put(this.recordId + "-" + this.source.name(), this);
-                            //加入set中
-                        } else {
-                            webSocketMap.put(this.recordId + "-" + this.source.name(), this);
-                            //加入set中
-                            addOnlineCount();
-                            //在线数加1
-                        }
-                        log.info("用户连接:" + this.sessionId + ",当前在线人数为:" + getOnlineCount());
-                        InetSocketAddress addr = (InetSocketAddress) WebsocketUtil.getFieldInstance(this.session.getAsyncRemote(), "base#socketWrapper#socket#sc#remoteAddress");
-                        this.ip = addr.toString().replace("/", "").split(":")[0];
+                    this.session = session;
+                    session.setMaxIdleTimeout(SystemConstant.WEBSOCKET_MAX_TIME_OUT);
+                    this.sessionId = tbSession.getId();
+                    if (webSocketMap.containsKey(this.recordId + "-" + this.source.name())) {
+                        webSocketMap.remove(this.recordId + "-" + this.source.name());
+                        webSocketMap.put(this.recordId + "-" + this.source.name(), this);
+                    } else {
+                        webSocketMap.put(this.recordId + "-" + this.source.name(), this);
+                        addOnlineCount();
+                    }
+                    log.info("用户连接:" + this.sessionId + ",当前在线人数为:" + getOnlineCount());
+                    InetSocketAddress addr = (InetSocketAddress) WebsocketUtil.getFieldInstance(this.session.getAsyncRemote(), "base#socketWrapper#socket#sc#remoteAddress");
+                    this.ip = addr.toString().replace("/", "").split(":")[0];
 //                    this.sendMessage("ip[" + this.ip + "]连接成功");
-                        log.info("ip[:{}]连接成功", this.ip);
-                        tranMap = new HashMap<>();
-                        tranMap.put("recordId", this.recordId);
-                        tranMap.put("deviceId", this.deviceId);
-                        tranMap.put("ip", this.ip);
-                        this.updateTime = System.currentTimeMillis();
-                        tranMap.put("updateTime", this.updateTime);
-//                    }
+                    log.info("ip[:{}]连接成功", this.ip);
+                    tranMap = new HashMap<>();
+                    tranMap.put("recordId", this.recordId);
+                    tranMap.put("deviceId", this.deviceId);
+                    tranMap.put("ip", this.ip);
+                    this.updateTime = System.currentTimeMillis();
+                    tranMap.put("updateTime", this.updateTime);
                 } else {
                     throw new BusinessException(ExceptionResultEnum.AUTHORIZATION_ERROR);
                 }

+ 9 - 19
themis-exam/src/main/java/com/qmth/themis/exam/websocket/WebSocketOeServer.java

@@ -102,40 +102,30 @@ public class WebSocketOeServer implements Concurrently {
             } else {
                 if (info.validate(tbSession.getAccessToken()) && info.getTimestamp() < tbSession.getExpireTime().getTime()
                         && platform.equalsIgnoreCase(tbSession.getPlatform()) && Objects.equals(deviceId, tbSession.getDeviceId())) {
-                    ExamRecordStatusEnum status = ExamRecordCacheUtil.getStatus(this.recordId);
-//                    if (Objects.nonNull(status) && Objects.equals(ExamRecordStatusEnum.BREAK_OFF, status)) {//如果是已中断状态,则给客户端和移动端发送考试停止的消息
-//                        ExamConstant.sendExamStopMsg(recordId);
-//                        throw new BusinessException("考试已中断,请重新登录");
-//                    } else {
                     this.session = session;
                     session.setMaxIdleTimeout(SystemConstant.WEBSOCKET_MAX_TIME_OUT);
                     this.sessionId = tbSession.getId();
                     if (webSocketMap.containsKey(this.recordId)) {
                         webSocketMap.remove(this.recordId);
                         webSocketMap.put(this.recordId, this);
-                        //加入set中
                     } else {
                         webSocketMap.put(this.recordId, this);
-                        //加入set中
                         addOnlineCount();
-                        //在线数加1
                     }
                     log.info("用户连接:" + this.sessionId + ",当前在线人数为:" + getOnlineCount());
                     InetSocketAddress addr = (InetSocketAddress) WebsocketUtil.getFieldInstance(this.session.getAsyncRemote(), "base#socketWrapper#socket#sc#remoteAddress");
                     this.ip = addr.toString().replace("/", "").split(":")[0];
 //                    this.sendMessage("ip[" + this.ip + "]连接成功");
                     log.info("ip[:{}]连接成功", this.ip);
-//                    if (!Objects.equals(ExamRecordStatusEnum.FINISHED, status)) {
-                        ExamRecordCacheUtil.setClientWebsocketStatus(recordId, WebsocketStatusEnum.ON_LINE, false);
-                        ExamRecordCacheUtil.setClientCurrentIp(recordId, this.ip, false);
-                        ExamRecordCacheUtil.setClientWebsocketId(recordId, this.session.getId(), false);
-                        Date clientLastSyncTime = new Date();
-                        ExamRecordCacheUtil.setClientLastSyncTime(recordId, clientLastSyncTime, false);
-                        String[] columns = new String[]{ExamRecordFieldEnum.client_websocket_status.name(), ExamRecordFieldEnum.client_current_ip.name(), ExamRecordFieldEnum.client_websocket_id.name(), ExamRecordFieldEnum.client_last_sync_time.name()};
-                        Object[] values = new Object[]{WebsocketStatusEnum.ON_LINE, this.ip, this.session.getId(), clientLastSyncTime};
-                        TOeExamRecordService tOeExamRecordService = SpringContextHolder.getBean(TOeExamRecordService.class);
-                        tOeExamRecordService.dataUpdatesMq(recordId, columns, values);
-//                    }
+                    ExamRecordCacheUtil.setClientWebsocketStatus(recordId, WebsocketStatusEnum.ON_LINE, false);
+                    ExamRecordCacheUtil.setClientCurrentIp(recordId, this.ip, false);
+                    ExamRecordCacheUtil.setClientWebsocketId(recordId, this.session.getId(), false);
+                    Date clientLastSyncTime = new Date();
+                    ExamRecordCacheUtil.setClientLastSyncTime(recordId, clientLastSyncTime, false);
+                    String[] columns = new String[]{ExamRecordFieldEnum.client_websocket_status.name(), ExamRecordFieldEnum.client_current_ip.name(), ExamRecordFieldEnum.client_websocket_id.name(), ExamRecordFieldEnum.client_last_sync_time.name()};
+                    Object[] values = new Object[]{WebsocketStatusEnum.ON_LINE, this.ip, this.session.getId(), clientLastSyncTime};
+                    TOeExamRecordService tOeExamRecordService = SpringContextHolder.getBean(TOeExamRecordService.class);
+                    tOeExamRecordService.dataUpdatesMq(recordId, columns, values);
                     tranMap = new HashMap<>();
                     tranMap.put("recordId", this.recordId);
                     tranMap.put("deviceId", this.deviceId);