yyy2015 il y a 7 ans
Parent
commit
492ca3754c

+ 30 - 1
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/GeneralCalculateScoreLogic.java

@@ -1,5 +1,8 @@
 package cn.iselab.mooctest.site.web.logic;
 
+import cn.iselab.mooctest.site.web.logic.strategy.TypeScoreStrategy;
+import java.util.List;
+
 /**
  * general calculate score logic
  *
@@ -9,7 +12,7 @@ package cn.iselab.mooctest.site.web.logic;
 public interface GeneralCalculateScoreLogic {
 
   /**
-   * 计算一场考试中一道题的每种类型的node得分
+   * 计算一场考试中一道题的得分
    * @param taskId 考试id
    * @param caseId 题目id
    * @param userId 考生id 考生id为null时,计算所有人的分数
@@ -17,4 +20,30 @@ public interface GeneralCalculateScoreLogic {
   void calculateScore(long taskId, long caseId, Long userId);
 
 
+  /**
+   * 以流水形式记录一场考试中一道题的每种类型的得分
+   * @param examId 考试id
+   * @param caseId  题目id
+   * @param userId   考生id
+   */
+  void recordTypeScore(long examId, long caseId, Long userId, String uploadTime);
+
+  /**
+   * 计算该用户一个case的得分
+   * @param examId 考试id
+   * @param caseId  题目id
+   * @param userId  考生id
+   * @param strategy 算分策略
+   */
+  void calculateCaseScore(long examId, long caseId, Long userId, TypeScoreStrategy strategy);
+
+  /**
+   * 计算所有考生一个case的得分
+   * @param examId 考试id
+   * @param caseId  题目id
+   * @param strategy 算分策略
+   */
+  void calculateCaseScore(long examId, long caseId, TypeScoreStrategy strategy);
+
+
 }

+ 5 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/GeneralCalculateScoreComponent.java

@@ -77,6 +77,11 @@ public class GeneralCalculateScoreComponent {
 
     }
 
+
+    public void recordTypeScore(long examId, long caseId, Long userId, String uploadTime){
+
+    }
+
     private void saveGrade(long workerId, long taskId, long caseId, double score) {
         submitRecordService.addCase(taskId, caseId, workerId, "");
         submitRecordService.recordScore(taskId, caseId, workerId, score);

+ 18 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/GeneralCalculateScoreLogicImpl.java

@@ -7,6 +7,7 @@ import cn.iselab.mooctest.site.service.GeneralCalculateScoreService;
 import cn.iselab.mooctest.site.service.UserCatchService;
 import cn.iselab.mooctest.site.service.WeightGeneralService;
 import cn.iselab.mooctest.site.web.logic.GeneralCalculateScoreLogic;
+import cn.iselab.mooctest.site.web.logic.strategy.TypeScoreStrategy;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -42,4 +43,21 @@ public class GeneralCalculateScoreLogicImpl implements GeneralCalculateScoreLogi
     generalCalculateScoreComponent.calculateGrade(taskId,caseId,userId);
   }
 
+  @Override
+  public void recordTypeScore(long examId, long caseId, Long userId, String uploadTime) {
+
+  }
+
+
+  @Override
+  public void calculateCaseScore(long examId, long caseId, Long userId,
+      TypeScoreStrategy strategy) {
+
+  }
+
+  @Override
+  public void calculateCaseScore(long examId, long caseId, TypeScoreStrategy strategy) {
+
+  }
+
 }

+ 23 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/strategy/TypeScoreStrategy.java

@@ -0,0 +1,23 @@
+package cn.iselab.mooctest.site.web.logic.strategy;
+
+import cn.iselab.mooctest.site.data.GeneralGradeDTO;
+import java.util.List;
+
+/**
+ * 获取type score的抽象策略
+ *
+ * @author yyy
+ * @create 2018-05-29 16:01
+ */
+public interface TypeScoreStrategy {
+
+  /**
+   * 获取一场考试一个case的type的分数
+   * @param examId 考试id
+   * @param caseId 题目id
+   * @param userId 用户id
+   * @return
+   */
+  List<GeneralGradeDTO> getTypeScore(long examId, long caseId, Long userId);
+
+}