|
@@ -8,19 +8,20 @@ import com.qmth.themis.business.bean.mobile.MobileAuthorizationParamBean;
|
|
|
import com.qmth.themis.business.cache.ExamRecordCacheUtil;
|
|
|
import com.qmth.themis.business.cache.bean.ExamStudentCacheBean;
|
|
|
import com.qmth.themis.business.constant.SystemConstant;
|
|
|
-import com.qmth.themis.business.dto.WebsocketDto;
|
|
|
+import com.qmth.themis.business.dto.MqDto;
|
|
|
import com.qmth.themis.business.dto.cache.TEStudentCacheDto;
|
|
|
import com.qmth.themis.business.enums.ExamRecordStatusEnum;
|
|
|
-import com.qmth.themis.business.enums.WebsocketTypeEnum;
|
|
|
+import com.qmth.themis.business.enums.MqTagEnum;
|
|
|
+import com.qmth.themis.business.service.MqDtoService;
|
|
|
import com.qmth.themis.business.service.TEExamService;
|
|
|
import com.qmth.themis.business.service.TEExamStudentService;
|
|
|
import com.qmth.themis.business.service.TEMobileService;
|
|
|
+import com.qmth.themis.business.util.MqUtil;
|
|
|
import com.qmth.themis.business.util.ServletUtil;
|
|
|
import com.qmth.themis.common.enums.ExceptionResultEnum;
|
|
|
import com.qmth.themis.common.exception.BusinessException;
|
|
|
import com.qmth.themis.common.util.Result;
|
|
|
import com.qmth.themis.common.util.ResultUtil;
|
|
|
-import com.qmth.themis.exam.websocket.WebSocketOeServer;
|
|
|
import io.swagger.annotations.*;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
@@ -30,8 +31,6 @@ import javax.annotation.Resource;
|
|
|
import java.security.NoSuchAlgorithmException;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.Map;
|
|
|
-import java.util.Objects;
|
|
|
-import java.util.concurrent.ConcurrentHashMap;
|
|
|
|
|
|
@Api(tags = "移动端接口")
|
|
|
@RestController
|
|
@@ -47,6 +46,11 @@ public class TEMobileController {
|
|
|
@Resource
|
|
|
TEExamStudentService examStudentService;
|
|
|
|
|
|
+ @Resource
|
|
|
+ MqUtil mqUtil;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ MqDtoService mqDtoService;
|
|
|
|
|
|
@ApiOperation(value = "获取登录详细信息")
|
|
|
@RequestMapping(value = "/authorization", method = RequestMethod.POST)
|
|
@@ -83,23 +87,17 @@ public class TEMobileController {
|
|
|
if (ExamRecordStatusEnum.FINISHED.equals(sta) || ExamRecordStatusEnum.PERSISTED.equals(sta)) {
|
|
|
throw new BusinessException(ExceptionResultEnum.NOT_FOUND_EXAM_STUDENT);
|
|
|
}
|
|
|
- ConcurrentHashMap<String, WebSocketOeServer> webSocketMap = WebSocketOeServer.getWebSocketMap();
|
|
|
- String clientWebsocketId = ExamRecordCacheUtil.getClientWebsocketId(param.getRecordId());
|
|
|
- WebSocketOeServer webSocketOeServer = webSocketMap.get(clientWebsocketId);
|
|
|
- if (webSocketOeServer == null) {
|
|
|
- throw new BusinessException("消息连接不存在");
|
|
|
- }
|
|
|
- if (Objects.nonNull(webSocketOeServer.getRecordId()) && webSocketOeServer.getRecordId().longValue() == param.getRecordId().longValue()) {
|
|
|
- Map<String, Object> map = new HashMap<String, Object>();
|
|
|
- map.put("recordId", param.getRecordId());
|
|
|
- map.put("mainNumber", param.getMainNumber());
|
|
|
- map.put("subNumber", param.getSubNumber());
|
|
|
- if (param.getSubIndex() != null) {
|
|
|
- map.put("subIndex", param.getSubIndex());
|
|
|
- }
|
|
|
- WebsocketDto websocketDto = new WebsocketDto(WebsocketTypeEnum.MOBILE_ANSWER_READY.name(), map);
|
|
|
- webSocketOeServer.sendMessage(websocketDto);
|
|
|
+
|
|
|
+ TEStudentCacheDto teStudent = (TEStudentCacheDto) ServletUtil.getRequestStudentAccount();
|
|
|
+ Map<String, Object> mapParameter = new HashMap<String, Object>();
|
|
|
+ mapParameter.put("recordId", param.getRecordId());
|
|
|
+ mapParameter.put("mainNumber", param.getMainNumber());
|
|
|
+ mapParameter.put("subNumber", param.getSubNumber());
|
|
|
+ if (param.getSubIndex() != null) {
|
|
|
+ mapParameter.put("subIndex", param.getSubIndex());
|
|
|
}
|
|
|
+ MqDto mqDto = new MqDto(mqUtil.getMqGroupDomain().getTopic(), MqTagEnum.OE_WEBSOCKET_MOBILE_ANSWER_READY.name(), param.getRecordId(), MqTagEnum.OE_WEBSOCKET_MOBILE_ANSWER_READY, String.valueOf(teStudent.getId()), mapParameter, teStudent.getName());
|
|
|
+ mqDtoService.assembleSendOneWayMsg(mqDto);
|
|
|
ExamStudentCacheBean es = examStudentService.getExamStudentCacheBean(esId);
|
|
|
AnswerReadyResponseBean ret = new AnswerReadyResponseBean();
|
|
|
ret.setCourseName(es.getCourseName());
|
|
@@ -137,24 +135,17 @@ public class TEMobileController {
|
|
|
}
|
|
|
MobileAnswerSubmitReponseBean ret = mobileService.answerSubmit(teStudent.getId(), param.getRecordId(), param.getMainNumber(),
|
|
|
param.getSubNumber(), param.getSubIndex(), param.getUrls());
|
|
|
- String clientWebsocketId = ExamRecordCacheUtil.getClientWebsocketId(param.getRecordId());
|
|
|
- ConcurrentHashMap<String, WebSocketOeServer> webSocketMap = WebSocketOeServer.getWebSocketMap();
|
|
|
- if (Objects.nonNull(webSocketMap.get(clientWebsocketId))) {
|
|
|
- WebSocketOeServer webSocketOeServer = webSocketMap.get(clientWebsocketId);
|
|
|
- if (Objects.nonNull(webSocketOeServer.getRecordId()) && webSocketOeServer.getRecordId().longValue() == param.getRecordId().longValue()) {
|
|
|
- Map<String, Object> map = new HashMap<String, Object>();
|
|
|
- map.put(SystemConstant.RECORD_ID, param.getRecordId());
|
|
|
- map.put("mainNumber", param.getMainNumber());
|
|
|
- map.put("subNumber", param.getSubNumber());
|
|
|
- if (param.getSubIndex() != null) {
|
|
|
- map.put("subIndex", param.getSubIndex());
|
|
|
- }
|
|
|
- map.put("urls", param.getUrls());
|
|
|
- WebsocketDto websocketDto = new WebsocketDto(WebsocketTypeEnum.MOBILE_ANSWER_UPLOAD.name(), map);
|
|
|
- webSocketOeServer.sendMessage(websocketDto);
|
|
|
- }
|
|
|
+ Map<String, Object> mapParameter = new HashMap<String, Object>();
|
|
|
+ mapParameter.put(SystemConstant.RECORD_ID, param.getRecordId());
|
|
|
+ mapParameter.put("mainNumber", param.getMainNumber());
|
|
|
+ mapParameter.put("subNumber", param.getSubNumber());
|
|
|
+ if (param.getSubIndex() != null) {
|
|
|
+ mapParameter.put("subIndex", param.getSubIndex());
|
|
|
}
|
|
|
+ mapParameter.put("urls", param.getUrls());
|
|
|
+
|
|
|
+ MqDto mqDto = new MqDto(mqUtil.getMqGroupDomain().getTopic(), MqTagEnum.OE_WEBSOCKET_MOBILE_ANSWER_UPLOAD.name(), param.getRecordId(), MqTagEnum.OE_WEBSOCKET_MOBILE_ANSWER_READY, String.valueOf(teStudent.getId()), mapParameter, teStudent.getName());
|
|
|
+ mqDtoService.assembleSendOneWayMsg(mqDto);
|
|
|
return ResultUtil.ok(ret);
|
|
|
}
|
|
|
-
|
|
|
}
|