#1 修改dockerfile

Отворено
XuRenJie жели да споји 11 комит(е) из XuRenJie/internal-paas у TianChenjiang/master

+ 12 - 4
Dockerfile

@@ -1,12 +1,20 @@
 FROM maven:3.6.1 AS compile_stage
 ENV PROJECT_NAME app
 ENV WORK_PATH /opt/$PROJECT_NAME
-COPY settings.xml /root/.m2/settings.xml
-COPY . $WORK_PATH
-RUN cd $WORK_PATH && mvn clean install -DskipTests -DfinalName=$PROJECT_NAME
+# 项目所在的git分支
+ENV GIT_BRANCH internal-paas
+ENV GIT_URL http://gogs.seec.seecoder.cn/XuRenJie/seecoder-eval.git
 
+# 跳转到工作目录
+WORKDIR $WORK_PATH
+RUN git clone --branch $GIT_BRANCH $GIT_URL .
+RUN mkdir /root/.m2 && cp settings.xml /root/.m2/settings.xml
+RUN mvn clean install -DskipTests -DfinalName=$PROJECT_NAME
+COPY . .
+# 多线程下载依赖,只要pom文件不改变,依赖不会重复下载
+RUN mvn clean install -DskipTests -DfinalName=$PROJECT_NAME
 
-FROM adoptopenjdk/openjdk11:alpine-jre
+FROM seecjdk/adoptzh-jre
 ENV PROJECT_NAME app
 ENV WORK_PATH /opt/$PROJECT_NAME
 WORKDIR /app

+ 3 - 20
pom.xml

@@ -126,14 +126,14 @@
 		<dependency>
 			<groupId>cn.seecoder</groupId>
 			<artifactId>judgement-common</artifactId>
-			<version>0.2.0</version>
+			<version>0.1.0</version>
 			<scope>compile</scope>
 		</dependency>
 
 		<dependency>
 			<groupId>cn.seecoder</groupId>
 			<artifactId>judgement-client</artifactId>
-			<version>0.2.0</version>
+			<version>0.1.0</version>
 			<exclusions>
 				<exclusion>
 					<groupId>org.apache.logging.log4j</groupId>
@@ -146,7 +146,7 @@
 		<dependency>
 			<groupId>cn.seecoder</groupId>
 			<artifactId>codejudge-client</artifactId>
-			<version>0.2.0</version>
+			<version>0.1.0</version>
 			<exclusions>
 				<exclusion>
 					<groupId>org.apache.logging.log4j</groupId>
@@ -155,19 +155,6 @@
 			</exclusions>
 		</dependency>
 
-		<!--日志服务-->
-		<dependency>
-			<groupId>com.nju.edu</groupId>
-			<artifactId>seecoder-logTracking-client</artifactId>
-			<version>0.1.0</version>
-			<exclusions>
-				<exclusion>
-					<groupId>org.slf4j</groupId>
-					<artifactId>slf4j-log4j12</artifactId>
-				</exclusion>
-			</exclusions>
-		</dependency>
-
 		<dependency>
 			<groupId>org.slf4j</groupId>
 			<artifactId>slf4j-api</artifactId>
@@ -188,10 +175,6 @@
 
 	<build>
 		<plugins>
-			<plugin>
-				<groupId>org.springframework.boot</groupId>
-				<artifactId>spring-boot-maven-plugin</artifactId>
-			</plugin>
 			<plugin>
 				<groupId>org.springframework.boot</groupId>
 				<artifactId>spring-boot-maven-plugin</artifactId>

+ 1 - 1
src/main/java/com/nju/edu/eval/data/entity/Score.java

@@ -39,7 +39,7 @@ public class Score {
     /**
      * 本次考试排名
      */
-    private int rank = 0;
+    private int studentRank = 0;
 
     /**
      * 第一次提交时间

+ 1 - 1
src/main/java/com/nju/edu/eval/model/vo/score/PersonalScoreReportVO.java

@@ -22,7 +22,7 @@ public class PersonalScoreReportVO implements Serializable {
 
     private Double score;
 
-    private Integer rank;
+    private Integer studentRank;
 
     private Date submitTime;
 

+ 0 - 1
src/main/java/com/nju/edu/eval/service/serviceImpl/JudgeServiceImpl.java

@@ -27,7 +27,6 @@ import com.nju.edu.eval.model.vo.question.CompleteQuestionVO;
 import com.nju.edu.eval.publicdatas.enums.CodeJudgeResultType;
 import com.nju.edu.eval.service.JudgeService;
 import com.nju.edu.eval.util.LogTracingUtil;
-import com.nju.edu.logTracking.enums.SeecSystem;
 import org.apache.logging.log4j.LogBuilder;
 import org.slf4j.Logger;
 import org.springframework.stereotype.Service;

+ 22 - 4
src/main/java/com/nju/edu/eval/service/serviceImpl/RecordServiceImpl.java

@@ -1,6 +1,8 @@
 package com.nju.edu.eval.service.serviceImpl;
 
+import com.nju.edu.eval.data.dao.ExamDao;
 import com.nju.edu.eval.data.dao.RecordDao;
+import com.nju.edu.eval.data.entity.Exam;
 import com.nju.edu.eval.data.entity.QuestionRecord;
 import com.nju.edu.eval.model.vo.record.QuestionRecordVO;
 import com.nju.edu.eval.service.RecordService;
@@ -8,8 +10,10 @@ import com.nju.edu.eval.service.convertor.RecordConvertor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
-import java.util.stream.Collector;
+import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -18,9 +22,13 @@ import java.util.stream.Collectors;
 @Service
 public class RecordServiceImpl implements RecordService {
     private final RecordDao recordDao;
+
+    private final ExamDao examDao;
+
     @Autowired
-    public RecordServiceImpl(RecordDao recordDao) {
+    public RecordServiceImpl(RecordDao recordDao, ExamDao examDao) {
         this.recordDao = recordDao;
+        this.examDao = examDao;
     }
 
     @Override
@@ -31,8 +39,18 @@ public class RecordServiceImpl implements RecordService {
 
     @Override
     public List<QuestionRecordVO> getQuestionRecordsOfExamByUserId(Integer userId, Integer examId){
-        return recordDao.findAllByUserIdAndExamId(userId, examId)
-                .stream().map(RecordConvertor::convertToVO).collect(Collectors.toList());
+        //获取到对应考试的所有题目信息
+        Map<String, Double> questionAndScore = Objects.requireNonNull(examDao.findById(examId).orElse(null)).getQuestionAndScore();
+        //questionRecords为按时间逆序排列的学生做题记录
+        List<QuestionRecord> questionRecords = recordDao.findAllByUserIdAndExamId(userId, examId);
+        List<QuestionRecord> filterRecords = new ArrayList<>();
+        for(QuestionRecord record:questionRecords){
+            filterRecords.add(record);
+            if(filterRecords.size()>=questionAndScore.size()){
+                break;
+            }
+        }
+        return filterRecords.stream().map(RecordConvertor::convertToVO).collect(Collectors.toList());
     }
 
     @Override

+ 13 - 12
src/main/java/com/nju/edu/eval/thirdparty/thirdpartyImpl/CodeJudgeThirdPartyServiceImpl.java

@@ -16,24 +16,25 @@ import java.util.Optional;
  */
 @Component
 public class CodeJudgeThirdPartyServiceImpl implements com.nju.edu.eval.thirdparty.CodeJudgeThirdPartyService {
-    @Value("${code-judgement-client.host}")
-    private String host;
-
-    private CodeJudgeClient client;
+//    @Value("${code-judgement-client.host}")
+//    private String host;
+//
+//    private CodeJudgeClient client;
 
     @PostConstruct
     public void init() {
-        client = new CodeJudgeClient(host);
+//        client = new CodeJudgeClient(host);
     }
 
     @Override
     public Optional<JudgeResult> judgeCodeQuestionAnswers(JudgeDTO judgeDTO) {
-        try {
-            judgeDTO.setTimeLimit(1000);
-            System.out.println(judgeDTO);
-            return Optional.of(client.judge(judgeDTO));
-        } catch (CodeJudgeSystemException judgementException) {
-            return Optional.empty();
-        }
+//        try {
+//            judgeDTO.setTimeLimit(1000);
+//            System.out.println(judgeDTO);
+//            return Optional.of(client.judge(judgeDTO));
+//        } catch (CodeJudgeSystemException judgementException) {
+//            return Optional.empty();
+//        }
+        return Optional.empty();
     }
 }

+ 44 - 47
src/main/java/com/nju/edu/eval/util/LogTracingUtil.java

@@ -1,14 +1,11 @@
 package com.nju.edu.eval.util;
 
-import Utils.LogBuilder;
-import client.LogTrackingClient;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.nju.edu.eval.data.entity.Exam;
 import com.nju.edu.eval.model.vo.logdata.AnswerDTO;
 import com.nju.edu.eval.model.vo.logdata.ExamLog;
 import com.nju.edu.eval.model.vo.logdata.ExamRecordLog;
-import com.nju.edu.logTracking.enums.SeecSystem;
 import lombok.extern.slf4j.Slf4j;
 import org.slf4j.Logger;
 
@@ -22,58 +19,58 @@ public class LogTracingUtil {
     private static final Logger logger = LoggerUtil.getLogger(LogTracingUtil.class);
 
     public static void logToAnalysis(String data, int type, String message) {
-        // String data = "This is an example";
-
-        //此为logBuilder,若不想使用也可自己构建log
-        //注:此logBuilder在调用build方法时会自动添加created_time属性,值为当前时间戳
-
-        String logData = "";
-
-        try {
-            logData= LogBuilder
-                    .getBuilder()
-                    .target(SeecSystem.SMART) // 等待分配enum后修改
-                    .source(SeecSystem.EVAL)
-                    .operationType(type)
-                    .data(data)
-                    .message(message)
-                    .build();
-
-            //最简单使用方法,默认为medium级别
-            LogTrackingClient
-                    .getClient()
-                    .log(logData)
-                    .publish();
-
-            //            LoggerUtil.info(logger, logData);
-            LoggerUtil.info(logger, "SMART --> " + logData);
-
-        }catch(Exception e){
-            LoggerUtil.info(logger, "SMART --> " + logData);
-            e.printStackTrace();
-        }
+//        // String data = "This is an example";
+//
+//        //此为logBuilder,若不想使用也可自己构建log
+//        //注:此logBuilder在调用build方法时会自动添加created_time属性,值为当前时间戳
+//
+//        String logData = "";
+//
+//        try {
+//            logData= LogBuilder
+//                    .getBuilder()
+//                    .target(SeecSystem.SMART) // 等待分配enum后修改
+//                    .source(SeecSystem.EVAL)
+//                    .operationType(type)
+//                    .data(data)
+//                    .message(message)
+//                    .build();
+//
+//            //最简单使用方法,默认为medium级别
+//            LogTrackingClient
+//                    .getClient()
+//                    .log(logData)
+//                    .publish();
+//
+//            //            LoggerUtil.info(logger, logData);
+//            LoggerUtil.info(logger, "SMART --> " + logData);
+//
+//        }catch(Exception e){
+//            LoggerUtil.info(logger, "SMART --> " + logData);
+//            e.printStackTrace();
+//        }
     }
 
     public static void logExam(Exam exam, int type) {
-        try {
-            List<AnswerDTO> answerDTOS = exam.getQuestionAndScore().entrySet().stream().
-                    map(et -> new AnswerDTO(et.getKey(), et.getValue())).collect(Collectors.toList());
-            double totalGrade = exam.getQuestionAndScore().values().stream().collect(Collectors.summarizingInt(x -> x.intValue())).getSum();
-
-            ExamLog examLog = new ExamLog(exam.getId(), totalGrade, answerDTOS, exam.getDifficulty(), new Date(), exam.getStartTime(), exam.getEndTime());
-
-            logToAnalysis(JSON.toJSONStringWithDateFormat(examLog, "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteDateUseDateFormat), type, "exam data");
-        }catch (Exception e){
-            System.out.println("构建日志数据失败");
-            e.printStackTrace();
-        }
+//        try {
+//            List<AnswerDTO> answerDTOS = exam.getQuestionAndScore().entrySet().stream().
+//                    map(et -> new AnswerDTO(et.getKey(), et.getValue())).collect(Collectors.toList());
+//            double totalGrade = exam.getQuestionAndScore().values().stream().collect(Collectors.summarizingInt(x -> x.intValue())).getSum();
+//
+//            ExamLog examLog = new ExamLog(exam.getId(), totalGrade, answerDTOS, exam.getDifficulty(), new Date(), exam.getStartTime(), exam.getEndTime());
+//
+//            logToAnalysis(JSON.toJSONStringWithDateFormat(examLog, "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteDateUseDateFormat), type, "exam data");
+//        }catch (Exception e){
+//            System.out.println("构建日志数据失败");
+//            e.printStackTrace();
+//        }
     }
 
     public static void logRecord(ExamRecordLog examRecordLog) {
-        logToAnalysis(JSON.toJSONStringWithDateFormat(examRecordLog, "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteDateUseDateFormat), 2, "record data");
+//        logToAnalysis(JSON.toJSONStringWithDateFormat(examRecordLog, "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteDateUseDateFormat), 2, "record data");
     }
 
     public static void logSimple(String log) {
-        logger.info(log);
+//        logger.info(log);
     }
 }

+ 6 - 0
src/main/java/com/nju/edu/eval/web/controller/UserController.java

@@ -40,4 +40,10 @@ public class UserController {
     public Response getUsersByExamId(@PathVariable Integer examId) {
         return Response.buildSuccess(userService.getUsersByExamId(examId));
     }
+
+    @GetMapping("/test")
+    @Authorized()
+    public String test(){
+        return "hello";
+    }
 }

+ 0 - 3
src/main/resources/application.yml

@@ -1,3 +0,0 @@
-spring:
-  profiles:
-    active: prod