| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- package cn.seecoder.ojserver.service.impl;
- import cn.seecoder.codejudge.client.JudgeDTO;
- import cn.seecoder.codejudge.client.JudgeResult;
- import cn.seecoder.ojserver.asyncPost.MQConsumer;
- import cn.seecoder.ojserver.dao.entity.Problem;
- import cn.seecoder.ojserver.dao.entity.TestCase;
- import cn.seecoder.ojserver.exception.ThirdPartyServiceException;
- import cn.seecoder.ojserver.manager.JudgeManager;
- import cn.seecoder.ojserver.manager.QuestionManager;
- import cn.seecoder.ojserver.model.vo.CodeJudgeVO;
- import cn.seecoder.ojserver.service.JudgeService;
- import cn.seecoder.ojserver.utils.PostHelper;
- import com.alibaba.fastjson.JSONObject;
- import com.nju.edu.paasMonitorClient.MonitorClient;
- import com.nju.edu.paasMonitorClient.entity.Call;
- import com.nju.edu.paasMonitorCommon.enums.SeecSystem;
- import okhttp3.*;
- import org.springframework.stereotype.Service;
- import com.alibaba.fastjson.JSON;
- import java.io.IOException;
- import java.util.List;
- import java.util.Map;
- import java.util.concurrent.TimeUnit;
- import java.util.stream.Collectors;
- @Service
- public class JudgeServiceImpl implements JudgeService {
- private final QuestionManager questionManager;
- private final JudgeManager judgeManager;
- public JudgeServiceImpl(QuestionManager questionManager, JudgeManager judgeManager) {
- this.questionManager = questionManager;
- this.judgeManager = judgeManager;
- }
- @Override
- public JudgeResult judgeCode(Integer questionId, CodeJudgeVO codeJudgeVO) {
- try {
- Call call = MonitorClient.createCall(SeecSystem.CODER,"ojtest119","buildJudge");
- call.start();
- JudgeDTO judgeDTO = new JudgeDTO();
- judgeDTO.setCode(codeJudgeVO.getCode());
- judgeDTO.setLanguage(codeJudgeVO.getLanguage());
- Problem problem = questionManager.getProblemById(questionId).get();
- List<TestCase> testCaseList = questionManager.getTestCaseByProblemId(questionId);
- judgeDTO.setMemoryLimit(problem.getMemoryLimit());
- judgeDTO.setTimeLimit(problem.getTimeLimit());
- List<String> inputList = testCaseList.stream().map(TestCase::getInput).collect(Collectors.toList());
- List<String> outputList = testCaseList.stream().map(TestCase::getOutput).collect(Collectors.toList());
- judgeDTO.setInputList(inputList);
- judgeDTO.setOutputList(outputList);
- call.end();
- return judgeManager.judgeCodeQuestionAnswers(judgeDTO);
- } catch (ThirdPartyServiceException exception) {
- throw exception;
- }
- }
- }
|