Explorar o código

feature eventBytime

uncln %!s(int64=5) %!d(string=hai) anos
pai
achega
4938bf0380

+ 6 - 0
src/main/java/nju/seec/helper/controller/EventController.java

@@ -4,6 +4,7 @@ import nju.seec.helper.service.EventService;
 import nju.seec.helper.sys.dataanalysis.model.Event;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
@@ -29,4 +30,9 @@ public class EventController {
     public List<Event> getAllEvents() {
         return eventService.getAllEvents();
     }
+
+    @GetMapping("/time")
+    public List<Event> getAllEvents(@RequestParam("start") String start, @RequestParam("end") String end) {
+        return eventService.getAllEventsByDate(start,end);
+    }
 }

+ 0 - 1
src/main/java/nju/seec/helper/controller/QuizController.java

@@ -85,7 +85,6 @@ public class QuizController {
     /**
      * 获得某一测试的详细内容
      */
-    @Auth(roles = {UserRole.STUDENT, UserRole.TEACHER}, message = "获得测试")
     @GetMapping("/{quizId}")
     public QuizVO getOneQuiz(LoginUser user, @PathVariable("quizId") Long quizId) {
         return quizService.getOneQuiz(user, quizId);

+ 13 - 0
src/main/java/nju/seec/helper/dao/ChooseDAO.java

@@ -5,6 +5,8 @@ import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.stereotype.Repository;
 
+import java.sql.Timestamp;
+import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Set;
 
@@ -55,4 +57,15 @@ public interface ChooseDAO extends JpaRepository<Choose, Long> {
      * @return
      */
     List<Choose> findByCourseId(Long courseId);
+
+    /**
+     * 根据课程和时间检索
+     *
+     * @param courseId
+     * @param start
+     * @param end
+     * @return
+     */
+    @Query(value = "select * from Choose where choose_at>= :start and choose_at< :end and course_id=:courseId",nativeQuery = true)
+    List<Choose> findByCourseIdAndDate(Long courseId, LocalDateTime start, LocalDateTime end);
 }

+ 3 - 0
src/main/java/nju/seec/helper/dao/CommentDAO.java

@@ -12,6 +12,7 @@ import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.stereotype.Repository;
 
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -91,4 +92,6 @@ public interface CommentDAO extends JpaRepository<Comment, Long>, JpaSpecificati
                 )
                 , pageable);
     }
+
+    List<Comment> findByCreateAtBetween(LocalDateTime start,LocalDateTime end);
 }

+ 2 - 0
src/main/java/nju/seec/helper/service/EventService.java

@@ -14,4 +14,6 @@ public interface EventService {
      * @return
      */
     List<Event> getAllEvents();
+
+    public List<Event> getAllEventsByDate(String start, String end);
 }

+ 25 - 0
src/main/java/nju/seec/helper/service/impl/EventServiceImpl.java

@@ -7,6 +7,8 @@ import nju.seec.helper.sys.dataanalysis.model.Event;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -52,4 +54,27 @@ public class EventServiceImpl implements EventService {
                 .flatMap(eventStream -> eventStream)
                 .collect(Collectors.toList());
     }
+
+    @Transactional(readOnly = true)
+    @Override
+    public List<Event> getAllEventsByDate(String start, String end) {
+        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        LocalDateTime startTime = LocalDateTime.parse(start, dtf);
+        LocalDateTime endTime = LocalDateTime.parse(end, dtf);
+        return Stream.of(
+                courseDAO.findAll()
+                        .stream()
+                        .flatMap(course -> chooseDAO.findByCourseIdAndDate(course.getId(),startTime,endTime)
+                                .stream()
+                                .map(choose -> eventApi.createParticipateClassEventDTO(String.valueOf(userDAO.findUserById(choose.getStudentId()).getPid()), choose.getChooseAt(), course)))
+                , commentDAO.findByCreateAtBetween(startTime,endTime)
+                        .stream()
+                        .map(comment -> eventApi.createInitPostEventDTO(String.valueOf(comment.getUser().getPid()), comment.getCreateAt(), comment.getTitle()))
+                , quizStudentAnswerDAO.findBetweenTime(startTime,endTime)
+                        .stream()
+                        .map(quizStudentAnswer -> eventApi.createCompleteQuizEventDTO(String.valueOf(quizStudentAnswer.getStudent().getPid()), quizStudentAnswer.getSubmitAt(), quizStudentAnswer.getQuiz()))
+        )
+                .flatMap(eventStream -> eventStream)
+                .collect(Collectors.toList());
+    }
 }

+ 1 - 1
src/main/resources/application-dev.yml

@@ -1,6 +1,6 @@
 spring:
   datasource:
-    url: jdbc:mysql://localhost:3306/helper?setUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true
+    url: jdbc:mysql://localhost:3306/helper_test?setUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true
     driver-class-name: com.mysql.cj.jdbc.Driver
     username: root
     password: root

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

@@ -1,3 +1,3 @@
-spring:
-  profiles:
-    active: dev
+#spring:
+#  profiles:
+#    active: dev