EventApi.java 2.5 KB

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