ChenSiTong 6 лет назад
Родитель
Сommit
a736d5d9fc
22 измененных файлов с 0 добавлено и 849 удалено
  1. 0 51
      src/main/java/nju/seec/helper/api/bok/KnowledgeApi.java
  2. 0 117
      src/main/java/nju/seec/helper/api/bok/QuestionApi.java
  3. 0 66
      src/main/java/nju/seec/helper/api/bok/QuestionQueryApi.java
  4. 0 54
      src/main/java/nju/seec/helper/api/bok/RecordApi.java
  5. 0 73
      src/main/java/nju/seec/helper/api/bok/UserInteractiveApi.java
  6. 0 28
      src/main/java/nju/seec/helper/api/bok/constant/QuestionType.java
  7. 0 16
      src/main/java/nju/seec/helper/api/bok/dto/CollectDTO.java
  8. 0 23
      src/main/java/nju/seec/helper/api/bok/dto/RateDTO.java
  9. 0 20
      src/main/java/nju/seec/helper/api/bok/dto/RecordDTO.java
  10. 0 20
      src/main/java/nju/seec/helper/api/bok/vo/InteractiveVO.java
  11. 0 16
      src/main/java/nju/seec/helper/api/bok/vo/KnowledgeNodeVO.java
  12. 0 14
      src/main/java/nju/seec/helper/api/bok/vo/PageVO.java
  13. 0 14
      src/main/java/nju/seec/helper/api/bok/vo/PageableQuestionListVO.java
  14. 0 31
      src/main/java/nju/seec/helper/api/bok/vo/QuestionVO.java
  15. 0 21
      src/main/java/nju/seec/helper/api/bok/vo/RecordQuestionVO.java
  16. 0 25
      src/main/java/nju/seec/helper/api/bok/vo/RecordVO.java
  17. 0 91
      src/main/java/nju/seec/helper/api/dataanalysis/EventApi.java
  18. 0 44
      src/main/java/nju/seec/helper/api/dataanalysis/ExerciseApi.java
  19. 0 29
      src/main/java/nju/seec/helper/api/dataanalysis/constant/EventAction.java
  20. 0 37
      src/main/java/nju/seec/helper/api/dataanalysis/constant/EventType.java
  21. 0 21
      src/main/java/nju/seec/helper/api/dataanalysis/model/Event.java
  22. 0 38
      src/main/java/nju/seec/helper/api/dataanalysis/model/ExerciseRecord.java

+ 0 - 51
src/main/java/nju/seec/helper/api/bok/KnowledgeApi.java

@@ -1,51 +0,0 @@
-package nju.seec.helper.api.bok;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import nju.seec.helper.api.bok.vo.KnowledgeNodeVO;
-import nju.seec.helper.util.RestRequestUtil;
-import nju.seec.helper.util.cache.CaffeineCacheUtils;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-
-/**
- * @author cst
- */
-@Component
-@ConfigurationProperties("bok.knowledge")
-@Data
-public class KnowledgeApi {
-    @Value("${bok.knowledge-cache-name}")
-    private String bokKnowledgeCacheName;
-
-    private final RestRequestUtil restRequestUtil;
-    private final CaffeineCacheUtils cacheUtils;
-
-    private String url;
-
-    public KnowledgeApi(RestRequestUtil restRequestUtil, CaffeineCacheUtils cacheUtils) {
-        this.restRequestUtil = restRequestUtil;
-        this.cacheUtils = cacheUtils;
-    }
-
-    @SuppressWarnings("unchecked")
-    public List<KnowledgeNodeVO> getAllKnowledgeNodes() {
-        Object cache = cacheUtils.get(bokKnowledgeCacheName, "all");
-        if (cache instanceof List) {
-            return (List<KnowledgeNodeVO>) cache;
-        }
-        List<KnowledgeNodeVO> knowledgeNodeVOList = restRequestUtil.sendGetRequest(url, List.class);
-        cacheUtils.set(bokKnowledgeCacheName, "all", knowledgeNodeVOList);
-        return knowledgeNodeVOList;
-    }
-
-    @AllArgsConstructor(staticName = "of")
-    @Data
-    private static class KnowledgeGetDTO {
-        private String name;
-        private String relation;
-    }
-}

+ 0 - 117
src/main/java/nju/seec/helper/api/bok/QuestionApi.java

@@ -1,117 +0,0 @@
-package nju.seec.helper.api.bok;
-
-import com.google.common.collect.ImmutableMap;
-import lombok.Data;
-import nju.seec.helper.api.bok.constant.QuestionType;
-import nju.seec.helper.api.bok.vo.PageableQuestionListVO;
-import nju.seec.helper.api.bok.vo.QuestionVO;
-import nju.seec.helper.dto.question.BaseQuestionDTO;
-import nju.seec.helper.dto.question.ChoiceQuestionDTO;
-import nju.seec.helper.dto.question.TrueOrFalseQuestionDTO;
-import nju.seec.helper.enums.ExceptionType;
-import nju.seec.helper.exception.HelperException;
-import nju.seec.helper.util.RestRequestUtil;
-import nju.seec.helper.util.StringUtils;
-import nju.seec.helper.util.cache.CaffeineCacheUtils;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageImpl;
-import org.springframework.data.domain.Pageable;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-/**
- * @author xst
- * <p>
- * updated by cst
- */
-@Component
-@ConfigurationProperties("bok.question")
-@Data
-public class QuestionApi {
-    @Value("${bok.question-cache-name}")
-    private String bokQuestionCacheName;
-
-    private final RestRequestUtil restRequestUtil;
-    private final CaffeineCacheUtils cacheUtils;
-    private String url;
-    private String searchUrl;
-
-    public QuestionApi(RestRequestUtil restRequestUtil, CaffeineCacheUtils cacheUtils) {
-        this.restRequestUtil = restRequestUtil;
-        this.cacheUtils = cacheUtils;
-    }
-
-    public Page<QuestionVO> getQuestionList(String stem, String tag, String knowledgeId, Pageable pageable) {
-        Map<String, ?> urlParams = ImmutableMap.<String, Object>builder()
-                .put("stem", stem)
-                .put("tag", tag)
-                .put("knowledgeId", knowledgeId)
-                .put("page", 1 + pageable.getPageNumber())
-                .put("size", pageable.getPageSize())
-                .put("sort", StringUtils.getSortString(pageable.getSort()))
-                .build();
-        PageableQuestionListVO result = restRequestUtil.sendGetRequest(searchUrl, PageableQuestionListVO.class, urlParams);
-
-        List<QuestionVO> questionVOList = result.getQuestions();
-        cacheUtils.setAll(bokQuestionCacheName, questionVOList.parallelStream().collect(Collectors.toMap(QuestionVO::getId, bokQuestion -> bokQuestion)));
-        return new PageImpl<>(questionVOList, pageable, result.getPage().getTotalElements());
-    }
-
-    public QuestionVO getQuestionsById(String questionId) {
-        Object cachedBokQuestion = cacheUtils.get(bokQuestionCacheName, questionId);
-        if (cachedBokQuestion instanceof QuestionVO) {
-            return (QuestionVO) cachedBokQuestion;
-        }
-        QuestionVO questionVO = restRequestUtil.sendGetRequest(url + "/" + questionId, QuestionVO.class);
-        cacheUtils.set(bokQuestionCacheName, questionVO.getId(), questionVO);
-        return questionVO;
-    }
-
-    public QuestionVO createQuestion(String questionId, BaseQuestionDTO baseQuestionDTO) {
-        QuestionVO questionVO = createQuestionVO(baseQuestionDTO);
-        questionVO.setId(questionId);
-        questionVO = restRequestUtil.sendPostRequest(url, questionVO, QuestionVO.class);
-        return questionVO;
-    }
-
-    public QuestionVO updateQuestion(String questionId, BaseQuestionDTO baseQuestionDTO) {
-        QuestionVO questionVO = createQuestionVO(baseQuestionDTO);
-        questionVO.setId(questionId);
-        restRequestUtil.sendPutRequest(url + "/" + questionId, questionVO);
-        return getQuestionsById(questionId);
-    }
-
-    public void deleteQuestion(String questionId) {
-        restRequestUtil.sendDeleteRequest(url + "/" + questionId);
-    }
-
-    private QuestionVO createQuestionVO(BaseQuestionDTO baseQuestionDTO) {
-        QuestionVO questionVO = new QuestionVO();
-        questionVO.setType(QuestionType.valueOf(baseQuestionDTO.getType()));
-        questionVO.setStem(baseQuestionDTO.getStem());
-        questionVO.setKeyPoints(baseQuestionDTO.getKeyPoints());
-        questionVO.setTags(baseQuestionDTO.getTags());
-        questionVO.setKnowledgeId(baseQuestionDTO.getKnowledgeId());
-        questionVO.setAnalysis(baseQuestionDTO.getAnalysis());
-
-        switch (questionVO.getType()) {
-            case choice:
-                ChoiceQuestionDTO choiceQuestionDTO = (ChoiceQuestionDTO) baseQuestionDTO;
-                questionVO.setOptions(choiceQuestionDTO.getOptions());
-                questionVO.setAnswer(choiceQuestionDTO.getAnswer());
-                break;
-            case true_false:
-                TrueOrFalseQuestionDTO trueOrFalseQuestionDTO = (TrueOrFalseQuestionDTO) baseQuestionDTO;
-                questionVO.setAnswer(String.valueOf(trueOrFalseQuestionDTO.getAnswer()));
-                break;
-            default:
-                throw HelperException.of(ExceptionType.ERROR, "不支持的题目类型");
-        }
-        return questionVO;
-    }
-}

+ 0 - 66
src/main/java/nju/seec/helper/api/bok/QuestionQueryApi.java

@@ -1,66 +0,0 @@
-package nju.seec.helper.api.bok;
-
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.gson.reflect.TypeToken;
-import lombok.Data;
-import nju.seec.helper.api.bok.vo.QuestionVO;
-import nju.seec.helper.util.JsonUtils;
-import nju.seec.helper.util.RestRequestUtil;
-import nju.seec.helper.util.cache.CaffeineCacheUtils;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-/**
- * @author cst
- */
-@Component
-@ConfigurationProperties("bok.question-query")
-@Data
-public class QuestionQueryApi {
-    @Value("${bok.question-cache-name}")
-    private String bokQuestionCacheName;
-
-    private final RestRequestUtil restRequestUtil;
-    private final CaffeineCacheUtils cacheUtils;
-
-    private String byIdUrl;
-
-    public QuestionQueryApi(RestRequestUtil restRequestUtil, CaffeineCacheUtils cacheUtils) {
-        this.restRequestUtil = restRequestUtil;
-        this.cacheUtils = cacheUtils;
-    }
-
-    @SuppressWarnings({"unchecked", "rawtypes"})
-    public List<QuestionVO> getQuestionListById(final List<String> ids) {
-        Map<String, QuestionVO> bokQuestionsMap = Maps.newHashMapWithExpectedSize(ids.size());
-
-        final Map<String, QuestionVO> cacheBokQuestionsMap = (Map) cacheUtils.multiGet(bokQuestionCacheName, ids);
-        bokQuestionsMap.putAll(cacheBokQuestionsMap);
-
-        List<String> requestIds = Lists.newArrayList(ids);
-        requestIds.removeAll(cacheBokQuestionsMap.keySet());
-        //未缓存的去这里拿
-        if (!requestIds.isEmpty()) {
-            Map<String, String> uriVariables = ImmutableMap.of("id", requestIds.stream().reduce((a, b) -> a + "," + b).orElse(""));
-
-            List<QuestionVO> questionVOList = JsonUtils.fromJson(restRequestUtil.sendGetRequest(byIdUrl, String.class, uriVariables), new TypeToken<List<QuestionVO>>() {
-            });
-
-            Map<String, QuestionVO> remoteBokQuestionsMap = questionVOList.parallelStream().collect(Collectors.toMap(QuestionVO::getId, bokQuestion -> bokQuestion));
-
-            bokQuestionsMap.putAll(remoteBokQuestionsMap);
-            cacheUtils.setAll(bokQuestionCacheName, (Map) remoteBokQuestionsMap);
-        }
-
-        return ids.stream()
-                .map(bokQuestionsMap::get)
-                .collect(Collectors.toList());
-    }
-}

+ 0 - 54
src/main/java/nju/seec/helper/api/bok/RecordApi.java

@@ -1,54 +0,0 @@
-package nju.seec.helper.api.bok;
-
-import com.google.common.collect.ImmutableMap;
-import lombok.Data;
-import nju.seec.helper.api.bok.dto.RecordDTO;
-import nju.seec.helper.api.bok.vo.RecordQuestionVO;
-import nju.seec.helper.util.RestRequestUtil;
-import nju.seec.helper.util.StringUtils;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.data.domain.Pageable;
-import org.springframework.scheduling.annotation.Async;
-import org.springframework.stereotype.Component;
-
-import java.time.LocalDateTime;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author cst
- */
-@Component
-@ConfigurationProperties("bok.record")
-@Data
-public class RecordApi {
-    private String url;
-    private String questionUrl;
-    private final RestRequestUtil restRequestUtil;
-
-    @Async
-    public void reportUserRecord(List<RecordDTO> records) {
-        restRequestUtil.sendPostRequest(url, records, String.class);
-    }
-
-    public RecordDTO createRecordDTO(String studentId, String questionId, Object answer, Boolean pass, LocalDateTime startAt, LocalDateTime finishAt) {
-        return RecordDTO.builder()
-                .studentId(studentId)
-                .questionId(questionId)
-                .studentAnswer(answer)
-                .pass(pass)
-                .startAt(startAt)
-                .finishAt(finishAt)
-                .build();
-    }
-
-    public RecordQuestionVO getUserRecordQuestions(String userId, Pageable pageable) {
-        Map<String, ?> uriVariables = ImmutableMap.of(
-                "userId", userId,
-                "page", pageable.getPageNumber() + 1,
-                "size", pageable.getPageSize(),
-                "sort", StringUtils.getSortString(pageable.getSort())
-        );
-        return restRequestUtil.sendGetRequest(questionUrl, RecordQuestionVO.class, uriVariables);
-    }
-}

+ 0 - 73
src/main/java/nju/seec/helper/api/bok/UserInteractiveApi.java

@@ -1,73 +0,0 @@
-package nju.seec.helper.api.bok;
-
-import com.google.common.collect.ImmutableMap;
-import com.google.gson.reflect.TypeToken;
-import lombok.Data;
-import nju.seec.helper.api.bok.dto.CollectDTO;
-import nju.seec.helper.api.bok.dto.RateDTO;
-import nju.seec.helper.api.bok.vo.InteractiveVO;
-import nju.seec.helper.api.bok.vo.PageableQuestionListVO;
-import nju.seec.helper.api.bok.vo.QuestionVO;
-import nju.seec.helper.util.JsonUtils;
-import nju.seec.helper.util.RestRequestUtil;
-import nju.seec.helper.util.StringUtils;
-import nju.seec.helper.util.cache.CaffeineCacheUtils;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageImpl;
-import org.springframework.data.domain.Pageable;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author cst
- */
-@Component
-@ConfigurationProperties("bok.user")
-@Data
-public class UserInteractiveApi {
-    private final RestRequestUtil restRequestUtil;
-    private final CaffeineCacheUtils cacheUtils;
-
-    private String rateUrl;
-    private String collectionUrl;
-    private String questionUrl;
-    private String interactiveUrl;
-
-    public UserInteractiveApi(RestRequestUtil restRequestUtil, CaffeineCacheUtils cacheUtils) {
-        this.restRequestUtil = restRequestUtil;
-        this.cacheUtils = cacheUtils;
-    }
-
-    public void collectQuestion(String userId, String questionId, CollectDTO collectDTO) {
-        restRequestUtil.sendPostRequest(collectionUrl, collectDTO, Object.class, ImmutableMap.of("userId", userId, "questionId", questionId));
-    }
-
-    public void rateQuestion(String userId, String questionId, RateDTO rateDTO) {
-        restRequestUtil.sendPostRequest(rateUrl, rateDTO, Object.class, ImmutableMap.of("userId", userId, "questionId", questionId));
-    }
-
-    public Page<QuestionVO> getCollectAndRateQuestions(String userId, Boolean collect, Boolean rate, Pageable pageable) {
-        Map<String, ?> uriVariables = ImmutableMap.<String, Object>builder()
-                .put("userId", userId)
-                .put("collection", collect == null ? "" : collect)
-                .put("rate", rate == null ? "" : rate)
-                .put("page", pageable.getPageNumber() + 1)
-                .put("size", pageable.getPageSize())
-                .put("sort", StringUtils.getSortString(pageable.getSort()))
-                .build();
-        PageableQuestionListVO pageableQuestionListVO = restRequestUtil.sendGetRequest(questionUrl, PageableQuestionListVO.class, uriVariables);
-        return new PageImpl<>(pageableQuestionListVO.getQuestions(), pageable, pageableQuestionListVO.getPage().getTotalElements());
-    }
-
-    public List<InteractiveVO> getInteractive(String userId, String questionId) {
-        Map<String, ?> uriVariables = ImmutableMap.<String, Object>builder()
-                .put("userId", userId)
-                .put("questionId", questionId)
-                .build();
-        return JsonUtils.fromJson(restRequestUtil.sendGetRequest(interactiveUrl, String.class, uriVariables), new TypeToken<List<InteractiveVO>>() {
-        });
-    }
-}

+ 0 - 28
src/main/java/nju/seec/helper/api/bok/constant/QuestionType.java

@@ -1,28 +0,0 @@
-package nju.seec.helper.api.bok.constant;
-
-
-/**
- * @author bok
- */
-public enum QuestionType {
-    /**
-     * 选择题
-     */
-    choice,
-    /**
-     * 判断题
-     */
-    true_false,
-    /**
-     * 多选题
-     */
-    multiple_choice,
-    /**
-     * 填空题
-     */
-    blank,
-    /**
-     * 简答题
-     */
-    short_answer
-}

+ 0 - 16
src/main/java/nju/seec/helper/api/bok/dto/CollectDTO.java

@@ -1,16 +0,0 @@
-package nju.seec.helper.api.bok.dto;
-
-import lombok.Data;
-
-import javax.validation.constraints.NotNull;
-
-/**
- * @author bok
- * <p>
- * updated by cst
- */
-@Data
-public class CollectDTO {
-    @NotNull(message = "缺少是否收藏")
-    Boolean collect;
-}

+ 0 - 23
src/main/java/nju/seec/helper/api/bok/dto/RateDTO.java

@@ -1,23 +0,0 @@
-package nju.seec.helper.api.bok.dto;
-
-import lombok.Data;
-
-import javax.validation.constraints.Max;
-import javax.validation.constraints.Min;
-import javax.validation.constraints.NotNull;
-
-/**
- * @author bok
- * <p>
- * updated by cst
- */
-@Data
-public class RateDTO {
-    /**
-     * 取值 1-5
-     */
-    @Max(value = 5, message = "最大评分为5")
-    @Min(value = 1, message = "最小评分为1")
-    @NotNull(message = "缺少评分")
-    Integer rate;
-}

+ 0 - 20
src/main/java/nju/seec/helper/api/bok/dto/RecordDTO.java

@@ -1,20 +0,0 @@
-package nju.seec.helper.api.bok.dto;
-
-import lombok.Builder;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-/**
- * @author Kunduin
- */
-@Data
-@Builder
-public class RecordDTO {
-    String questionId;
-    String studentId;
-    Object studentAnswer;
-    Boolean pass;
-    LocalDateTime startAt;
-    LocalDateTime finishAt;
-}

+ 0 - 20
src/main/java/nju/seec/helper/api/bok/vo/InteractiveVO.java

@@ -1,20 +0,0 @@
-package nju.seec.helper.api.bok.vo;
-
-import lombok.Data;
-
-/**
- * @author cst
- */
-@Data
-public class InteractiveVO {
-    private String userId;
-    private String questionId;
-    /**
-     * 为null表示未对该题做过收藏处理
-     */
-    private Boolean collection;
-    /**
-     * 为null表示未对该题做过评价处理
-     */
-    private Integer rate;
-}

+ 0 - 16
src/main/java/nju/seec/helper/api/bok/vo/KnowledgeNodeVO.java

@@ -1,16 +0,0 @@
-package nju.seec.helper.api.bok.vo;
-
-import lombok.Data;
-
-/**
- * @author cst
- */
-@Data
-public class KnowledgeNodeVO {
-    private String id;
-    private String abbreviation;
-    private String name;
-    private String englishName;
-    private String parentId;
-    private String parentName;
-}

+ 0 - 14
src/main/java/nju/seec/helper/api/bok/vo/PageVO.java

@@ -1,14 +0,0 @@
-package nju.seec.helper.api.bok.vo;
-
-import lombok.Data;
-
-/**
- * @author Kunduin
- */
-@Data
-public class PageVO {
-    Integer size;
-    Long totalElements;
-    Integer totalPages;
-    Integer number;
-}

+ 0 - 14
src/main/java/nju/seec/helper/api/bok/vo/PageableQuestionListVO.java

@@ -1,14 +0,0 @@
-package nju.seec.helper.api.bok.vo;
-
-import lombok.Data;
-
-import java.util.List;
-
-/**
- * @author Kunduin
- */
-@Data
-public class PageableQuestionListVO {
-    List<QuestionVO> questions;
-    PageVO page;
-}

+ 0 - 31
src/main/java/nju/seec/helper/api/bok/vo/QuestionVO.java

@@ -1,31 +0,0 @@
-package nju.seec.helper.api.bok.vo;
-
-import lombok.Data;
-import nju.seec.helper.api.bok.constant.QuestionType;
-
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author Kunduin
- */
-@Data
-public class QuestionVO {
-    String id;
-    QuestionType type;
-    String stem;
-    Map<String, String> options;
-
-    /**
-     * 填空题 __1__ __2__
-     */
-    Map<String, String> blanks;
-
-    String answer;
-    String keyPoints;
-    String analysis;
-    List<String> tags;
-    List<String> knowledgeId;
-    Date lastModifiedTime;
-}

+ 0 - 21
src/main/java/nju/seec/helper/api/bok/vo/RecordQuestionVO.java

@@ -1,21 +0,0 @@
-package nju.seec.helper.api.bok.vo;
-
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.util.List;
-
-/**
- * @author bok
- */
-@Data
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-public class RecordQuestionVO {
-    PageVO page;
-    List<QuestionVO> questions;
-    List<RecordVO> records;
-}

+ 0 - 25
src/main/java/nju/seec/helper/api/bok/vo/RecordVO.java

@@ -1,25 +0,0 @@
-package nju.seec.helper.api.bok.vo;
-
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.time.LocalDateTime;
-
-/**
- * @author Kunduin
- */
-@Data
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-public class RecordVO {
-    String id;
-    String userId;
-    String questionId;
-    Object studentAnswer;
-    Boolean pass;
-    LocalDateTime startAt;
-    LocalDateTime finishAt;
-}

+ 0 - 91
src/main/java/nju/seec/helper/api/dataanalysis/EventApi.java

@@ -1,91 +0,0 @@
-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();
-    }
-}

+ 0 - 44
src/main/java/nju/seec/helper/api/dataanalysis/ExerciseApi.java

@@ -1,44 +0,0 @@
-package nju.seec.helper.api.dataanalysis;
-
-import lombok.Data;
-import nju.seec.helper.api.dataanalysis.model.ExerciseRecord;
-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.Duration;
-import java.time.LocalDateTime;
-import java.util.List;
-
-/**
- * @author cst
- */
-@Component
-@ConfigurationProperties("data-analysis.exercise")
-@Data
-public class ExerciseApi {
-    private String reportUrl;
-    private final RestRequestUtil restRequestUtil;
-
-    public ExerciseApi(RestRequestUtil restRequestUtil) {
-        this.restRequestUtil = restRequestUtil;
-    }
-
-    @Async
-    public void reportExercise(List<ExerciseRecord> exerciseRecords) {
-//        System.out.println(exerciseRecords);
-//        restRequestUtil.sendPostRequest(exerciseReportUrl, exerciseRecords, Boolean.class);
-    }
-
-    public ExerciseRecord createExerciseRecordDTO(String userId, String questionId, LocalDateTime startAt, LocalDateTime endAt, Boolean pass) {
-        return ExerciseRecord.builder()
-                .userId(userId)
-                .questionId(questionId)
-                .startAt(startAt)
-                .endAt(endAt)
-                .durationSeconds(Duration.between(startAt, endAt).getSeconds())
-                .pass(pass)
-                .build();
-    }
-}

+ 0 - 29
src/main/java/nju/seec/helper/api/dataanalysis/constant/EventAction.java

@@ -1,29 +0,0 @@
-package nju.seec.helper.api.dataanalysis.constant;
-
-import lombok.Getter;
-
-/**
- * @author seec data analysis
- */
-@Getter
-public enum EventAction {
-    /**
-     * 参与
-     */
-    PARTICIPATE("参与"),
-    /**
-     * 完成
-     */
-    COMPLETE("完成"),
-    /**
-     * 创建
-     */
-    INITIATE("创建"),
-    ;
-
-    private final String description;
-
-    EventAction(String description) {
-        this.description = description;
-    }
-}

+ 0 - 37
src/main/java/nju/seec/helper/api/dataanalysis/constant/EventType.java

@@ -1,37 +0,0 @@
-package nju.seec.helper.api.dataanalysis.constant;
-
-import lombok.Getter;
-
-/**
- * @author seec data analysis
- */
-@Getter
-public enum EventType {
-    /**
-     * 课程事件
-     */
-    LESSON("课程"),
-    /**
-     * 帖子事件
-     */
-    POST("帖子"),
-    /**
-     * 测验事件
-     */
-    QUIZ("课堂测验"),
-    /**
-     * 考试事件
-     */
-    EXAM("考试"),
-    /**
-     * 作业事件
-     */
-    HOMEWORK("作业"),
-    ;
-
-    private final String description;
-
-    EventType(String description) {
-        this.description = description;
-    }
-}

+ 0 - 21
src/main/java/nju/seec/helper/api/dataanalysis/model/Event.java

@@ -1,21 +0,0 @@
-package nju.seec.helper.api.dataanalysis.model;
-
-import lombok.Builder;
-import lombok.Data;
-import nju.seec.helper.api.dataanalysis.constant.EventAction;
-import nju.seec.helper.api.dataanalysis.constant.EventType;
-
-import java.time.LocalDateTime;
-
-/**
- * @author seec data analysis
- */
-@Data
-@Builder
-public class Event {
-    private String userId;
-    private EventType type;
-    private LocalDateTime time;
-    private EventAction action;
-    private String description;
-}

+ 0 - 38
src/main/java/nju/seec/helper/api/dataanalysis/model/ExerciseRecord.java

@@ -1,38 +0,0 @@
-package nju.seec.helper.api.dataanalysis.model;
-
-import lombok.Builder;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-/**
- * @author seec data analysis
- */
-@Data
-@Builder
-public class ExerciseRecord {
-    /**
-     * 问题的ID
-     */
-    private String questionId;
-    /**
-     * 用户的ID
-     */
-    private String userId;
-    /**
-     * 做题开始时间
-     */
-    private LocalDateTime startAt;
-    /**
-     * 做题结束时间
-     */
-    private LocalDateTime endAt;
-    /**
-     * 做题的时间(秒)
-     */
-    private Long durationSeconds;
-    /**
-     * 该题是否通过
-     */
-    private Boolean pass;
-}