package nju.seec.helper.api.dataanalysis; import cn.hutool.core.util.StrUtil; import lombok.Data; import nju.seec.helper.api.dataanalysis.constant.EventAction; import nju.seec.helper.api.dataanalysis.constant.EventType; import nju.seec.helper.api.dataanalysis.model.Event; import nju.seec.helper.entity.Course; import nju.seec.helper.entity.Quiz; import nju.seec.helper.util.RestRequestUtil; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import java.time.LocalDateTime; /** * @author cst */ @Component @ConfigurationProperties("data-analysis.event") @Data public class EventApi { private String reportUrl; private final RestRequestUtil restRequestUtil; public EventApi(RestRequestUtil restRequestUtil) { this.restRequestUtil = restRequestUtil; } @Async public void reportEvent(Event event) { // System.out.println(event); // restRequestUtil.sendPostRequest(eventReportUrl, event, Boolean.class); } /** * 取得参与课程事件 * * @param userId * @param time * @param course * @return */ public Event createParticipateClassEventDTO(String userId, LocalDateTime time, Course course) { return Event.builder() .userId(userId).time(time) .type(EventType.LESSON) .action(EventAction.PARTICIPATE) .description(course.getName()) .build(); } /** * 取得创建帖子事件 * * @param userId * @param time * @param title * @return */ public Event createInitPostEventDTO(String userId, LocalDateTime time, String title) { return Event .builder() .userId(userId) .time(time) .type(EventType.POST) .action(EventAction.INITIATE) .description(title) .build(); } /** * 取得完成测验事件 * * @param userId * @param time * @param quiz * @return */ public Event createCompleteQuizEventDTO(String userId, LocalDateTime time, Quiz quiz) { return Event .builder() .userId(userId) .time(time) .type(EventType.QUIZ) .action(EventAction.COMPLETE) .description(StrUtil.join(":", quiz.getCourse().getName(), quiz.getName())) .build(); } }