EventApi.java 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package nju.seec.helper.api.dataanalysis;
  2. import cn.hutool.core.util.StrUtil;
  3. import lombok.Data;
  4. import nju.seec.helper.api.dataanalysis.constant.EventAction;
  5. import nju.seec.helper.api.dataanalysis.constant.EventType;
  6. import nju.seec.helper.api.dataanalysis.dto.EventDTO;
  7. import nju.seec.helper.entity.Course;
  8. import nju.seec.helper.entity.Quiz;
  9. import nju.seec.helper.util.RestRequestUtil;
  10. import org.springframework.beans.factory.annotation.Value;
  11. import org.springframework.boot.context.properties.ConfigurationProperties;
  12. import org.springframework.scheduling.annotation.Async;
  13. import org.springframework.stereotype.Component;
  14. import java.time.LocalDateTime;
  15. /**
  16. * @author cst
  17. */
  18. @Component
  19. @ConfigurationProperties("data-analysis.event")
  20. @Data
  21. public class EventApi {
  22. private String reportUrl;
  23. private final RestRequestUtil restRequestUtil;
  24. public EventApi(RestRequestUtil restRequestUtil) {
  25. this.restRequestUtil = restRequestUtil;
  26. }
  27. @Async
  28. public void reportEvent(EventDTO eventDTO) {
  29. System.out.println(eventDTO);
  30. // restRequestUtil.sendPostRequest(eventReportUrl, event, Boolean.class);
  31. }
  32. /**
  33. * 取得参与课程事件
  34. *
  35. * @param userId
  36. * @param time
  37. * @param course
  38. * @return
  39. */
  40. public EventDTO createParticipateClassEventDTO(String userId, LocalDateTime time, Course course) {
  41. return EventDTO.builder()
  42. .userId(userId).time(time)
  43. .type(EventType.LESSON)
  44. .action(EventAction.PARTICIPATE)
  45. .description(course.getName())
  46. .build();
  47. }
  48. /**
  49. * 取得创建帖子事件
  50. *
  51. * @param userId
  52. * @param time
  53. * @param title
  54. * @return
  55. */
  56. public EventDTO createInitPostEventDTO(String userId, LocalDateTime time, String title) {
  57. return EventDTO
  58. .builder()
  59. .userId(userId)
  60. .time(time)
  61. .type(EventType.POST)
  62. .action(EventAction.INITIATE)
  63. .description(title)
  64. .build();
  65. }
  66. /**
  67. * 取得完成测验事件
  68. *
  69. * @param userId
  70. * @param time
  71. * @param quiz
  72. * @return
  73. */
  74. public EventDTO createCompleteQuizEventDTO(String userId, LocalDateTime time, Quiz quiz) {
  75. return EventDTO
  76. .builder()
  77. .userId(userId)
  78. .time(time)
  79. .type(EventType.QUIZ)
  80. .action(EventAction.COMPLETE)
  81. .description(StrUtil.join(":", quiz.getCourse().getName(), quiz.getName()))
  82. .build();
  83. }
  84. }