浏览代码

add: 添加教师端获取成绩接口

weijin 4 年之前
父节点
当前提交
d33da9e42b

+ 5 - 0
src/main/java/com/nju/edu/eval/data/dao/ScoreDao.java

@@ -6,6 +6,8 @@ import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 /**
  * @author mars
  */
@@ -19,4 +21,7 @@ public interface ScoreDao extends JpaRepository<Score, Integer> {
      */
     @Query(value = "select * from score s where s.exam_id = :examId and s.student_id = :userId", nativeQuery = true)
     Score findByUserIdAndExamId(@Param("userId") Integer userId, @Param("examId") Integer examId);
+
+    @Query(value = "select * from score s where s.exam_id = :examId", nativeQuery = true)
+    List<Score> findAllByExamId(@Param("examId") Integer examId);
 }

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

@@ -77,4 +77,7 @@ public class Score {
         this.exam = exam;
     }
 
+    public User getUser() {
+        return user;
+    }
 }

+ 3 - 0
src/main/java/com/nju/edu/eval/data/entity/User.java

@@ -46,4 +46,7 @@ public class User {
     @OneToMany(cascade = CascadeType.MERGE, fetch = FetchType.LAZY)
     private List<Score> scores;
 
+    public Integer getId() {
+        return id;
+    }
 }

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

@@ -2,6 +2,7 @@ package com.nju.edu.eval.model.vo.score;
 
 import com.nju.edu.eval.data.entity.Exam;
 
+import com.nju.edu.eval.data.entity.User;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -24,4 +25,10 @@ public class PersonalScoreReportVO implements Serializable {
     private Integer rank;
 
     private Date submitTime;
+
+    private Integer userId;
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
 }

+ 4 - 0
src/main/java/com/nju/edu/eval/service/ScoreService.java

@@ -3,6 +3,8 @@ package com.nju.edu.eval.service;
 import com.nju.edu.eval.data.entity.Score;
 import com.nju.edu.eval.model.vo.score.PersonalScoreReportVO;
 
+import java.util.List;
+
 /**
  * @author mars
  */
@@ -14,4 +16,6 @@ public interface ScoreService {
      * @return 成绩报告
      */
     PersonalScoreReportVO getPersonalScoreReport(Integer userId, Integer examId);
+
+    List<PersonalScoreReportVO> getReportByExamId(Integer examId);
 }

+ 12 - 0
src/main/java/com/nju/edu/eval/service/convertor/ScoreConvertor.java

@@ -5,6 +5,9 @@ import com.nju.edu.eval.data.entity.Score;
 import com.nju.edu.eval.model.vo.score.PersonalScoreReportVO;
 import org.springframework.beans.BeanUtils;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * @author mars
  */
@@ -12,6 +15,15 @@ public class ScoreConvertor {
     public static PersonalScoreReportVO convertToVO(Score score) {
         PersonalScoreReportVO scoreReportVO = new PersonalScoreReportVO();
         BeanUtils.copyProperties(score, scoreReportVO);
+        scoreReportVO.setUserId(score.getUser().getId());
         return scoreReportVO;
     }
+
+    public static List<PersonalScoreReportVO> convertToList(List<Score> scores) {
+        List<PersonalScoreReportVO> list = new ArrayList<>();
+        for (Score s: scores){
+            list.add(convertToVO(s));
+        }
+        return list;
+    }
 }

+ 8 - 0
src/main/java/com/nju/edu/eval/service/serviceImpl/ScoreServiceImpl.java

@@ -8,6 +8,9 @@ import com.nju.edu.eval.service.convertor.ScoreConvertor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * @author mars
  */
@@ -24,4 +27,9 @@ public class ScoreServiceImpl implements ScoreService {
     public PersonalScoreReportVO getPersonalScoreReport(Integer userId, Integer examId) {
         return ScoreConvertor.convertToVO(scoreDao.findByUserIdAndExamId(userId, examId));
     }
+
+    @Override
+    public List<PersonalScoreReportVO> getReportByExamId(Integer examId){
+        return ScoreConvertor.convertToList(scoreDao.findAllByExamId(examId));
+    }
 }

+ 8 - 0
src/main/java/com/nju/edu/eval/web/controller/ScoreController.java

@@ -2,6 +2,7 @@ package com.nju.edu.eval.web.controller;
 
 import com.nju.edu.eval.aspect.auth.Authorized;
 import com.nju.edu.eval.data.entity.User;
+import com.nju.edu.eval.publicdatas.enums.UserRole;
 import com.nju.edu.eval.service.ScoreService;
 import com.nju.edu.eval.web.Response;
 import io.swagger.annotations.Api;
@@ -33,4 +34,11 @@ public class ScoreController {
     public Response getPersonalScoreReport(@ApiIgnore User user, @RequestParam(value = "examId") Integer examId) {
         return Response.buildSuccess(scoreService.getPersonalScoreReport(user.getId(), examId));
     }
+
+    @ApiOperation("获得某次考试的成绩报告(教师视角)")
+    @GetMapping("/all")
+    @Authorized(roles = UserRole.TEACHER)
+    public Response getReportByExamId(@RequestParam(value = "examId") Integer examId) {
+        return Response.buildSuccess(scoreService.getReportByExamId(examId));
+    }
 }

+ 5 - 3
src/main/resources/application-test.yml

@@ -20,7 +20,7 @@ spring:
       hibernate.enable_lazy_load_no_trans: true
       hibernate.dialect: com.nju.edu.eval.config.MySQL57InnoDBDialect  # 人为调整数据库编码
       hibernate.format_sql: true
-    show-sql: true
+    show-sql: false
   jackson:
     date-format: yyyy-MM-dd HH:mm:ss
     time-zone: GMT+8
@@ -32,13 +32,15 @@ spring:
 
 jwt:
   header: Authorization
+#  secret: SEEC-1919810-OIDC-114514
   secret: UenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRW
 
 seec-bok-client:
-  host: http://bok.seec.seecoder.cn
+  host: https://bok.seec.seecoder.cn
 
 objective-judgement-client:
-  host: http://seecoder-judgement.seec.seecoder.cn
+  host: https://seecoder-judgement.seec.seecoder.cn
+#  host: http://localhost:8088
 
 code-judgement-client:
   host: http://oj.seec.seecoder.cn