sky 4 роки тому
батько
коміт
dc6168bdec
43 змінених файлів з 1 додано та 2709 видалено
  1. 0 5
      seec-data-server/pom.xml
  2. 0 41
      seec-data-server/src/main/java/cn/seecoder/data/server/controller/AnalysisController.java
  3. 0 35
      seec-data-server/src/main/java/cn/seecoder/data/server/controller/CompetencyController.java
  4. 0 15
      seec-data-server/src/main/java/cn/seecoder/data/server/controller/EvaluateController.java
  5. 0 28
      seec-data-server/src/main/java/cn/seecoder/data/server/controller/HelperController.java
  6. 0 87
      seec-data-server/src/main/java/cn/seecoder/data/server/controller/KnowledgeController.java
  7. 0 106
      seec-data-server/src/main/java/cn/seecoder/data/server/schedule/CoderSchedule.java
  8. 0 90
      seec-data-server/src/main/java/cn/seecoder/data/server/schedule/DevcloudSchedule.java
  9. 0 120
      seec-data-server/src/main/java/cn/seecoder/data/server/schedule/EvaluateSchedule.java
  10. 0 174
      seec-data-server/src/main/java/cn/seecoder/data/server/schedule/HelperSchedule.java
  11. 0 82
      seec-data-server/src/main/java/cn/seecoder/data/server/schedule/PlaygroundSchedule.java
  12. 0 96
      seec-data-server/src/main/java/cn/seecoder/data/server/schedule/SonarSchedule.java
  13. 0 37
      seec-data-server/src/main/java/cn/seecoder/data/server/service/AnalysisService.java
  14. 0 8
      seec-data-server/src/main/java/cn/seecoder/data/server/service/CoderService.java
  15. 0 7
      seec-data-server/src/main/java/cn/seecoder/data/server/service/CompetencyService.java
  16. 0 11
      seec-data-server/src/main/java/cn/seecoder/data/server/service/DevcloudService.java
  17. 0 34
      seec-data-server/src/main/java/cn/seecoder/data/server/service/HelperService.java
  18. 0 228
      seec-data-server/src/main/java/cn/seecoder/data/server/service/Impl/AnalysisServiceImpl.java
  19. 0 71
      seec-data-server/src/main/java/cn/seecoder/data/server/service/Impl/CoderServiceImpl.java
  20. 0 71
      seec-data-server/src/main/java/cn/seecoder/data/server/service/Impl/CompetencyServiceImpl.java
  21. 0 87
      seec-data-server/src/main/java/cn/seecoder/data/server/service/Impl/DevcloudServiceImpl.java
  22. 0 133
      seec-data-server/src/main/java/cn/seecoder/data/server/service/Impl/HelperServiceImpl.java
  23. 0 361
      seec-data-server/src/main/java/cn/seecoder/data/server/service/Impl/KnowledgeServiceImpl.java
  24. 0 62
      seec-data-server/src/main/java/cn/seecoder/data/server/service/Impl/PlaygroundServiceImpl.java
  25. 0 111
      seec-data-server/src/main/java/cn/seecoder/data/server/service/Impl/SonarqubeServiceImpl.java
  26. 0 50
      seec-data-server/src/main/java/cn/seecoder/data/server/service/KnowledgeService.java
  27. 0 14
      seec-data-server/src/main/java/cn/seecoder/data/server/service/PlaygroundService.java
  28. 0 8
      seec-data-server/src/main/java/cn/seecoder/data/server/service/SonarqubeService.java
  29. 1 1
      seec-data-server/src/main/java/cn/seecoder/data/server/utils/aspects/auth/AuthHandlerAspectJ.java
  30. 0 44
      seec-data-server/src/test/java/cn/seecoder/data/server/repository/CoderRepositoryTest.java
  31. 0 27
      seec-data-server/src/test/java/cn/seecoder/data/server/repository/ExtractionLogRepositoryTest.java
  32. 0 25
      seec-data-server/src/test/java/cn/seecoder/data/server/schedule/CoderScheduleTest.java
  33. 0 37
      seec-data-server/src/test/java/cn/seecoder/data/server/schedule/EvaluateScheduleTest.java
  34. 0 40
      seec-data-server/src/test/java/cn/seecoder/data/server/schedule/HelperScheduleTest.java
  35. 0 22
      seec-data-server/src/test/java/cn/seecoder/data/server/schedule/PlaygroundScheduleTest.java
  36. 0 92
      seec-data-server/src/test/java/cn/seecoder/data/server/service/EvaluateServiceTest.java
  37. 0 36
      seec-data-server/src/test/java/cn/seecoder/data/server/service/Impl/AnalysisServiceImplTest.java
  38. 0 42
      seec-data-server/src/test/java/cn/seecoder/data/server/service/Impl/CoderServiceImplTest.java
  39. 0 25
      seec-data-server/src/test/java/cn/seecoder/data/server/service/Impl/DevcloudServiceImplTest.java
  40. 0 31
      seec-data-server/src/test/java/cn/seecoder/data/server/service/Impl/EvaluateServiceImplTest.java
  41. 0 63
      seec-data-server/src/test/java/cn/seecoder/data/server/service/Impl/KnowledgeServiceImplTest.java
  42. 0 29
      seec-data-server/src/test/java/cn/seecoder/data/server/utils/aspects/auth/AuthHandlerAspectJTest.java
  43. 0 23
      seec-data-server/src/test/java/config/PropertyTestConfig.java

+ 0 - 5
seec-data-server/pom.xml

@@ -109,11 +109,6 @@
 			<artifactId>seecoder-bok-client</artifactId>
 			<version>${seecoder.bok.version}</version>
 		</dependency>
-		<dependency>
-			<groupId>cn.seecoder</groupId>
-			<artifactId>judgement-client</artifactId>
-			<version>${seecoder.judgement.version}</version>
-		</dependency>
 		<dependency>
 			<groupId>com.nju.edu</groupId>
 			<artifactId>seecoder-gitlab-client</artifactId>

+ 0 - 41
seec-data-server/src/main/java/cn/seecoder/data/server/controller/AnalysisController.java

@@ -1,41 +0,0 @@
-package cn.seecoder.data.server.controller;
-
-
-import cn.seecoder.data.server.service.AnalysisService;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.HashMap;
-import java.util.Map;
-
-@RestController
-public class AnalysisController {
-
-    final AnalysisService analysisService;
-
-    public AnalysisController(AnalysisService analysisService) {
-        this.analysisService = analysisService;
-    }
-
-
-    @RequestMapping("/score/{id}")
-    public Map<String,Double> getScoreOnSystem(@PathVariable("id") Integer id){
-        return analysisService.getSystemScoreByUserId(id);
-    }
-
-    @RequestMapping("/score-week/{id}")
-    public Map<String,Double> getScoreOnSystemByWeek(@PathVariable("id") Integer id){
-        return analysisService.getSystemWeekScoreByUserId(id);
-    }
-
-    @RequestMapping("/deposition/{id}")
-    public Map<String,Double> getDepositionScore(@PathVariable("id") Integer id){
-        return analysisService.getDepositionScoreByUserId(id);
-    }
-
-    @RequestMapping("/deposition-week/{id}")
-    public Map<String,Double> getDepositonScoreByWeek(@PathVariable("id") Integer id){
-        return analysisService.getDepositionWeekScoreByUserId(id);
-    }
-}

+ 0 - 35
seec-data-server/src/main/java/cn/seecoder/data/server/controller/CompetencyController.java

@@ -1,35 +0,0 @@
-package cn.seecoder.data.server.controller;
-
-import cn.seecoder.data.server.service.CompetencyService;
-import cn.seecoder.data.server.utils.enums.ErrorCodeEnum;
-import cn.seecoder.data.server.utils.exception.GlobalException;
-import cn.seecoder.data.server.vo.Result;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.Map;
-
-@RestController
-@RequestMapping("/competency")
-public class CompetencyController {
-
-    private final CompetencyService competencyService;
-
-    @Autowired
-    public CompetencyController(CompetencyService competencyService) {
-        this.competencyService = competencyService;
-    }
-
-    @GetMapping("/scores/{userId}")
-    public Result<Map<String, Double>> getCompetencyScoreByUserId(@PathVariable("userId") Integer userId) {
-        Map<String, Double> res = competencyService.getCompetencyScores(userId);
-        if(res == null) throw new GlobalException(ErrorCodeEnum.SYSTEM_ERROR_B0002);
-        double resAll = competencyService.getCompetencyScore(res);
-        res.put("all",resAll);
-        return Result.buildSuccess(res);
-    }
-
-}

+ 0 - 15
seec-data-server/src/main/java/cn/seecoder/data/server/controller/EvaluateController.java

@@ -6,8 +6,6 @@ import cn.seecoder.data.server.service.EvaluateService;
 import cn.seecoder.data.server.utils.enums.UserRole;
 import cn.seecoder.data.server.utils.exception.GlobalException;
 import cn.seecoder.data.server.vo.Result;
-import cn.seecoder.data.server.repository.GeneralRecordRepository;
-import cn.seecoder.data.server.repository.knowledge.KnowledgeRepository;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -18,21 +16,8 @@ import java.util.Map;
 @RestController
 public class EvaluateController {
 
-    @Autowired
-    GeneralRecordRepository generalRecordRepository;
-
-    @Autowired
-    KnowledgeRepository knowledgeRepository;
-
     @Autowired
     EvaluateService evaluateService;
-//
-//    @RequestMapping("/user/{id}")
-//    public KnowledgePointVO getEvaluate(@PathVariable("id") Integer id){
-//        GeneralServiceImpl generalService = new GeneralServiceImpl(generalRecordRepository,knowledgeRepository);
-//        KnowledgePointVO root = generalService.getTreeNode(332);
-//        return root;
-//    }
 
     @Auth(roles = {UserRole.SYS})
     @RequestMapping("/eval/analysis/{examId}")

+ 0 - 28
seec-data-server/src/main/java/cn/seecoder/data/server/controller/HelperController.java

@@ -1,28 +0,0 @@
-package cn.seecoder.data.server.controller;
-
-import cn.seecoder.data.server.repository.GeneralRecordRepository;
-import cn.seecoder.data.server.service.HelperService;
-import cn.seecoder.data.server.service.Impl.EvaluateServiceImpl;
-import cn.seecoder.data.server.service.KnowledgeService;
-import cn.seecoder.data.server.vo.knowledge.KnowledgePointVO;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-@RestController
-public class HelperController {
-
-    private final HelperService helperService;
-
-    public HelperController(HelperService helperService) {
-        this.helperService = helperService;
-    }
-
-
-    @RequestMapping("/helper/event/{userId}")
-    public double getKnowledgeTreeOnPosition(@PathVariable("userId") int userId){
-        return helperService.getHelperEventScoreById(userId);
-    }
-}

+ 0 - 87
seec-data-server/src/main/java/cn/seecoder/data/server/controller/KnowledgeController.java

@@ -1,87 +0,0 @@
-package cn.seecoder.data.server.controller;
-
-import cn.seecoder.bok.common.vo.QuestionVO;
-import cn.seecoder.data.server.domain.knowledge.KnowledgeDao;
-import cn.seecoder.data.server.domain.knowledge.KnowledgeOnPositionDao;
-import cn.seecoder.data.server.domain.knowledge.PositionWeightDao;
-import cn.seecoder.data.server.repository.knowledge.PositionWeightRepository;
-import cn.seecoder.data.server.service.KnowledgeService;
-import cn.seecoder.data.server.utils.enums.ErrorCodeEnum;
-import cn.seecoder.data.server.utils.exception.GlobalException;
-import cn.seecoder.data.server.vo.Result;
-import cn.seecoder.data.server.vo.knowledge.KnowledgePointVO;
-import cn.seecoder.data.server.vo.knowledge.KnowledgeVO;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import javax.validation.constraints.NotNull;
-import java.util.List;
-import java.util.Map;
-
-@RestController
-public class KnowledgeController {
-
-    @Autowired
-    PositionWeightRepository positionWeightRepository;
-
-    private final KnowledgeService knowledgeService;
-
-    public KnowledgeController(KnowledgeService knowledgeService) {
-        this.knowledgeService = knowledgeService;
-    }
-
-
-    /**
-     * 展示所有知识点及其权重,便于标记
-     * @return
-     */
-    @CrossOrigin
-    @RequestMapping("/knowledge/all")
-    public List<KnowledgeVO> getEvaluate(){
-        return knowledgeService.getAllKnowledgeAndWeight();
-    }
-
-    /**
-     * 更新知识点职位信息
-     * @param knowledgeVO
-     * @return
-     */
-    @PostMapping("/knowlegde-position/update")
-    public KnowledgeVO updatePosition(@NotNull @RequestBody KnowledgeVO knowledgeVO) {
-        return knowledgeService.updatePositionWeight(knowledgeVO);
-    }
-
-    /**
-     * 删除知识点职位信息
-     * @param knowledgeId
-     * @param position
-     * @return
-     */
-    @RequestMapping("/knowledge-tree/position/delete/{knowledgeId}/{position}")
-    public Result<String> deletePosition(@PathVariable("knowledgeId") Integer knowledgeId,@PathVariable("position") String position){
-        positionWeightRepository.delete(new PositionWeightDao(knowledgeId,position,0));
-        //if(res == null) throw new GlobalException(ErrorCodeEnum.SERVICE_ERROR_C0001);
-        return Result.buildSuccess("success");
-    }
-
-    /**
-     * 根据用户id和职位获取对应的知识点树
-     * @param position
-     * @return
-     */
-    @CrossOrigin
-    @RequestMapping("/knowledge-tree/position/{userId}/{position}")
-    public KnowledgePointVO getKnowledgeTreeOnPosition(@PathVariable("position") String position, @PathVariable("userId") Integer userId){
-        return knowledgeService.getTreeByPositionAndUser(position,userId);
-    }
-
-    @RequestMapping("/knowledge-week/{userId}")
-    public Map<String, Integer> getKnowledgeWeekCount(@PathVariable("userId") int userId){
-        return knowledgeService.getKnowledgeWeekCount(userId);
-    }
-
-    @RequestMapping("/FAHP-score/{position}/{userId}")
-    public Double getFAHPScoreOnPosition(@PathVariable("position") String position,@PathVariable("userId") int userId){
-        return knowledgeService.getFAHPScoreOnPosition(position,userId);
-    }
-}

+ 0 - 106
seec-data-server/src/main/java/cn/seecoder/data/server/schedule/CoderSchedule.java

@@ -1,106 +0,0 @@
-package cn.seecoder.data.server.schedule;
-
-import cn.seecoder.data.server.domain.CoderDao;
-import cn.seecoder.data.server.dto.coder.CoderDto;
-import cn.seecoder.data.server.dto.coder.Response;
-import cn.seecoder.data.server.repository.CoderRepository;
-import cn.seecoder.data.server.service.ExtractionLogService;
-import cn.seecoder.data.server.utils.aspects.dataExtraction.DataExtractor;
-import cn.seecoder.data.server.utils.enums.ErrorCodeEnum;
-import cn.seecoder.data.server.utils.enums.TimeType;
-import cn.seecoder.data.server.utils.exception.GlobalException;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.core.ParameterizedTypeReference;
-import org.springframework.format.datetime.standard.DateTimeFormatterFactory;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.ResponseEntity;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.client.RestTemplate;
-
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-@Component
-public class CoderSchedule {
-
-    @Value("${sys.coder.url}")
-    private String coderBaseUrl;
-
-    @Autowired
-    private ExtractionLogService extractionLogService;
-
-    @Autowired
-    private CoderRepository coderRepository;
-
-    @Autowired
-    private RestTemplate restTemplate;
-
-    private final String source = "coder";
-
-//    @Scheduled(cron = "0 0 2 * * ?")
-    @DataExtractor(source)
-    @Transactional(rollbackFor = Exception.class)
-    public void coderDataExtraction() throws Exception {
-        LocalDateTime start = extractionLogService.getExtractionStartTime(source,1, TimeType.DAY);
-        LocalDateTime end = extractionLogService.getExtractionEndTime(source);
-
-        Map<String,String> param1 = paramBuilder(start,end);
-        System.out.println(param1);
-
-        String coderApi1 = "/api/statistic/getAnalysis?startAt={startTime}&endAt={endTime}";
-        String url = coderBaseUrl + coderApi1;
-        ParameterizedTypeReference<Response<List<CoderDto>>> responseType = new ParameterizedTypeReference<Response<List<CoderDto>>>() {};
-
-        List<CoderDto> source = getCoderApi1Data(url,param1,responseType);
-        source.forEach(data -> {
-            CoderDao coderDao = coderRepository.findByUserIdAndExamIdAndProblemId(data.getUserId(),data.getExamId(),data.getProblemId());
-            if (coderDao == null) {
-                coderRepository.save(coderDtoAndDaoMapper(data));
-            } else {
-                CoderDao coderDao1 = coderDtoAndDaoMapper(data);
-                coderDao1.setId(coderDao.getId());
-                coderRepository.save(coderDao1);
-            }
-        });
-    }
-
-    private Map<String,String> paramBuilder(LocalDateTime start, LocalDateTime end) {
-        Map<String,String> param = new HashMap<>();
-        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-        param.put("startTime", start.format(df));
-        param.put("endTime", end.format(df));
-        return param;
-    }
-
-    private List<CoderDto> getCoderApi1Data(String url1,Map<String,String> params,ParameterizedTypeReference<Response<List<CoderDto>>> responseType) throws Exception {
-        ResponseEntity<Response<List<CoderDto>>> r = restTemplate.exchange(url1, HttpMethod.GET,null,responseType,params );
-        Response<List<CoderDto>> body = r.getBody();
-        if (body == null || body.getCode()!=200) throw new GlobalException(ErrorCodeEnum.SERVICE_ERROR_C0002);
-        List<CoderDto> source = body.getSource();
-        if(source == null || source.size()==0) throw new GlobalException(ErrorCodeEnum.SERVICE_ERROR_C0003);
-        return source;
-    }
-
-    private CoderDao coderDtoAndDaoMapper(CoderDto data) {
-        return CoderDao.builder()
-                .commitId(data.getCommitId())
-                .examId(data.getExamId())
-                .endAt(data.getEndAt())
-                .lastCommitAt(data.getLastCommitAt())
-                .problemId(data.getProblemId())
-                .recordId(data.getRecordId())
-                .score(data.getScore())
-                .userId(data.getUserId())
-                .submitAt(data.getSubmitAt())
-                .startAt(data.getStartAt())
-                .id(null).createdAt(null).updatedAt(null)
-                .build();
-    }
-}

+ 0 - 90
seec-data-server/src/main/java/cn/seecoder/data/server/schedule/DevcloudSchedule.java

@@ -1,90 +0,0 @@
-package cn.seecoder.data.server.schedule;
-
-import cn.seecoder.data.server.domain.DevcloudCommitDao;
-import cn.seecoder.data.server.dto.coder.CoderDto;
-import cn.seecoder.data.server.dto.coder.Response;
-import cn.seecoder.data.server.dto.devcloud.DevcloudCommitDto;
-import cn.seecoder.data.server.repository.CoderRepository;
-import cn.seecoder.data.server.repository.DevcloudCommitRepository;
-import cn.seecoder.data.server.service.ExtractionLogService;
-import cn.seecoder.data.server.utils.aspects.dataExtraction.DataExtractor;
-import cn.seecoder.data.server.utils.enums.ErrorCodeEnum;
-import cn.seecoder.data.server.utils.enums.TimeType;
-import cn.seecoder.data.server.utils.exception.GlobalException;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.core.ParameterizedTypeReference;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.ResponseEntity;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.client.RestTemplate;
-
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-public class DevcloudSchedule {
-    @Value("${sys.decloud.url}")
-    private String devcloudBaseUrl;
-
-    @Autowired
-    private ExtractionLogService extractionLogService;
-
-    @Autowired
-    private DevcloudCommitRepository devcloudCommitRepository;
-
-    @Autowired
-    private RestTemplate restTemplate;
-
-    private final String source = "devcloud";
-
-//    @Scheduled(cron = "0 0 2 * * ?")
-    @DataExtractor(source)
-    @Transactional(rollbackFor = Exception.class)
-    public void coderDataExtraction() throws Exception {
-        LocalDateTime start = extractionLogService.getExtractionStartTime(source);
-        LocalDateTime end = extractionLogService.getExtractionEndTime(source);
-
-        Map<String,String> param1 = paramBuilder(start,end);
-
-        String devcloudApi = "/query/commit?startAt={startTime}&endAt={endTime}";
-        String url = devcloudBaseUrl + devcloudApi;
-        ParameterizedTypeReference<Response<List<DevcloudCommitDto>>> responseType = new ParameterizedTypeReference<Response<List<DevcloudCommitDto>>>() {};
-
-        List<DevcloudCommitDao> devcloudCommitDtos = getDevcloudApiData(url,param1,responseType).stream().map(this::dtoToDaoMapper).collect(Collectors.toList());
-        devcloudCommitRepository.saveAll(devcloudCommitDtos);
-}
-
-    private List<DevcloudCommitDto> getDevcloudApiData(String url1,Map<String,String> params,ParameterizedTypeReference<Response<List<DevcloudCommitDto>>> responseType) throws Exception {
-        ResponseEntity<Response<List<DevcloudCommitDto>>> r = restTemplate.exchange(url1, HttpMethod.GET,null,responseType,params );
-        Response<List<DevcloudCommitDto>> body = r.getBody();
-        if (body == null || body.getCode()!=200) throw new GlobalException(ErrorCodeEnum.SERVICE_ERROR_C0002);
-        List<DevcloudCommitDto> source = body.getSource();
-        if(source == null || source.size()==0) throw new GlobalException(ErrorCodeEnum.SERVICE_ERROR_C0003);
-        return source;
-    }
-
-    private Map<String, String> paramBuilder(LocalDateTime start, LocalDateTime end) {
-        Map<String,String> param = new HashMap<>();
-        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-        param.put("startTime", start.format(df));
-        param.put("endTime", end.format(df));
-        return param;
-    }
-
-    private DevcloudCommitDao dtoToDaoMapper(DevcloudCommitDto devcloudCommitDto) {
-        return DevcloudCommitDao.builder()
-                .email(devcloudCommitDto.getEmail())
-                .gitlabUsername(devcloudCommitDto.getGitlabUsername())
-                .projectId(devcloudCommitDto.getProjectId())
-                .relatedId(devcloudCommitDto.getRelatedId())
-                .relatedType(devcloudCommitDto.getRelatedType())
-                .submitTime(devcloudCommitDto.getSubmitTime())
-                .id(devcloudCommitDto.getId())
-                .build();
-    }
-}

+ 0 - 120
seec-data-server/src/main/java/cn/seecoder/data/server/schedule/EvaluateSchedule.java

@@ -1,120 +0,0 @@
-package cn.seecoder.data.server.schedule;
-
-
-import cn.seecoder.data.server.repository.EvaluateRepository;
-import cn.seecoder.data.server.utils.aspects.dataExtraction.DataExtractor;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-import cn.seecoder.data.server.domain.GeneralRecordDao;
-import cn.seecoder.data.server.domain.EvaluateDao;
-import cn.seecoder.data.server.repository.GeneralRecordRepository;
-import org.springframework.web.client.RestTemplate;
-
-
-import java.text.SimpleDateFormat;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-import java.util.Calendar;
-import java.util.Date;
-@Component
-public class EvaluateSchedule {
-
-    @Autowired
-    private GeneralRecordRepository generalRecordRepository;
-
-    @Autowired
-    private EvaluateRepository evaluateRepository;
-
-    public EvaluateSchedule(GeneralRecordRepository generalRecordRepository,
-                            EvaluateRepository evaluateRepository) {
-        this.generalRecordRepository = generalRecordRepository;
-        this.evaluateRepository = evaluateRepository;
-    }
-
-
-    @DataExtractor("evaluate")
-//    @Scheduled(cron = "0 0 2 * * ?")
-    public void evaluateDataExtration(){
-        Date date = new Date();
-        Calendar calendar = Calendar.getInstance();
-        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        String startTime = format.format(calendar.getTime());
-        calendar.setTime(date);
-        calendar.add(Calendar.DAY_OF_MONTH, -1);
-        String endTime = format.format(calendar.getTime());
-        RestTemplate restTemplate = new RestTemplate();
-        try {
-            String temp = restTemplate.getForObject(
-                    "http://47.111.95.164:8080/api/exam/list/range?startTime={1}&endTime={2}",
-                    String.class,
-                    "2010-01-01 00:00:00",
-                    "2021-04-27 00:00:00"
-            );
-            JSONObject ans = JSON.parseObject(temp);
-            JSONArray results = ans.getJSONArray("result");
-            DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-            for(int i=0;i<results.size();i++){
-                int examId = results.getJSONObject(i).getInteger("examId");
-                String recordString = restTemplate.getForObject(
-                        "http://47.111.95.164:8080/api/record/{1}",
-                        String.class,
-                        examId
-                );
-                JSONArray recordResults = JSON.parseObject(recordString).getJSONArray("result");
-                for(int j=0;j<recordResults.size();j++){
-                    EvaluateDao evaluatedao = new EvaluateDao();
-                    GeneralRecordDao generalrecorddao = new GeneralRecordDao();
-                    JSONObject recordResult = recordResults.getJSONObject(j);
-                    generalrecorddao.setStartTime(LocalDateTime.parse(results.getJSONObject(i).getString("startTime"),dtf));
-                    generalrecorddao.setEndTime(LocalDateTime.parse(results.getJSONObject(i).getString("endTime"),dtf));
-                    generalrecorddao.setQuestionId(recordResult.getString("questionId"));
-                    generalrecorddao.setUserId(recordResult.getInteger("studentId"));
-                    generalrecorddao.setAnswer(recordResult.getString("submitAnswer"));
-                    generalrecorddao.setSubmitTime(LocalDateTime.parse(recordResult.getString("submitTime"),dtf));
-                    if(recordResult.getString("message")==null)
-                        generalrecorddao.setPass(null);
-                    else if(recordResult.getString("message").equals("Accepted"))
-                        generalrecorddao.setPass(1);
-                    else
-                        generalrecorddao.setPass(0);
-                    generalrecorddao.setDataSource("evaluate");
-                    generalrecorddao.setScore(recordResult.getInteger("actualScore"));
-                    try{
-                        String examScores= restTemplate.getForObject(
-                        "http://47.111.95.164:8080/api/exam/{1}/questions",
-                        String.class,
-                        examId
-                        );
-                        JSONObject scoresResults = JSON.parseObject(examScores);
-                        if(scoresResults.getJSONObject("result").containsKey("questionAndScore")){
-                            JSONObject scoresTotal = scoresResults.getJSONObject("result").getJSONObject("questionAndScore");
-                            if(scoresTotal.containsKey(recordResult.get("questionId"))){
-
-                                generalrecorddao.setScoreTotal(scoresTotal.getInteger(recordResult.get("questionId").toString()));
-                            }
-                            else {
-                                generalrecorddao.setScoreTotal(0);
-                            }
-                        }
-                    }catch (Exception e){
-                        System.out.println(e);
-                    }
-                    GeneralRecordDao gr = generalRecordRepository.save(generalrecorddao);
-                    int grid = generalrecorddao.getId();
-                    evaluatedao.setExamId(examId);
-                    evaluatedao.setGeneralId(grid);
-                    evaluatedao.setDifficuty(results.getJSONObject(i).getInteger("difficulty"));
-                    EvaluateDao ed = evaluateRepository.save(evaluatedao);
-                    System.out.println(evaluatedao);
-                    System.out.println(generalrecorddao);
-                }
-            }
-        }catch (Exception e){
-            System.out.println(e);
-        }
-    }
-}

+ 0 - 174
seec-data-server/src/main/java/cn/seecoder/data/server/schedule/HelperSchedule.java

@@ -1,174 +0,0 @@
-package cn.seecoder.data.server.schedule;
-
-
-import cn.seecoder.data.server.domain.DevcloudCommitDao;
-import cn.seecoder.data.server.domain.GeneralRecordDao;
-import cn.seecoder.data.server.domain.helper.HelperEventDao;
-import cn.seecoder.data.server.domain.helper.HelperQuizDao;
-import cn.seecoder.data.server.dto.coder.Response;
-import cn.seecoder.data.server.dto.devcloud.DevcloudCommitDto;
-import cn.seecoder.data.server.dto.helper.HelperEventDto;
-import cn.seecoder.data.server.dto.helper.HelperQuizDto;
-import cn.seecoder.data.server.repository.GeneralRecordRepository;
-import cn.seecoder.data.server.repository.helper.HelperEventRepository;
-import cn.seecoder.data.server.repository.helper.HelperQuizRepository;
-import cn.seecoder.data.server.service.ExtractionLogService;
-import cn.seecoder.data.server.utils.aspects.dataExtraction.DataExtractor;
-import cn.seecoder.data.server.utils.enums.ErrorCodeEnum;
-import cn.seecoder.data.server.utils.exception.GlobalException;
-import com.alibaba.fastjson.JSONObject;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.core.ParameterizedTypeReference;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.ResponseEntity;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.client.RestTemplate;
-import com.alibaba.fastjson.JSONArray;
-
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-@Component
-public class HelperSchedule {
-
-    @Value("${sys.helper.url}")
-    private String helperBaseUrl;
-
-    @Autowired
-    private ExtractionLogService extractionLogService;
-
-    @Autowired
-    private GeneralRecordRepository generalRecordRepository;
-
-    @Autowired
-    private HelperQuizRepository helperQuizRepository;
-
-    @Autowired
-    private HelperEventRepository helperEventRepository;
-
-    @Autowired
-    private RestTemplate restTemplate;
-
-    private final String source = "helper";
-
-    public HelperSchedule(GeneralRecordRepository generalRecordRepository,HelperQuizRepository helperQuizRepository,HelperEventRepository helperEventRepository){
-        this.generalRecordRepository = generalRecordRepository;
-        this.helperQuizRepository = helperQuizRepository;
-        this.helperEventRepository = helperEventRepository;
-    }
-
-    // @Scheduled(cron = "0 0 2 * * ?")
-    @DataExtractor(source)
-    @Transactional(rollbackFor = Exception.class)
-    public void helperQuizExtraction(){
-        LocalDateTime start = extractionLogService.getExtractionStartTime(source);
-        LocalDateTime end = extractionLogService.getExtractionEndTime(source);
-        String helperQuizApi = "api/quiz/quiz_records/all";
-        String url = helperBaseUrl + helperQuizApi;
-
-        Map<String,String> params = buildParam(start,end);
-        ParameterizedTypeReference<Response<List<HelperQuizDto>>> responseType = new ParameterizedTypeReference<Response<List<HelperQuizDto>>>() {};
-
-
-        //List<HelperQuizDto> helperQuizDtos = getHelperEventData(url,params,responseType).stream().collect(Collectors.toList());
-
-        JSONArray temp = restTemplate.getForObject(
-                "http://localhost:8080/api/quiz/quiz-records/all?start={1}&end={2}",
-                JSONArray.class,
-                start,
-                end
-        );
-        for(int i=0;i<temp.size();i++){
-            JSONObject quiz_record = temp.getJSONObject(i);
-            for (Map.Entry entry : quiz_record.getJSONObject("answers").entrySet()) {
-                GeneralRecordDao generalRecordDao = new GeneralRecordDao();
-                HelperQuizDao helperQuizDao = new HelperQuizDao();
-                generalRecordDao.setUserId(Integer.parseInt(quiz_record.getString("studentId")));
-                generalRecordDao.setQuestionId(entry.getKey().toString());
-                generalRecordDao.setAnswer(((JSONObject)JSONObject.toJSON(entry.getValue())).getString("answer"));
-                generalRecordDao.setDataSource("helper");
-                generalRecordDao.setScoreTotal(5);
-                getTime(generalRecordDao,Integer.parseInt(quiz_record.getString("quizId")),restTemplate,quiz_record.getString("submitAt"));
-                if(((JSONObject)JSONObject.toJSON(entry.getValue())).getBooleanValue("correct")) {
-                    generalRecordDao.setPass(1);
-                    generalRecordDao.setScore(5);
-                }
-                else{
-                    generalRecordDao.setPass(0);
-                    generalRecordDao.setScore(0);
-                }
-                GeneralRecordDao ans = generalRecordRepository.save(generalRecordDao);
-                helperQuizDao.setQuizId(Integer.parseInt(quiz_record.getString("quizId")));
-                helperQuizDao.setQuizName(quiz_record.getString("quizName"));
-                helperQuizDao.setGeneralId(ans.getId());
-                helperQuizDao.setSubmitNumber(quiz_record.getInteger("submitNumber"));
-                helperQuizRepository.save(helperQuizDao);
-            }
-
-        }
-    }
-
-    @Scheduled(cron = "0 0 2 * * ?")
-    @DataExtractor(source)
-    @Transactional(rollbackFor = Exception.class)
-    public void helperEventExtraction(){
-        LocalDateTime start = extractionLogService.getExtractionStartTime(source);
-        LocalDateTime end = extractionLogService.getExtractionEndTime(source);
-        String helperEventApi = "api/event/time";
-        String url = helperBaseUrl + helperEventApi;
-        Map<String,String> params = buildParam(start,end);
-        ParameterizedTypeReference<Response<List<HelperEventDto>>> responseType =
-                new ParameterizedTypeReference<Response<List<HelperEventDto>>>() {};
-        List<HelperEventDao> helperEventDaos = getHelperEventData(url,params,responseType)
-                .stream().map(this::dtoToDaoMapper).collect(Collectors.toList());
-        helperEventRepository.saveAll(helperEventDaos);
-    }
-
-    private HelperEventDao dtoToDaoMapper(HelperEventDto helperEventDto) {
-        return HelperEventDao.builder()
-                .userId(helperEventDto.getUserId())
-                .type(helperEventDto.getType())
-                .action(helperEventDto.getAction())
-                .time(helperEventDto.getTime())
-                .action(helperEventDto.getAction())
-                .build();
-    }
-
-    private Map<String,String> buildParam(LocalDateTime start,LocalDateTime end) {
-        Map<String,String> param = new HashMap<>();
-        param.put("start",start.toString());
-        param.put("end",end.toString());
-        return param;
-    }
-
-    private List<HelperEventDto> getHelperEventData(String url, Map<String,String> param, ParameterizedTypeReference<Response<List<HelperEventDto>>> responseType) {
-        ResponseEntity<Response<List<HelperEventDto>>> r = restTemplate.exchange(url, HttpMethod.GET,null,responseType,param );
-        Response<List<HelperEventDto>> body = r.getBody();
-        if (body == null || body.getCode()!=200) throw new GlobalException(ErrorCodeEnum.SERVICE_ERROR_C0002);
-        List<HelperEventDto> source = body.getSource();
-        if(source == null || source.size()==0) throw new GlobalException(ErrorCodeEnum.SERVICE_ERROR_C0003);
-        return source;
-    }
-
-    private void getTime(GeneralRecordDao generalRecordDao, int quizId, RestTemplate restTemplate, String submit){
-        try {
-            JSONObject quiz = restTemplate.getForObject("http://localhost:8080/api/quiz/{1}",JSONObject.class,quizId);
-            String start = quiz.getString("createAt").replace('T',' ').split("\\.")[0];
-            String end = quiz.getString("createAt").replace('T',' ').split("\\.")[0];
-            DateTimeFormatter sdf2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-            generalRecordDao.setStartTime(LocalDateTime.parse(start,sdf2));
-            generalRecordDao.setEndTime(LocalDateTime.parse(end,sdf2));
-            generalRecordDao.setSubmitTime(LocalDateTime.parse(submit));
-        }catch (Exception e){
-            System.out.println(e);
-        }
-    }
-
-}

+ 0 - 82
seec-data-server/src/main/java/cn/seecoder/data/server/schedule/PlaygroundSchedule.java

@@ -1,82 +0,0 @@
-package cn.seecoder.data.server.schedule;
-
-import cn.seecoder.data.server.domain.GeneralRecordDao;
-import cn.seecoder.data.server.domain.PlaygroundDao;
-import cn.seecoder.data.server.repository.GeneralRecordRepository;
-import cn.seecoder.data.server.repository.PlaygroungRepository;
-import cn.seecoder.data.server.service.ExtractionLogService;
-import cn.seecoder.data.server.utils.aspects.dataExtraction.DataExtractor;
-import cn.seecoder.judgement.PlaygroundClient;
-import cn.seecoder.judgement.PlaygroundException;
-import cn.seecoder.judgement.StudentAnswerRecordVO;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.format.datetime.standard.DateTimeFormatterFactory;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.client.RestTemplate;
-
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-import java.util.LinkedList;
-import java.util.List;
-
-@Component
-public class PlaygroundSchedule {
-
-    @Value("${sys.playground.url}")
-    private String playgroundBaseUrl;
-
-    @Autowired
-    private ExtractionLogService extractionLogService;
-
-    @Autowired
-    private GeneralRecordRepository generalRecordRepository;
-
-    @Autowired
-    private PlaygroungRepository playgroungRepository;
-
-    @Autowired
-    private RestTemplate restTemplate;
-
-    private final String source = "playground";
-
-//    @Scheduled(cron = "0 0 2 * * ?")
-    @DataExtractor(source)
-    @Transactional(rollbackFor = Exception.class)
-    public void playGroundDataExtraction() throws Exception {
-        PlaygroundClient playgroundClient = new PlaygroundClient(playgroundBaseUrl,"");
-        LocalDateTime start = extractionLogService.getExtractionStartTime(source);
-        LocalDateTime end = extractionLogService.getExtractionEndTime(source);
-        List<StudentAnswerRecordVO> studentAnswerRecordVOList = playgroundClient.getLevel(start.toString(),end.toString());
-
-        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-        studentAnswerRecordVOList.forEach(studentAnswerRecordVO -> {
-            GeneralRecordDao tmpGeneralRecordDao = GeneralRecordDao.builder().dataSource("playground")
-                    .answer(studentAnswerRecordVO.getAnswer())
-                    .pass(studentAnswerRecordVO.isCorrect()?1:0)
-                    .questionId(studentAnswerRecordVO.getQuestionId())
-                    .score(studentAnswerRecordVO.isCorrect()?5:0)
-                    .scoreTotal(5)
-                    .startTime(LocalDateTime.parse(studentAnswerRecordVO.getStartTime(),df)) //playground的开始结束时间就是做每道题的开始结束时间
-                    .endTime(LocalDateTime.parse(studentAnswerRecordVO.getEndTime(),df))
-                    .submitTime(LocalDateTime.parse(studentAnswerRecordVO.getEndTime(),df))
-                    .userId(Math.toIntExact(studentAnswerRecordVO.getUserId()))
-                    .id(null)
-                    .createTime(null)
-                    .updateTime(null).build();
-            tmpGeneralRecordDao = generalRecordRepository.save(tmpGeneralRecordDao);
-
-            PlaygroundDao playgroundDao = PlaygroundDao.builder()
-                    .generalId(tmpGeneralRecordDao.getId())
-                    .levelId(Math.toIntExact(studentAnswerRecordVO.getLevelId())) // Long转int的问题短期应该不会遇到。。除非这系统亿万并发量(手动滑稽
-                    .levelName(studentAnswerRecordVO.getLevelName())
-                    .subjectId(Math.toIntExact(studentAnswerRecordVO.getSubjectId()))
-                    .id(null)
-                    .build();
-            playgroungRepository.save(playgroundDao);
-
-        });
-    }
-}

+ 0 - 96
seec-data-server/src/main/java/cn/seecoder/data/server/schedule/SonarSchedule.java

@@ -1,96 +0,0 @@
-package cn.seecoder.data.server.schedule;
-
-import cn.seecoder.data.server.domain.sonar.SonarCoderDao;
-import cn.seecoder.data.server.dto.coder.CoderDto;
-import cn.seecoder.data.server.dto.coder.CoderSonarDto;
-import cn.seecoder.data.server.dto.coder.Response;
-import cn.seecoder.data.server.repository.SonarCoderRepository;
-import cn.seecoder.data.server.service.ExtractionLogService;
-import cn.seecoder.data.server.utils.aspects.dataExtraction.DataExtractor;
-import cn.seecoder.data.server.utils.enums.ErrorCodeEnum;
-import cn.seecoder.data.server.utils.enums.TimeType;
-import cn.seecoder.data.server.utils.exception.GlobalException;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.core.ParameterizedTypeReference;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.ResponseEntity;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.client.RestTemplate;
-
-import java.time.LocalDateTime;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-@Component
-public class SonarSchedule {
-
-    private final String source = "coderSonar";
-
-    @Value("${sys.coder.url}")
-    private String coderBaseUrl;
-
-    @Autowired
-    private ExtractionLogService extractionLogService;
-
-    @Autowired
-    private SonarCoderRepository sonarCoderRepository;
-
-    @Autowired
-    private RestTemplate restTemplate;
-
-//    @Scheduled(cron = "0 0 2 * * ?")
-    @DataExtractor(source)
-    @Transactional(rollbackFor = Exception.class)
-    public void coderSoanrDataExtraction() throws Exception {
-        LocalDateTime start = extractionLogService.getExtractionStartTime(source,1, TimeType.DAY);
-        LocalDateTime end = extractionLogService.getExtractionEndTime(source);
-
-        Map<String,String> param1 = buildParam(start, end);
-
-        String sonarCoderApi = "/api/statistic/getSonar?startAt={startTime}&endAt={endTime}";
-        String url = coderBaseUrl + sonarCoderApi;
-        ParameterizedTypeReference<Response<List<CoderSonarDto>>> responseType = new ParameterizedTypeReference<Response<List<CoderSonarDto>>>() {};
-
-        List<CoderSonarDto> coderSonarDtos = getCoderSonarData(url,param1,responseType);
-        List<SonarCoderDao> sonarCoderDaos = dataFilter(coderSonarDtos);
-        sonarCoderRepository.saveAll(sonarCoderDaos);
-    }
-
-    private SonarCoderDao dtoToDaoMapper(CoderSonarDto sonarDto) {
-        return SonarCoderDao.builder()
-                .commitId(sonarDto.getCommitId())
-                .sonarName(sonarDto.getSonarName())
-                .userId(sonarDto.getUserId())
-                .build();
-    }
-
-    private List<SonarCoderDao> dataFilter(List<CoderSonarDto> inp) {
-        Map<Integer,SonarCoderDao> map = new HashMap<>();
-        inp.forEach(item -> {
-            if(!map.containsKey(item.getCommitId())) {
-                map.put(item.getCommitId(),dtoToDaoMapper(item));
-            }
-        });
-        return (List<SonarCoderDao>) map.values();
-    }
-
-    private Map<String,String> buildParam(LocalDateTime start,LocalDateTime end) {
-        Map<String,String> param = new HashMap<>();
-        param.put("startTime",start.toString());
-        param.put("endTime",end.toString());
-        return param;
-    }
-
-    private List<CoderSonarDto> getCoderSonarData(String url, Map<String,String> param, ParameterizedTypeReference<Response<List<CoderSonarDto>>> responseType) {
-        ResponseEntity<Response<List<CoderSonarDto>>> r = restTemplate.exchange(url, HttpMethod.GET,null,responseType,param );
-        Response<List<CoderSonarDto>> body = r.getBody();
-        if (body == null || body.getCode()!=200) throw new GlobalException(ErrorCodeEnum.SERVICE_ERROR_C0002);
-        List<CoderSonarDto> source = body.getSource();
-        if(source == null || source.size()==0) throw new GlobalException(ErrorCodeEnum.SERVICE_ERROR_C0003);
-        return source;
-    }
-}

+ 0 - 37
seec-data-server/src/main/java/cn/seecoder/data/server/service/AnalysisService.java

@@ -1,37 +0,0 @@
-package cn.seecoder.data.server.service;
-
-import org.springframework.stereotype.Service;
-
-import java.util.Map;
-
-@Service
-public interface AnalysisService {
-    /**
-     * 获取用户在子系统评分
-     * @param userId
-     * @return
-     */
-    public Map<String,Double> getSystemScoreByUserId(Integer userId);
-
-
-    /**
-     * 以周为单位获取用户在子系统评分
-     * @param userId
-     * @return
-     */
-    public Map<String,Double> getSystemWeekScoreByUserId(Integer userId);
-
-    /**
-     * 获取用户的行为数据得分
-     * @param userId
-     * @return
-     */
-    public Map<String,Double> getDepositionScoreByUserId(Integer userId);
-
-    /**
-     * 以周为单位获取用户在子系统评分
-     * @param userId
-     * @return
-     */
-    public Map<String,Double> getDepositionWeekScoreByUserId(Integer userId);
-}

+ 0 - 8
seec-data-server/src/main/java/cn/seecoder/data/server/service/CoderService.java

@@ -1,8 +0,0 @@
-package cn.seecoder.data.server.service;
-
-import java.time.LocalDateTime;
-
-public interface CoderService {
-    public double getCoderGrade(Integer userId);
-    public double getCoderGrade(Integer userId, LocalDateTime start, LocalDateTime end);
-}

+ 0 - 7
seec-data-server/src/main/java/cn/seecoder/data/server/service/CompetencyService.java

@@ -1,7 +0,0 @@
-package cn.seecoder.data.server.service;
-import java.util.Map;
-
-public interface CompetencyService {
-    public double getCompetencyScore(Map<String, Double> scores);
-    public Map<String,Double> getCompetencyScores(int userId);
-}

+ 0 - 11
seec-data-server/src/main/java/cn/seecoder/data/server/service/DevcloudService.java

@@ -1,11 +0,0 @@
-package cn.seecoder.data.server.service;
-
-import java.time.LocalDateTime;
-
-public interface DevcloudService {
-
-    //通过用户id,获取用户在commit占比上的得分(注意,只有用户提交时按gitlab email提交的commit记录才会录入统计
-    public Double commitScoreCompute(Integer userId);
-
-    public Double commitScoreCompute(Integer userId, LocalDateTime start, LocalDateTime end);
-}

+ 0 - 34
seec-data-server/src/main/java/cn/seecoder/data/server/service/HelperService.java

@@ -1,34 +0,0 @@
-package cn.seecoder.data.server.service;
-
-import org.springframework.stereotype.Service;
-
-import javax.persistence.criteria.CriteriaBuilder;
-
-@Service
-public interface HelperService {
-
-    /**
-     * 获取用户在helper的事件数据
-     * @param id
-     * @return
-     */
-    public double getHelperEventScoreById(Integer id);
-
-    /**
-     * 获取用户在helper的事件周报数据
-     */
-
-    public double getHelperEventScoreByIdByWeek(Integer id);
-
-    /**
-     * 获取用户在helper总分数
-     */
-    public double getHelperQuestionScoreById(Integer id);
-
-    /**
-     * 获取用户在helper总分周报数据
-     */
-    public double getHelperQuestionScoreByIdByWeek(Integer id);
-
-
-}

+ 0 - 228
seec-data-server/src/main/java/cn/seecoder/data/server/service/Impl/AnalysisServiceImpl.java

@@ -1,228 +0,0 @@
-package cn.seecoder.data.server.service.Impl;
-
-import cn.hutool.core.text.csv.CsvData;
-import cn.hutool.core.text.csv.CsvReader;
-import cn.hutool.core.text.csv.CsvRow;
-import cn.seecoder.data.server.repository.GeneralRecordRepository;
-import cn.seecoder.data.server.service.*;
-import org.springframework.stereotype.Service;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStreamReader;
-import java.nio.charset.StandardCharsets;
-import java.time.LocalDateTime;
-import java.util.HashMap;
-import java.util.Map;
-
-
-@Service
-public class AnalysisServiceImpl implements AnalysisService {
-
-
-    final HelperService helperService;
-
-    final EvaluateService evaluateService;
-
-    final CoderService coderService;
-
-    final DevcloudService devcloudService;
-
-    final PlaygroundService playgroundService;
-
-    final KnowledgeService knowledgeService;
-
-    final SonarqubeService sonarqubeService;
-
-    public AnalysisServiceImpl(HelperService helperService, EvaluateService evaluateService, CoderService coderService, DevcloudService devcloudService, PlaygroundService playgroundService, KnowledgeService knowledgeService, SonarqubeService sonarqubeService) {
-        this.helperService = helperService;
-        this.evaluateService = evaluateService;
-        this.coderService = coderService;
-        this.devcloudService = devcloudService;
-        this.playgroundService = playgroundService;
-        this.knowledgeService = knowledgeService;
-        this.sonarqubeService = sonarqubeService;
-    }
-
-    @Override
-    public Map<String,Double> getSystemScoreByUserId(Integer userId) {
-        HashMap<String,Double> ans = new HashMap<>();
-        LocalDateTime end = LocalDateTime.now();
-        LocalDateTime start = LocalDateTime.of(2000, 1, 1, 0, 0, 0);
-        ans.put("evaluate",evaluateService.getEvaluationScore(userId));
-        ans.put("helper",helperService.getHelperQuestionScoreById(userId)*0.5+helperService.getHelperEventScoreById(userId)*0.5);
-        ans.put("coder",coderService.getCoderGrade(userId,start,end));
-        ans.put("devcloud", devcloudService.commitScoreCompute(userId,start,end));
-        ans.put("playground", playgroundService.getQuestionScore(userId,start,end));
-        return ans;
-    }
-
-    @Override
-    public Map<String,Double> getSystemWeekScoreByUserId(Integer userId){
-        HashMap<String,Double> ans = new HashMap<>();
-        LocalDateTime end = LocalDateTime.now();
-        LocalDateTime start = end.minusDays(7);
-        ans.put("Evaluate",evaluateService.getEvaluationScoreByWeek(userId));
-        ans.put("Helper",helperService.getHelperQuestionScoreByIdByWeek(userId)*0.5+helperService.getHelperEventScoreByIdByWeek(userId)*0.5);
-        ans.put("Coder",coderService.getCoderGrade(userId,start,end));
-        ans.put("Devcloud", devcloudService.commitScoreCompute(userId,start,end));
-        ans.put("Playground", playgroundService.getQuestionScore(userId,start,end));
-        return ans;
-    }
-
-    @Override
-    public Map<String, Double> getDepositionScoreByUserId(Integer userId) {
-        HashMap<String,Double> ans = new HashMap<>();
-        ans.put("Activity", knowledgeService.getBokInteractionScore(userId)*0.5+helperService.getHelperEventScoreById(userId));
-        ans.put("Cooperation", devcloudService.commitScoreCompute(userId));
-        ans.put("Quality", sonarqubeService.getSonarScoreOfUser(userId));
-        return ans;
-    }
-
-    @Override
-    public Map<String, Double> getDepositionWeekScoreByUserId(Integer userId) {
-        HashMap<String,Double> ans = new HashMap<>();
-        LocalDateTime end = LocalDateTime.now();
-        LocalDateTime start = end.minusDays(7);
-        ans.put("Activity", helperService.getHelperEventScoreByIdByWeek(userId));
-        ans.put("Cooperation", devcloudService.commitScoreCompute(userId,start,end));
-        ans.put("Quality", sonarqubeService.getSonarScoreOfUser(userId,start,end));
-        return ans;
-    }
-
-
-//    @Autowired
-//    private GeneralRecordRepository generalRecordRepository;
-//
-//    @Autowired
-//    private KnowledgeRepository knowledgeRepository;
-
-
-
-//    private KnowledgePointVO getTreeNode(int userId) {
-//        List generalScoreList = generalRecordRepository.getByUserIdMaxScore(userId);
-//        ArrayList<String> questionIds = new ArrayList<>();
-//        ArrayList<Double> scores = new ArrayList<>();
-//        ArrayList<Double> scoresTotal = new ArrayList<>();
-//        for(int i=0;i<generalScoreList.size();i++) {
-//            Object[] cells = (Object[]) generalScoreList.get(i);
-//            questionIds.add((String)cells[0]);
-//            scores.add(Double.valueOf(cells[1].toString()));
-//            scoresTotal.add(Double.valueOf(generalRecordRepository.getByQuestionId((String)cells[0]).get(0).getScoreTotal().toString()));
-//        }
-//        SeecoderBokClient seecoderBokClient = new SeecoderBokClient("http://bok.seec.seecoder.cn");
-//        List<QuestionVO> questionVOS = seecoderBokClient.getQuestionListByIds(questionIds);
-//        ArrayList<KnowledgePointVO> knowledgePointVOS = new ArrayList<KnowledgePointVO>();
-//        ArrayList<String> knowledgeName = new ArrayList<>();
-//        double[] weights = {1,1,1,1.1,1.2};
-//        for(int i=0;i<questionVOS.size();i++){
-//            QuestionVO questionVO = questionVOS.get(i);
-//            ArrayList<String> knowledgeList = (ArrayList<String>) questionVO.getKnowledgeId();
-//            if(knowledgeList!=null && knowledgeList.size()>0) {
-//                for (String knowledge : knowledgeList) {
-//                    if(knowledgeName.contains(knowledge)){
-//                        int index = knowledgeName.indexOf(knowledge);
-//                        KnowledgePointVO knowledgePointVO = knowledgePointVOS.get(index);
-//                        if(questionVO.getWeight()==null || questionVO.getWeight()==0){
-//                            knowledgePointVO.setScoreGotten(knowledgePointVO.getScoreGotten()+scores.get(i));
-//                            knowledgePointVO.setScoreTotal(knowledgePointVO.getScoreTotal()+scoresTotal.get(i));
-//                            knowledgePointVO.setQuestionsNumDone(knowledgePointVO.getQuestionsNumDone()+1);
-//                        }
-//                        else{
-//                            knowledgePointVO.setScoreGotten(knowledgePointVO.getScoreGotten()+scores.get(i)*weights[questionVO.getWeight()]);
-//                            knowledgePointVO.setScoreTotal(knowledgePointVO.getScoreTotal()+scoresTotal.get(i));
-//                            knowledgePointVO.setQuestionsNumDone(knowledgePointVO.getQuestionsNumDone()+1);
-//                        }
-//                    }
-//                    else{
-//                        knowledgeName.add(knowledge);
-//                        if(questionVO.getWeight()!=null && questionVO.getWeight()!=0)
-//                            knowledgePointVOS.add(new KnowledgePointVO(knowledge,scores.get(i)*weights[questionVO.getWeight()]
-//                                    ,scoresTotal.get(i),1,0,null));
-//                        else
-//                            knowledgePointVOS.add(new KnowledgePointVO(knowledge,scores.get(i)
-//                                    ,scoresTotal.get(i),1,0,null));
-//                    }
-//                }
-//            }
-//        }
-//        for(int i=0;i<knowledgePointVOS.size();i++){
-//            KnowledgePointVO knowledgePointVO = knowledgePointVOS.get(i);
-//            ArrayList<String> knowledgeIds = new ArrayList<>();
-//            knowledgeIds.add(knowledgePointVO.getKnowledge());
-//            long questionNum = seecoderBokClient.getQuestionList(null,null,null,null,knowledgeIds,null).getTotalElements();
-//            knowledgePointVO.setQuestionsNumTotal(questionNum);
-//        }
-//        KnowledgePointVO root = new KnowledgePointVO("SE",0,0,0,0,null);
-//        root.setName("Software Engineering");
-//        for(int i=0;i<knowledgePointVOS.size();i++){
-//            KnowledgePointVO node = knowledgePointVOS.get(i);
-//            String[] tempNodes = node.getKnowledge().split("\\.");
-//            boolean newNode = false;
-//            if(tempNodes.length>0){
-//                if(tempNodes[0].trim().equals("SE")) {
-//                    addstatistics(root,node);
-//                }
-//                else{
-//                    int deep = 0;
-//                    KnowledgePointVO target = root;
-//                    String prefix = "";
-//                    while (tempNodes.length>deep){
-//                        ArrayList<String> abbreviations = getAbbreviationOnVO(target.getKnowledgePointVOs());
-//                        String knowledgeAbb;
-//                        if(!newNode)
-//                            addstatistics(target,node);
-//                        if(prefix.equals(""))
-//                            knowledgeAbb = prefix + tempNodes[deep];
-//                        else
-//                            knowledgeAbb = prefix + "." + tempNodes[deep];
-//                        if(abbreviations.contains(knowledgeAbb))
-//                            target = target.getKnowledgePointVOs().get(abbreviations.indexOf(knowledgeAbb));
-//                        else{
-//                            newNode = true;
-//                            KnowledgePointVO temp = new KnowledgePointVO(knowledgeAbb, node.getScoreGotten(), node.getScoreTotal(),
-//                                    node.getQuestionsNumDone(), node.getQuestionsNumTotal(), null);
-//                            temp.setName(knowledgeRepository.findByAbbreviation(knowledgeAbb).getName());
-//                            ArrayList<KnowledgePointVO> know = (ArrayList<KnowledgePointVO>) target.getKnowledgePointVOs();
-//                            if(know == null)
-//                                know = new ArrayList<>();
-//                            know.add(temp);
-//                            target.setKnowledgePointVOs(know);
-//                            target = temp;
-//                        }
-//                        prefix = knowledgeAbb;
-//                        deep++;
-//                    }
-//                }
-//            }
-//        }
-//        getCoverAndCorretRates(root);
-//        return root;
-//    }
-//
-//    private ArrayList<String> getAbbreviationOnVO(List<KnowledgePointVO> knowledgePointVOS){
-//        ArrayList<String> arrayList= new ArrayList<>();
-//        if(knowledgePointVOS!=null && knowledgePointVOS.size()>0) {
-//            for (KnowledgePointVO knowledgePointVO : knowledgePointVOS)
-//                arrayList.add(knowledgePointVO.getKnowledge());
-//        }
-//        return arrayList;
-//    }
-//
-//    private void addstatistics(KnowledgePointVO target,KnowledgePointVO adder){
-//        target.setScoreGotten(target.getScoreGotten()+adder.getScoreGotten());
-//        target.setScoreTotal(target.getScoreTotal()+adder.getScoreTotal());
-//        target.setQuestionsNumDone(target.getQuestionsNumDone()+adder.getQuestionsNumDone());
-//        target.setQuestionsNumTotal(target.getQuestionsNumTotal()+adder.getQuestionsNumTotal());
-//    }
-//
-//    private void getCoverAndCorretRates(KnowledgePointVO root){
-//        root.setCoverageRate(root.getQuestionsNumDone()/ root.getQuestionsNumTotal());
-//        root.setCorrectRate(root.getScoreGotten()/root.getScoreTotal());
-//        if(root.getKnowledgePointVOs()!=null && root.getKnowledgePointVOs().size()>0){
-//            for(KnowledgePointVO temp : root.getKnowledgePointVOs())
-//                getCoverAndCorretRates(temp);
-//        }
-//    }
-}

+ 0 - 71
seec-data-server/src/main/java/cn/seecoder/data/server/service/Impl/CoderServiceImpl.java

@@ -1,71 +0,0 @@
-package cn.seecoder.data.server.service.Impl;
-
-import cn.seecoder.data.server.domain.CoderDao;
-import cn.seecoder.data.server.repository.CoderRepository;
-import cn.seecoder.data.server.service.CoderService;
-import cn.seecoder.data.server.utils.Utils;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.List;
-import java.util.concurrent.atomic.AtomicReference;
-
-@Service
-public class CoderServiceImpl implements CoderService {
-
-    @Autowired
-    CoderRepository coderRepository;
-
-    final double HIGH = 1.05;
-    final double HIGH_MIDDLE = 1.0;
-    final double MIDDLE_LOW = 0.95;
-    final double LOW = 0.85;
-
-    final double MAX_SCORE = 100;
-
-    @Override
-    public double getCoderGrade(Integer userId, LocalDateTime start, LocalDateTime end) {
-        try {
-            AtomicReference<Double> grade = new AtomicReference<>(0.0);
-            AtomicReference<Double> sumGrade = new AtomicReference<>(0.0);
-            List<CoderDao> coderInfoByUser = coderRepository.findByUserIdAndLastCommitAtBetween(userId,start,end);
-            coderInfoByUser.forEach(info -> {
-                double weight = 1.0;
-                Integer score = info.getScore();
-                Integer problemId = info.getProblemId();
-                Integer examId = info.getExamId();
-                LocalDateTime lastCommitAt = info.getSubmitAt();
-                List<CoderDao> coderDaoList = coderRepository.findByExamIdAndProblemIdAndLastCommitAtBetweenOrderByLastCommitAt(examId, problemId,start,end);
-
-                ArrayList<LocalDateTime> commitTimeQuartiles = new ArrayList<>(3);
-                commitTimeQuartiles.add(coderDaoList.get(coderDaoList.size()/4).getSubmitAt());
-                commitTimeQuartiles.add(coderDaoList.get(coderDaoList.size()*2/4).getSubmitAt());
-                commitTimeQuartiles.add(coderDaoList.get(coderDaoList.size()*3/4).getSubmitAt());
-                if(lastCommitAt.compareTo(commitTimeQuartiles.get(0))<=0) weight = HIGH;
-                else if(lastCommitAt.compareTo(commitTimeQuartiles.get(1))<=0) weight = HIGH_MIDDLE;
-                else if(lastCommitAt.compareTo(commitTimeQuartiles.get(2))<=0) weight = MIDDLE_LOW;
-                else weight = LOW;
-
-                double finalWeight = weight;
-                grade.updateAndGet(v -> v + finalWeight * score);
-                sumGrade.updateAndGet(v -> v + MAX_SCORE);
-            });
-
-            if(sumGrade.get() == 0.0) return 0.0;
-            double result = grade.get() / sumGrade.get();
-            return Math.min(result, 1.0) * 100;
-        } catch (Exception e) {
-            LoggerFactory.getLogger(this.getClass()).error("score: coder得分计算失败" + "  userId: "+userId, e);
-            return 0.0;
-        }
-    }
-
-    @Override
-    public double getCoderGrade(Integer userId) {
-        return getCoderGrade(userId, Utils.getSmallStartTime(),LocalDateTime.now());
-    }
-}

+ 0 - 71
seec-data-server/src/main/java/cn/seecoder/data/server/service/Impl/CompetencyServiceImpl.java

@@ -1,71 +0,0 @@
-package cn.seecoder.data.server.service.Impl;
-
-import cn.seecoder.data.server.service.*;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicReference;
-
-@Service
-public class CompetencyServiceImpl implements CompetencyService {
-
-    SonarqubeService sonarqubeService;
-    HelperService helperService;
-    DevcloudService devcloudService;
-    KnowledgeService knowledgeService;
-    CoderService coderService;
-
-    @Autowired
-    public CompetencyServiceImpl(SonarqubeService sonarqubeService,
-            HelperService helperService,
-            DevcloudService devcloudService,
-            KnowledgeService knowledgeService,
-            CoderService coderService) {
-        this.coderService = coderService;
-        this.knowledgeService = knowledgeService;
-        this.devcloudService = devcloudService;
-        this.helperService = helperService;
-        this.sonarqubeService = sonarqubeService;
-    }
-
-    @Override
-    public double getCompetencyScore(Map<String, Double> scores) {
-        double[] weight = new double[]{0.5,0.3,0.2}; // Knowledge, Dispositions, Skills
-        AtomicReference<Double> res = new AtomicReference<>(0.0);
-        scores.forEach((k,v) -> {
-            switch (k) {
-                case "Knowledge": res.updateAndGet(v1 -> (double) (v1 + v * weight[0]));
-                case "Dispositions": res.updateAndGet(v1 -> (double) (v1 + v * weight[1]));
-                case "Skills": res.updateAndGet(v1 -> (double) (v1 + v * weight[2]));
-            }
-        });
-        return res.get();
-    }
-
-    @Override
-    public Map<String, Double> getCompetencyScores(int userId) {
-        Map<String, Double> map = new HashMap<>();
-        map.put("Knowledge", getKnowledgeScore(userId));
-        map.put("Dispositions", getDispositionsScore(userId));
-        map.put("Skills", getSkillsScore(userId));
-        return map;
-    }
-
-    private double getKnowledgeScore(int userId) { // Knwoledge Service
-        double knowledgeScore = knowledgeService.getFAHPScoreOnPosition("all",userId);
-        return knowledgeScore;
-    }
-    private double getSkillsScore(int userId) { // Coder Service
-        double coderScore = coderService.getCoderGrade(userId);
-        return coderScore;
-    }
-    private double getDispositionsScore(int userId) { // Helper Service,Devcloud Service, SonarqubeService
-        double[] weight = new double[]{0.33, 0.33, 0.34};
-        double sonarScore = sonarqubeService.getSonarScoreOfUser(userId);
-        double helperScore = helperService.getHelperEventScoreById(userId);
-        double devcloudScore = devcloudService.commitScoreCompute(userId);
-        return sonarScore * weight[0] + helperScore * weight[1] + devcloudScore * weight[2];
-    }
-}

+ 0 - 87
seec-data-server/src/main/java/cn/seecoder/data/server/service/Impl/DevcloudServiceImpl.java

@@ -1,87 +0,0 @@
-package cn.seecoder.data.server.service.Impl;
-
-import cn.seecoder.data.server.domain.DevcloudCommitDao;
-import cn.seecoder.data.server.dto.devcloud.DevcloudCommitCoverageDto;
-import cn.seecoder.data.server.dto.devcloud.Response;
-import cn.seecoder.data.server.repository.DevcloudCommitRepository;
-import cn.seecoder.data.server.service.DevcloudService;
-import cn.seecoder.data.server.utils.Utils;
-import com.nju.edu.gitlab.SeecoderGitlabClient;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-
-import java.time.LocalDateTime;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.atomic.AtomicReference;
-import java.util.stream.Collectors;
-
-@Service
-public class DevcloudServiceImpl implements DevcloudService {
-
-    @Value("${sys.gitlab.url}")
-    private String gitlabUrl;
-
-    @Autowired
-    DevcloudCommitRepository devcloudCommitRepository;
-
-    @Override
-    public Double commitScoreCompute(Integer userId) {
-        return commitScoreCompute(userId, Utils.getSmallStartTime(),LocalDateTime.now());
-    }
-
-    @Override
-    public Double commitScoreCompute(Integer userId, LocalDateTime start,LocalDateTime end) { // TODO
-        try {
-            // 1. get email from gitlab
-            //SeecoderGitlabClient seecoderGitlabClient = new SeecoderGitlabClient(gitlabUrl,gitlabToken);
-            String email = "aaa";
-            // 2. fetch data from devcloudRepo
-
-            //list [{  projectId: 1, commitTimes: 10, allCommits: 30, allPeople: 3 }, ... ]
-
-            List<DevcloudCommitDao> personalCommitDaos = devcloudCommitRepository.findByEmailAndSubmitTimeBetween(email, start, end);
-            Map<Integer,DevcloudCommitCoverageDto> devcloudCommitCoverageMap = new HashMap<>();
-
-            personalCommitDaos.forEach(personalCommitDao -> {
-                Integer projectId = personalCommitDao.getProjectId();
-                if(devcloudCommitCoverageMap.containsKey(projectId)) {
-                    DevcloudCommitCoverageDto devcloudCommitCoverageDto = devcloudCommitCoverageMap.get(projectId);
-                    devcloudCommitCoverageDto.setCommitTimes(devcloudCommitCoverageDto.getCommitTimes() + 1);
-                } else {
-                    devcloudCommitCoverageMap.put(projectId,new DevcloudCommitCoverageDto(projectId,1,0,0));
-                }
-            });
-
-            List<DevcloudCommitCoverageDto> coverageDtos = devcloudCommitCoverageMap.values().stream().peek(devcloudCommitCoverageDto -> {
-                Integer projectId = devcloudCommitCoverageDto.getProjectId();
-                Integer allCommitCount = devcloudCommitRepository.findCountByProjectIdAndSubmitTimeBetween(projectId, start, end);
-                Integer allCommitter = devcloudCommitRepository.findCommitterCountByProjectIdAndSubmitTimeBetween(projectId, start, end);
-                devcloudCommitCoverageDto.setAllCommits(allCommitCount);
-                devcloudCommitCoverageDto.setAllPeople(allCommitter);
-            }).collect(Collectors.toList());
-
-            // 3. analysis and compute
-            AtomicInteger count = new AtomicInteger();
-            AtomicReference<Double> biasSum = new AtomicReference<>(0.0);
-            coverageDtos.forEach(data -> {
-                if(data.getAllPeople()>1) {
-                    double difference = data.getCommitTimes() - data.getAllCommits() * 1.0 / data.getAllPeople();
-                    biasSum.updateAndGet(v -> (double) (v + (difference > 0 ? difference / (data.getAllPeople()-1) : -difference) / data.getAllCommits() * data.getAllPeople()));
-                    count.addAndGet(1);
-                }
-            });
-            if(count.get() == 0) return 0.0;
-            double biasRate = biasSum.get()/count.get();
-            return 100 * (1 - biasRate);
-        } catch (Exception e) {
-            LoggerFactory.getLogger(this.getClass()).error("score: devcloud commit得分计算失败" + "  userId: "+userId,e);
-            return 0.0;
-        }
-    }
-}

+ 0 - 133
seec-data-server/src/main/java/cn/seecoder/data/server/service/Impl/HelperServiceImpl.java

@@ -1,133 +0,0 @@
-package cn.seecoder.data.server.service.Impl;
-
-import cn.seecoder.bok.client.SeecoderBokClient;
-import cn.seecoder.bok.common.vo.QuestionVO;
-import cn.seecoder.data.server.domain.GeneralRecordDao;
-import cn.seecoder.data.server.domain.helper.HelperEventDao;
-import cn.seecoder.data.server.repository.GeneralRecordRepository;
-import cn.seecoder.data.server.repository.helper.HelperEventRepository;
-import cn.seecoder.data.server.service.HelperService;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-
-import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.List;
-
-@Service
-public class HelperServiceImpl implements HelperService {
-
-    @Value("${sys.bok.url}")
-    private String bokBaseUrl;
-
-    final GeneralRecordRepository generalRecordRepository;
-
-    final HelperEventRepository helperEventRepository;
-
-    @Autowired
-    public HelperServiceImpl(GeneralRecordRepository generalRecordRepository, HelperEventRepository helperEventRepository){
-        this.generalRecordRepository = generalRecordRepository;
-        this.helperEventRepository = helperEventRepository;
-    }
-
-    @Override
-    public double getHelperEventScoreById(Integer userId) {
-        double score = 0;
-        try {
-            List<HelperEventDao> events = helperEventRepository.findByUserId(userId);
-            System.out.println(events);
-            score = getEventScoreOnList(events);
-        }catch (Exception e){
-            LoggerFactory.getLogger(this.getClass()).error("score: helper_event得分计算失败" + "  userId: "+userId, e);
-        }
-        return score;
-    }
-
-    @Override
-    public double getHelperEventScoreByIdByWeek(Integer userId) {
-        LocalDateTime end = LocalDateTime.now();
-        LocalDateTime start = end.minusDays(7);
-        double score = 0;
-        try {
-            List<HelperEventDao> events = helperEventRepository.findByUserIdAndTimeBetween(userId,start,end);
-            score = getEventScoreOnList(events);
-        }catch (Exception e){
-            LoggerFactory.getLogger(this.getClass()).error("score: helper_event得分计算失败" + "  userId: "+userId, e);
-        }
-        return score;
-    }
-
-    @Override
-    public double getHelperQuestionScoreById(Integer userId) {
-        double ans = 0;
-        try {
-            List<GeneralRecordDao> generalRecordDaoList = generalRecordRepository.getByUserIdAndDataSource(userId,"helper");
-            ans = getQuestionScoreOnList(generalRecordDaoList);
-        }catch (Exception e){
-            LoggerFactory.getLogger(this.getClass()).error("score: helper"+"得分计算失败" + "  userId: "+userId, e);
-        }
-        return ans;
-    }
-
-    @Override
-    public double getHelperQuestionScoreByIdByWeek(Integer userId) {
-        double ans = 0;
-        try {
-            LocalDateTime end = LocalDateTime.now();
-            LocalDateTime start = end.minusDays(7);
-            List<GeneralRecordDao> generalRecordDaoList = generalRecordRepository.getByUserIdAndDataSourceAndSubmitTimeBetween(userId,"helper",start,end);
-            ans = getQuestionScoreOnList(generalRecordDaoList);
-        }catch (Exception e){
-            LoggerFactory.getLogger(this.getClass()).error("score: helper"+"得分计算失败" + "  userId: "+userId, e);
-        }
-        return ans;
-    }
-
-    private double getEventScoreOnList(List<HelperEventDao> events){
-        double score = 0;
-        if (events.size() > 0) {
-            score = score + 60;
-            for (int i = 0; i < events.size(); i++) {
-                HelperEventDao event = events.get(i);
-                if (event.getType().equals("LESSON"))
-                    score = score + 5;
-                else if (event.getType().equals("QUIZ"))
-                    score = score + 5;
-                else if (event.getType().equals("POST")) {
-                    String comment = event.getDescription();
-                    score = score + 5 + (comment.length() / 10.0 > 5 ? 5 : comment.length() / 10.0);
-                }
-            }
-        }
-        return score;
-    }
-
-    private double getQuestionScoreOnList(List<GeneralRecordDao> generalRecordDaoList){
-        SeecoderBokClient seecoderBokClient = new SeecoderBokClient(bokBaseUrl);
-        double ans = 0.0;
-        ArrayList<String> questionIds = new ArrayList<String>();
-        for (int i = 0; i < generalRecordDaoList.size(); i++)
-            questionIds.add(generalRecordDaoList.get(i).getQuestionId());
-        double scoreTotal = 0;
-        double score = 0;
-        double[] weight = {1, 1, 1, 1, 1.05, 1.1};
-        List<QuestionVO> questionVOS = new ArrayList<>();
-        for(int i=0;i<questionIds.size();i=i+10)
-            questionVOS.addAll(seecoderBokClient.getQuestionListByIds(questionIds.subList(i,i+10>questionIds.size()?questionIds.size():i+10)));
-        for (int i = 0; i < generalRecordDaoList.size(); i++) {
-            QuestionVO questionVO = questionVOS.get(i);
-            GeneralRecordDao generalRecordDao = generalRecordDaoList.get(i);
-            scoreTotal = scoreTotal + generalRecordDao.getScoreTotal();
-            if (questionVO.getWeight() == null || questionVO.getWeight() == 0)
-                score = score + generalRecordDao.getScore();
-            else
-                score = score + generalRecordDao.getScore() * weight[questionVO.getWeight()];
-        }
-        if(scoreTotal!=0)
-            ans = score / scoreTotal*100;
-        ans = ans>100?100:ans;
-        return ans;
-    }
-}

+ 0 - 361
seec-data-server/src/main/java/cn/seecoder/data/server/service/Impl/KnowledgeServiceImpl.java

@@ -1,361 +0,0 @@
-package cn.seecoder.data.server.service.Impl;
-
-import cn.hutool.core.text.csv.CsvData;
-import cn.hutool.core.text.csv.CsvReader;
-import cn.hutool.core.text.csv.CsvRow;
-import cn.seecoder.bok.client.SeecoderBokClient;
-import cn.seecoder.bok.common.vo.InteractionVO;
-import cn.seecoder.bok.common.vo.QuestionVO;
-import cn.seecoder.data.server.domain.GeneralRecordDao;
-import cn.seecoder.data.server.domain.knowledge.KnowledgeDao;
-import cn.seecoder.data.server.domain.knowledge.KnowledgeOnPositionDao;
-import cn.seecoder.data.server.domain.knowledge.PositionWeightDao;
-import cn.seecoder.data.server.repository.GeneralRecordRepository;
-import cn.seecoder.data.server.repository.knowledge.KnowledgeRepository;
-import cn.seecoder.data.server.repository.knowledge.PositionWeightRepository;
-import cn.seecoder.data.server.service.KnowledgeService;
-import cn.seecoder.data.server.vo.knowledge.KnowledgePointVO;
-import cn.seecoder.data.server.vo.knowledge.KnowledgeVO;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-
-import java.io.File;
-import java.nio.charset.StandardCharsets;
-import java.time.LocalDateTime;
-import java.util.*;
-import java.util.stream.Collectors;
-
-@Service
-public class KnowledgeServiceImpl implements KnowledgeService {
-
-    @Value("${sys.bok.url}")
-    private String bokBaseUrl;
-
-    @Autowired
-    KnowledgeRepository knowledgeRepository;
-
-    @Autowired
-    PositionWeightRepository positionWeightRepository;
-
-    @Autowired
-    GeneralRecordRepository generalRecordRepository;
-
-    @Override
-    public List<KnowledgeVO> getAllKnowledgeAndWeight() {
-        List knowledgeOnPositionList = knowledgeRepository.findAllInfo();
-        ArrayList<KnowledgeOnPositionDao> knowledgeOnPositionDaos = objectToDao(knowledgeOnPositionList);
-        ArrayList<KnowledgeVO> knowledgeVOS = new ArrayList<>();
-        KnowledgeVO knowledgeVO = null;
-        if(knowledgeOnPositionDaos.size()>0)
-            knowledgeVO = new KnowledgeVO(knowledgeOnPositionDaos.get(0));
-        for(int i=1;i<knowledgeOnPositionDaos.size();i++){
-            KnowledgeOnPositionDao knowledge = knowledgeOnPositionDaos.get(i);
-            if(knowledge.getIsleaf()==0)
-                continue;
-            if(knowledgeOnPositionDaos.get(i).getId()==knowledgeOnPositionDaos.get(i-1).getId() && knowledge.getPosition()!=null && knowledge.getWeight()!=0){
-                knowledgeVO.getWeightOnPosition().put(knowledge.getPosition(),knowledge.getWeight());
-            }
-            else{
-                knowledgeVOS.add(knowledgeVO);
-                knowledgeVO = new KnowledgeVO(knowledgeOnPositionDaos.get(i));
-
-            }
-        }
-        return knowledgeVOS;
-    }
-
-    private ArrayList<KnowledgeOnPositionDao> objectToDao(List knowledgeOnPositionList) {
-        ArrayList<KnowledgeOnPositionDao> ans = new ArrayList<>();
-        for(int i=0;i<knowledgeOnPositionList.size();i++){
-            Object[] tempDaos = (Object[]) knowledgeOnPositionList.get(i);
-            KnowledgeOnPositionDao knowledgeOnPositionDao = (KnowledgeOnPositionDao.builder()
-                .id(Integer.valueOf(tempDaos[0].toString()))
-                .name(tempDaos[1].toString())
-                .nameEng(tempDaos[2].toString())
-                .abbreviation(tempDaos[3].toString())
-                .parentId(Integer.valueOf(tempDaos[4].toString()))
-                .parentName(tempDaos[5].toString())
-                .pid(Integer.valueOf(tempDaos[6].toString()))
-                .uid(Integer.valueOf(tempDaos[7].toString()))
-                .isleaf(Integer.valueOf(tempDaos[8].toString())).build());
-            if(tempDaos[9]!=null && tempDaos[10]!=null){
-                knowledgeOnPositionDao.setPosition(tempDaos[9].toString());
-                knowledgeOnPositionDao.setWeight(Double.valueOf(tempDaos[10].toString()));
-            }
-            ans.add(knowledgeOnPositionDao);
-        }
-        return ans;
-    }
-
-    @Override
-    public KnowledgeVO updatePositionWeight(KnowledgeVO knowledgeVO) {
-        Map<String,Double> positonWeight = knowledgeVO.getWeightOnPosition();
-        for(String position : positonWeight.keySet()){
-            PositionWeightDao positionWeightDao = new PositionWeightDao(knowledgeVO.getId(),position,positonWeight.get(position));
-            positionWeightRepository.save(positionWeightDao);
-        }
-        List<PositionWeightDao> positionWeightDaos = positionWeightRepository.findByKnowledgeId(knowledgeVO.getId());
-        Map<String,Double> ans = new HashMap<>();
-        for(int i=0;i<positionWeightDaos.size();i++)
-            ans.put(positionWeightDaos.get(i).getPosition(),positionWeightDaos.get(i).getWeight());
-        knowledgeVO.setWeightOnPosition(ans);
-        return knowledgeVO;
-    }
-
-    @Override
-    public KnowledgePointVO getTreeByPosition(String position) {
-        List<PositionWeightDao> positionWeightDaos;
-        if(position.equals("all")) {
-            positionWeightDaos = objectToPositonDao(knowledgeRepository.findAllInfo());
-        }
-        else
-            positionWeightDaos = positionWeightRepository.findByPosition(position);
-        SeecoderBokClient seecoderBokClient = new SeecoderBokClient("http://bok.seec.seecoder.cn");
-        KnowledgePointVO root = new KnowledgePointVO("SE","软件工程",0,0,0,0,0,0,0,null,0);
-        for(int i=0;i<positionWeightDaos.size();i++){
-            PositionWeightDao positionWeight = positionWeightDaos.get(i);
-            KnowledgeDao knowledgeInfo = knowledgeRepository.findById(positionWeight.getKnowledgeId());
-            if(knowledgeInfo==null || knowledgeInfo.getIsleaf()==0)
-                continue;
-            String[] knowledgeLevel = knowledgeInfo.getAbbreviation().split("\\.");
-            String prefix = "";
-            KnowledgePointVO upNode = root;
-            KnowledgePointVO nodeToAdd = null;
-            for(int j=0;j<knowledgeLevel.length;j++){
-                if(prefix!="")
-                    prefix = prefix + ".";
-                String tempLevel = prefix + knowledgeLevel[j];
-                if(!getAbbOnVO(upNode.getKnowledgePointVOs()).contains(tempLevel)){
-                    nodeToAdd = new KnowledgePointVO(tempLevel,knowledgeInfo.getName(),0,0,0,0,0,0,0,null,0);
-                    if(j+1==knowledgeLevel.length) {
-                        ArrayList<String> knowledgeIds = new ArrayList<>();
-                        knowledgeIds.add(tempLevel);
-                        long questionNum = seecoderBokClient.getQuestionList(null, null, null, null,knowledgeIds,null).getTotalElements();
-                        nodeToAdd.setQuestionsNumTotal(questionNum);
-                    }
-                    if(knowledgeRepository.findByAbbreviation(tempLevel).getIsleaf()==1)
-                        nodeToAdd.setLeafWeight(positionWeight.getWeight());
-                    else{
-                        String nodeName = knowledgeRepository.findByAbbreviation(tempLevel).getName();
-                        nodeToAdd.setName(nodeName);
-                    }
-                    if(upNode.getKnowledgePointVOs()==null){
-                        List<KnowledgePointVO> nodes = new ArrayList<>();
-                        nodes.add(nodeToAdd);
-                        upNode.setKnowledgePointVOs(nodes);
-                    }
-                    else
-                        upNode.getKnowledgePointVOs().add(nodeToAdd);
-                    upNode = nodeToAdd;
-                }
-                else
-                    upNode = upNode.getKnowledgePointVOs().get(getAbbOnVO(upNode.getKnowledgePointVOs()).indexOf(tempLevel));
-                prefix = tempLevel;
-            }
-        }
-        getQuestionTotal(root);
-        return root;
-    }
-
-    private List<PositionWeightDao> objectToPositonDao(List<Object> knowledgeOnPositionList) {
-        ArrayList<PositionWeightDao> ans = new ArrayList<>();
-        for(int i=0;i<knowledgeOnPositionList.size();i++){
-            Object[] tempDaos = (Object[]) knowledgeOnPositionList.get(i);
-            PositionWeightDao positionWeightDao = PositionWeightDao.builder()
-                    .knowledgeId(Integer.valueOf(tempDaos[0].toString())).build();
-            if(tempDaos[9]!=null && tempDaos[10]!=null){
-                positionWeightDao.setPosition(tempDaos[9].toString());
-                positionWeightDao.setWeight(Double.valueOf(tempDaos[10].toString()));
-            }
-            ans.add(positionWeightDao);
-        }
-        return ans;
-    }
-
-    @Override
-    public KnowledgePointVO getTreeByPositionAndUser(String position, int userId) {
-        KnowledgePointVO root = getTreeByPosition(position);
-        List generalRecordDaos = generalRecordRepository.getByUserIdMaxScore(userId);
-        ArrayList<String> questionIds = new ArrayList<>();
-        ArrayList<Double> scores = new ArrayList<>();
-        ArrayList<Double> scoresTotal = new ArrayList<>();
-        ArrayList<String> abbs = new ArrayList<>();
-        getLeafAbbOnNode(root,abbs);
-        for(int i=0;i<generalRecordDaos.size();i++) {
-            Object[] cells = (Object[]) generalRecordDaos.get(i);
-            questionIds.add((String)cells[0]);
-            scores.add(Double.valueOf(cells[1].toString()));
-            scoresTotal.add(Double.valueOf(generalRecordRepository.getByQuestionId((String)cells[0]).get(0).getScoreTotal()));
-        }
-        SeecoderBokClient seecoderBokClient = new SeecoderBokClient("http://bok.seec.seecoder.cn");
-        List<QuestionVO> questionVOS = seecoderBokClient.getQuestionListByIds(questionIds);
-        for(int i=0;i<questionVOS.size();i++){
-            QuestionVO questionInfo = questionVOS.get(i);
-            List<String> knowledges = questionInfo.getKnowledgeId();
-            if(knowledges!=null)
-                for(String knowledge : knowledges){
-                    if(abbs.contains(knowledge) && knowledgeRepository.findByAbbreviation(knowledge).getIsleaf()==1 && !knowledge.equals("SE"))
-                        addScoreToNode(root,scores.get(i),scoresTotal.get(i),questionInfo,knowledge,1);
-                }
-        }
-        return root;
-    }
-
-    @Override
-    public Map<String, Integer> getKnowledgeWeekCount(int userId) {
-        LocalDateTime endTime = LocalDateTime.now();
-        LocalDateTime startTime = endTime.minusDays(7);
-        List<GeneralRecordDao> questionRecords = generalRecordRepository.getByUserIdAndSubmitTimeBetween(userId,startTime,endTime);
-        SeecoderBokClient seecoderBokClient = new SeecoderBokClient(bokBaseUrl);
-        HashMap<String, Integer> ans = new HashMap<>();
-        List<String> questionIds = questionRecords.stream().map(record->record.getQuestionId()).collect(Collectors.toList());
-        List<QuestionVO> questions = seecoderBokClient.getQuestionListByIds(questionIds);
-        questions.stream().map(question->question.getKnowledgeId()).forEach((List<String> knowledges)-> {
-            if(knowledges!=null && knowledges.size()>0)
-                knowledges.stream().forEach((String knowledge)->{
-                    String name = knowledgeRepository.findByAbbreviation(knowledge).getName();
-                    if(ans.containsKey(name))
-                        ans.put(name,ans.get(name)+1);
-                    else
-                        ans.put(name,1);
-                });
-        });
-        HashMap<String,Integer> ans2 = new LinkedHashMap<>();
-        ans.entrySet().stream().sorted((p1,p2)->p2.getValue().compareTo(p1.getValue())).collect(Collectors.toList()).forEach(ele -> ans2.put(ele.getKey(), ele.getValue()));
-        return ans2;
-    }
-
-    @Override
-    public double getBokInteractionScore(int userId) {
-        double score = 0;
-        try {
-            SeecoderBokClient seecoderBokClient = new SeecoderBokClient(bokBaseUrl);
-            List<InteractionVO> records = seecoderBokClient.getUserInteractiveQuestionIn(userId + "", null);
-            long collectTime = records.stream().map(n -> n.getCollection()).filter(collect -> collect == true).count();
-            long rateTime = records.stream().map(n -> n.getRate()).filter(rate -> rate > 0).count();
-            score = score + collectTime * 5 + rateTime * 5;
-        }catch (Exception e){
-            LoggerFactory.getLogger(this.getClass()).error("score: bok_event得分计算失败" + "  userId: "+userId, e);
-        }
-        return score;
-    }
-
-    @Override
-    public Double getFAHPScoreOnPosition(String position,int userId) {
-        File file = new File(".\\seec-data-server\\src\\main\\java\\cn\\seecoder\\data\\server\\utils\\FAHPmatrix\\"+position+".csv");
-        CsvReader csvReader = new CsvReader();
-        csvReader.setContainsHeader(true);
-        CsvData csv = csvReader.read(file, StandardCharsets.UTF_8);
-        HashMap<String,Double> FAHPdata= new HashMap<>();
-        double div = 0;
-        double score = 0;
-        for (CsvRow row : csv.getRows())
-            div = div + Double.valueOf(row.get(1));
-        for (CsvRow row : csv.getRows())
-            FAHPdata.put(row.get(0),Double.valueOf(row.get(1))/div);
-
-//        List records = generalRecordRepository.getByUserIdMaxScore(userId);
-//        List<String> questionIds = new ArrayList<>();
-//        for(Object record : records){
-//            Object[] cells = (Object[]) record;
-//            questionIds.add((String) cells[0]);
-//        }
-//        List<QuestionVO> questionVOS = new ArrayList<>();
-//        List<String> knowledgeName = new ArrayList<>();
-//        for(int i=0;i<questionIds.size();i=i+10)
-//            questionVOS.addAll(seecoderBokClient.getQuestionListByIds(questionIds.subList(i,i+10>questionIds.size()?questionIds.size():i+10)));
-//        questionVOS.stream().map(a->a.getKnowledgeId()).forEach(ids->{
-//            if(ids!=null) {
-//                ids.stream().forEach(id -> {
-//                    knowledgeName.add(knowledgeRepository.findByAbbreviation(id).getName());
-//                });
-//            }
-//        });
-        KnowledgePointVO root = getTreeByPositionAndUser(position,userId);
-        score = calScore(root,FAHPdata);
-        return score;
-    }
-
-    private double calScore(KnowledgePointVO root,Map<String,Double> data){
-        double score = 0.0;
-        if(data.containsKey(root.getName()))
-            score = score + data.get(root.getName())*root.getScore();
-        else if(root.getKnowledgePointVOs()!=null){
-            for(KnowledgePointVO node : root.getKnowledgePointVOs())
-                score = score + calScore(node,data);
-        }
-        return score;
-    }
-
-    private KnowledgePointVO addScoreToNode(KnowledgePointVO root, Double score, Double scoreTotal, QuestionVO questionInfo,String knowledege,int deep) {
-        String[] nodeKnowledge = knowledege.split("\\.");
-        double[] questionWeight = {1,1,1,1.05,1.1};
-        String now = nodeKnowledge[0];
-        for(int i=1;i<deep && i<nodeKnowledge.length;i++)
-            now = now + "." + nodeKnowledge[i];
-        root.setQuestionsNumDone(root.getQuestionsNumDone()+1);
-        if(root.getLeafWeight()==0 && root.getKnowledgePointVOs()!=null){
-            KnowledgePointVO nextNode = root.getKnowledgePointVOs().get(getAbbOnVO(root.getKnowledgePointVOs()).indexOf(now));
-            KnowledgePointVO leafNode = addScoreToNode(nextNode,score,scoreTotal,questionInfo,knowledege,deep+1);
-            double weight = leafNode.getLeafWeight();
-            if(questionInfo.getWeight()!=null)
-                root.setScoreGotten(root.getScoreGotten()+(score*weight*questionWeight[questionInfo.getWeight()]));
-            else
-                root.setScoreGotten(root.getScoreGotten()+score*root.getLeafWeight());
-            root.setScoreTotal(root.getScoreTotal()+scoreTotal*weight);
-            if(root.getScoreTotal()!=0)
-                root.setCorrectRate(root.getScoreGotten()/root.getScoreTotal());
-            if(root.getQuestionsNumTotal()!=0)
-                root.setCoverageRate(root.getQuestionsNumDone()/root.getQuestionsNumTotal());
-            root.setScore(30*root.getCoverageRate() + 70*root.getCorrectRate());
-            return leafNode;
-        }
-        else{
-            if(questionInfo.getWeight()!=null)
-                root.setScoreGotten(root.getScoreGotten()+(score*root.getLeafWeight()*questionWeight[questionInfo.getWeight()]));
-            else
-                root.setScoreGotten(root.getScoreGotten()+score*root.getLeafWeight());
-            root.setScoreTotal(root.getScoreTotal()+scoreTotal*root.getLeafWeight());
-            if(root.getScoreTotal()!=0)
-                root.setCorrectRate(root.getScoreGotten()/root.getScoreTotal());
-            if(root.getQuestionsNumTotal()!=0)
-                root.setCoverageRate(root.getQuestionsNumDone()/root.getQuestionsNumTotal());
-            root.setQuestionsNumDone(root.getQuestionsNumDone()+1);
-            root.setScore(30*root.getCoverageRate() + 70*root.getCorrectRate());
-            return root;
-        }
-    }
-
-    private double getQuestionTotal(KnowledgePointVO root) {
-        if(root.getQuestionsNumTotal()!=0)
-            return root.getQuestionsNumTotal();
-        else{
-            double num = 0;
-            if(root.getKnowledgePointVOs()!=null){
-                for(KnowledgePointVO knowledgePointVO : root.getKnowledgePointVOs())
-                    num = num + getQuestionTotal(knowledgePointVO);
-                root.setQuestionsNumTotal(num);
-            }
-            return num;
-        }
-    }
-
-    public ArrayList<String> getAbbOnVO(List<KnowledgePointVO> knowledgePointVOS){
-        ArrayList<String> arrayList= new ArrayList<>();
-        if(knowledgePointVOS!=null && knowledgePointVOS.size()>0) {
-            for (KnowledgePointVO knowledgePointVO : knowledgePointVOS)
-                arrayList.add(knowledgePointVO.getKnowledge());
-        }
-        return arrayList;
-    }
-
-    public void getLeafAbbOnNode(KnowledgePointVO knowledgePointVO,ArrayList<String> ans){
-        if(knowledgePointVO.getKnowledgePointVOs()==null)
-            ans.add(knowledgePointVO.getKnowledge());
-        else
-            for(KnowledgePointVO child : knowledgePointVO.getKnowledgePointVOs())
-                getLeafAbbOnNode(child,ans);
-    }
-}

+ 0 - 62
seec-data-server/src/main/java/cn/seecoder/data/server/service/Impl/PlaygroundServiceImpl.java

@@ -1,62 +0,0 @@
-package cn.seecoder.data.server.service.Impl;
-
-import cn.seecoder.bok.client.SeecoderBokClient;
-import cn.seecoder.bok.common.vo.QuestionVO;
-import cn.seecoder.data.server.domain.GeneralRecordDao;
-import cn.seecoder.data.server.repository.GeneralRecordRepository;
-import cn.seecoder.data.server.service.PlaygroundService;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-
-import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.List;
-
-@Service
-public class PlaygroundServiceImpl implements PlaygroundService {
-
-    @Value("${sys.bok.url}")
-    private String bokBaseUrl;
-
-    final GeneralRecordRepository generalRecordRepository;
-
-    public PlaygroundServiceImpl(GeneralRecordRepository generalRecordRepository) {
-        this.generalRecordRepository = generalRecordRepository;
-    }
-
-
-    @Override
-    public Double getQuestionScore(Integer userId, LocalDateTime start, LocalDateTime end) {
-        double ans = 0;
-        try {
-            List<GeneralRecordDao> generalRecordDaoList = generalRecordRepository.getByUserIdAndDataSourceAndSubmitTimeBetween(userId,"playground",start,end);
-            SeecoderBokClient seecoderBokClient = new SeecoderBokClient(bokBaseUrl);
-            ArrayList<String> questionIds = new ArrayList<String>();
-            for (int i = 0; i < generalRecordDaoList.size(); i++)
-                questionIds.add(generalRecordDaoList.get(i).getQuestionId());
-            double scoreTotal = 0;
-            double score = 0;
-            double[] weight = {1, 1, 1, 1, 1.05, 1.1};
-            List<QuestionVO> questionVOS = new ArrayList<>();
-            for(int i=0;i<questionIds.size();i=i+10)
-                questionVOS.addAll(seecoderBokClient.getQuestionListByIds(questionIds.subList(i,i+10>questionIds.size()?questionIds.size():i+10)));
-            for (int i = 0; i < generalRecordDaoList.size(); i++) {
-                QuestionVO questionVO = questionVOS.get(i);
-                GeneralRecordDao generalRecordDao = generalRecordDaoList.get(i);
-                scoreTotal = scoreTotal + generalRecordDao.getScoreTotal();
-                if (questionVO.getWeight() == null || questionVO.getWeight() == 0)
-                    score = score + generalRecordDao.getScore();
-                else
-                    score = score + generalRecordDao.getScore() * weight[questionVO.getWeight()];
-            }
-            if(scoreTotal!=0)
-                ans = score / scoreTotal*100;
-            ans = ans>100?100:ans;
-            return ans;
-        }catch (Exception e){
-            LoggerFactory.getLogger(this.getClass()).error("score: playground"+"得分计算失败" + "  userId: "+userId, e);
-        }
-        return ans;
-    }
-}

+ 0 - 111
seec-data-server/src/main/java/cn/seecoder/data/server/service/Impl/SonarqubeServiceImpl.java

@@ -1,111 +0,0 @@
-package cn.seecoder.data.server.service.Impl;
-
-import cn.seecoder.data.server.domain.CoderDao;
-import cn.seecoder.data.server.domain.sonar.SonarCoderDao;
-import cn.seecoder.data.server.dto.sonarqube.ComponentTreeDto;
-import cn.seecoder.data.server.repository.CoderRepository;
-import cn.seecoder.data.server.repository.SonarCoderRepository;
-import cn.seecoder.data.server.service.SonarqubeService;
-import cn.seecoder.data.server.utils.Utils;
-import cn.seecoder.data.server.utils.enums.ErrorCodeEnum;
-import cn.seecoder.data.server.utils.exception.GlobalException;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.core.ParameterizedTypeReference;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Service;
-import org.springframework.web.client.RestTemplate;
-
-import java.time.LocalDateTime;
-import java.util.*;
-import java.util.concurrent.atomic.AtomicReference;
-import java.util.stream.Collectors;
-
-@Service
-public class SonarqubeServiceImpl implements SonarqubeService {
-
-    @Autowired
-    private SonarCoderRepository sonarCoderRepository;
-
-    @Autowired
-    private CoderRepository coderRepository;
-
-    @Autowired
-    private RestTemplate restTemplate;
-
-    @Value("${sys.sonarqube.url}")
-    private String sonarBaseUrl;
-
-    @Override
-    public double getSonarScoreOfUser(int userId) {
-        return getSonarScoreOfUser(userId, Utils.getSmallStartTime(), LocalDateTime.now());
-    }
-
-    @Override
-    public double getSonarScoreOfUser(int userId, LocalDateTime start, LocalDateTime end) { // 所有项目取平均分 , 100.0 满分
-        try {
-            List<ComponentTreeDto> componentTreeDtos = getSonarDataOfUser(userId, start, end);
-            double sum = componentTreeDtos.stream().mapToDouble(componentTreeDto -> handleMeasures(componentTreeDto.getBaseComponent().getMeasures())).sum();
-            if(componentTreeDtos.size() == 0)return 0.0;
-            return sum / componentTreeDtos.size();
-        } catch (Exception e) {
-            LoggerFactory.getLogger(this.getClass()).error("score: sonar得分计算失败" + "  userId: "+userId, e);
-            return 0.0;
-        }
-    }
-
-    private double handleMeasures(List<ComponentTreeDto.Measure> measures) { // 单个项目得分计算
-        AtomicReference<Double> sum = new AtomicReference<>(0.0);
-        measures.forEach(measure -> {
-            if(measure.getMetric().equals("duplicated_lines_density")) sum.updateAndGet(v -> (double) (v + 100.0 - Double.parseDouble(measure.getValue())));
-            else sum.updateAndGet(v -> (double) (v + (5 - (measure.getValue().charAt(0) - 'A')) * 20.0));
-        });
-        return sum.get() / measures.size();
-    }
-
-    private List<ComponentTreeDto> getSonarDataOfUser(int userId, LocalDateTime start, LocalDateTime end) { // note: 以后devcloud接入sonar之后,此处源码需要修改
-        // 0. 通过考试结束时间来获取所有 last commit
-        // 1. 在sonar coder表中通过last commit 获取到对应的 sonarname, 去重
-        Set<String> sonarNames = new HashSet<>();
-        Set<Integer> commitIdsSet =  coderRepository.findAllByUserIdAndLastCommitAtBetween(userId,start,end)
-                .stream().map(CoderDao::getCommitId).collect(Collectors.toSet());
-
-        commitIdsSet.forEach(commitId -> {
-            SonarCoderDao byCommitId = sonarCoderRepository.findByCommitId(commitId);
-            if(byCommitId!=null) sonarNames.add(byCommitId.getSonarName());
-        });
-
-
-        // 2. fetch sonarComponentTreeDto by sonarName
-        List<ComponentTreeDto> componentTreeDtos = new LinkedList<>();
-        sonarNames.forEach(sonarName -> {
-            try {
-                ComponentTreeDto componentTreeDto = fetchSonarDataBySonarName(sonarName);
-                componentTreeDtos.add(componentTreeDto);
-            } catch (Exception e){
-                LoggerFactory.getLogger(getClass()).error("sonar: Cannot get data by sonarname '" + sonarName + "' !" );
-            }
-        });
-        return componentTreeDtos;
-    }
-
-    private ComponentTreeDto fetchSonarDataBySonarName(String sonarName) {
-        String sonarUrl = sonarBaseUrl + "/api/measures/component_tree?" +
-                "qualifiers=TRK" +
-                "&p=1&ps=500" +
-                "&metricKeys=reliability_rating,security_rating,sqale_rating,duplicated_lines_density" +
-                "&component=" +
-                sonarName;
-        ParameterizedTypeReference<ComponentTreeDto> responseType = new ParameterizedTypeReference<ComponentTreeDto>() {};
-        try {
-            ResponseEntity<ComponentTreeDto> r = restTemplate.exchange(sonarUrl,HttpMethod.GET,null,responseType,new HashMap<>());
-            ComponentTreeDto body = r.getBody();
-            return body;
-        }catch (Throwable e) {
-            throw new GlobalException(ErrorCodeEnum.SERVICE_ERROR_C0007);
-        }
-    }
-
-}

+ 0 - 50
seec-data-server/src/main/java/cn/seecoder/data/server/service/KnowledgeService.java

@@ -1,50 +0,0 @@
-package cn.seecoder.data.server.service;
-
-import cn.seecoder.data.server.vo.knowledge.KnowledgePointVO;
-import cn.seecoder.data.server.vo.knowledge.KnowledgeVO;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-import java.util.Map;
-
-@Service
-public interface KnowledgeService {
-
-    /**
-     * 获取所有叶子知识点及其在岗位的权重
-     */
-    public List<KnowledgeVO> getAllKnowledgeAndWeight();
-
-    /**
-     * 更新知识点对应的职位权重
-     */
-    public KnowledgeVO updatePositionWeight(KnowledgeVO knowledgeVO);
-
-    /**
-     * 获取对应职位的树
-     */
-    public KnowledgePointVO getTreeByPosition(String position);
-
-    /**
-     * 获取对应用户在对应职位的知识点树
-     */
-
-    public KnowledgePointVO getTreeByPositionAndUser(String position, int userId);
-
-    /**
-     * 获取用户周报相关数据
-     */
-    public Map<String,Integer> getKnowledgeWeekCount(int userId);
-
-    /**
-     * 获取题库交互记录得分
-     */
-    public double getBokInteractionScore(int userId);
-
-    /**
-     * 通过FAHP获取职业评价
-     * @param position
-     * @return
-     */
-    public Double getFAHPScoreOnPosition(String position,int userId);
-}

+ 0 - 14
seec-data-server/src/main/java/cn/seecoder/data/server/service/PlaygroundService.java

@@ -1,14 +0,0 @@
-package cn.seecoder.data.server.service;
-
-import org.springframework.stereotype.Service;
-
-import java.time.LocalDateTime;
-
-@Service
-public interface PlaygroundService {
-
-    /**
-     * 按时间获取专题评分
-     */
-    public Double getQuestionScore(Integer userId, LocalDateTime start,LocalDateTime end);
-}

+ 0 - 8
seec-data-server/src/main/java/cn/seecoder/data/server/service/SonarqubeService.java

@@ -1,8 +0,0 @@
-package cn.seecoder.data.server.service;
-
-import java.time.LocalDateTime;
-
-public interface SonarqubeService {
-    public double getSonarScoreOfUser(int userId);
-    public double getSonarScoreOfUser(int userId, LocalDateTime start, LocalDateTime end);
-}

+ 1 - 1
seec-data-server/src/main/java/cn/seecoder/data/server/utils/aspects/auth/AuthHandlerAspectJ.java

@@ -1,6 +1,6 @@
 package cn.seecoder.data.server.utils.aspects.auth;
 
-import cn.hutool.core.util.StrUtil;
+//import cn.hutool.core.util.StrUtil;
 import cn.seecoder.data.server.utils.enums.ErrorCodeEnum;
 import cn.seecoder.data.server.utils.enums.UserRole;
 import cn.seecoder.data.server.utils.exception.GlobalException;

+ 0 - 44
seec-data-server/src/test/java/cn/seecoder/data/server/repository/CoderRepositoryTest.java

@@ -1,44 +0,0 @@
-package cn.seecoder.data.server.repository;
-
-import cn.seecoder.data.server.domain.CoderDao;
-import org.junit.Test;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-import java.util.Optional;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@SpringBootTest
-public class CoderRepositoryTest {
-
-    @Autowired
-    CoderRepository coderRepository;
-
-
-    @Test
-    public void testCoderRepo() {
-        Optional<CoderDao> coderRepositoryById = coderRepository.findById(1);
-        if(coderRepositoryById.isPresent()) {
-            CoderDao coderDao = coderRepositoryById.get();
-            System.out.println(coderDao);
-            coderDao.setUpdatedAt(null);
-            coderDao.setCreatedAt(LocalDateTime.now());
-            coderRepository.save(coderDao);
-            coderRepositoryById = coderRepository.findById(1);
-            if(coderRepositoryById.isPresent()) {
-                coderDao = coderRepositoryById.get();
-                System.out.println(coderDao);
-            }
-        }
-    }
-
-}

+ 0 - 27
seec-data-server/src/test/java/cn/seecoder/data/server/repository/ExtractionLogRepositoryTest.java

@@ -1,27 +0,0 @@
-package cn.seecoder.data.server.repository;
-
-import cn.seecoder.data.server.domain.ExtractionLogDao;
-import cn.seecoder.data.server.utils.enums.ExtractionLogStatus;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageRequest;
-import org.springframework.data.domain.Sort;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-import static org.junit.Assert.*;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@SpringBootTest
-public class ExtractionLogRepositoryTest {
-
-    @Autowired
-    private ExtractionLogRepository repository;
-    @Test
-    public void findBySourceAndStatus() {
-        Page<ExtractionLogDao> extractionLogPage = repository.findBySourceAndStatus("coder", ExtractionLogStatus.SUCCESS, PageRequest.of(11, 1, Sort.by(Sort.Direction.DESC, "id")));
-        System.out.println(extractionLogPage.get().count());
-    }
-}

+ 0 - 25
seec-data-server/src/test/java/cn/seecoder/data/server/schedule/CoderScheduleTest.java

@@ -1,25 +0,0 @@
-package cn.seecoder.data.server.schedule;
-
-import config.PropertyTestConfig;
-import org.junit.jupiter.api.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-//@ContextConfiguration(classes = PropertyTestConfig.class)
-@RunWith(SpringJUnit4ClassRunner.class)
-@SpringBootTest
-class CoderScheduleTest {
-
-    @Autowired
-    CoderSchedule coderSchedule;
-
-    @Test
-    void coderDataExtraction() throws Exception {
-        coderSchedule.coderDataExtraction();
-    }
-}

Різницю між файлами не показано, бо вона завелика
+ 0 - 37
seec-data-server/src/test/java/cn/seecoder/data/server/schedule/EvaluateScheduleTest.java


+ 0 - 40
seec-data-server/src/test/java/cn/seecoder/data/server/schedule/HelperScheduleTest.java

@@ -1,40 +0,0 @@
-package cn.seecoder.data.server.schedule;
-
-import cn.seecoder.data.server.repository.GeneralRecordRepository;
-import cn.seecoder.data.server.repository.helper.HelperEventRepository;
-import cn.seecoder.data.server.repository.helper.HelperQuizRepository;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.annotation.Rollback;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@Rollback(value = true)
-@SpringBootTest
-
-class HelperScheduleTest {
-
-    @Autowired
-    GeneralRecordRepository generalRecordRepository;
-
-    @Autowired
-    HelperQuizRepository helperQuizRepository;
-
-    @Autowired
-    HelperEventRepository helperEventRepository;
-
-//    @Test
-//    void helperQuizExtraction() {
-//        HelperSchedule helperSchedule = new HelperSchedule(generalRecordRepository,helperQuizRepository,helperEventRepository);
-//        helperSchedule.HelperQuizExtraction();
-//    }
-
-    @Test
-    void helperEventExtractionTest(){
-        HelperSchedule helperSchedule = new HelperSchedule(generalRecordRepository,helperQuizRepository,helperEventRepository);
-        helperSchedule.helperEventExtraction();
-    }
-}

+ 0 - 22
seec-data-server/src/test/java/cn/seecoder/data/server/schedule/PlaygroundScheduleTest.java

@@ -1,22 +0,0 @@
-package cn.seecoder.data.server.schedule;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-import static org.junit.Assert.*;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@SpringBootTest
-public class PlaygroundScheduleTest {
-
-    @Autowired
-    PlaygroundSchedule playgroundSchedule;
-
-    @Test
-    public void playGroundDataExtraction() throws Exception {
-        playgroundSchedule.playGroundDataExtraction();
-    }
-}

+ 0 - 92
seec-data-server/src/test/java/cn/seecoder/data/server/service/EvaluateServiceTest.java

@@ -1,92 +0,0 @@
-package cn.seecoder.data.server.service;
-
-import cn.seecoder.data.server.dto.evaluate.ExamDetailsDto;
-import cn.seecoder.data.server.dto.evaluate.ExamQuestionAndScoreDto;
-import cn.seecoder.data.server.dto.evaluate.Response;
-import cn.seecoder.judgement.PlaygroundClient;
-import cn.seecoder.judgement.PlaygroundException;
-import cn.seecoder.judgement.StudentAnswerRecordVO;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.junit.jupiter.api.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.core.ParameterizedTypeReference;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.ResponseEntity;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.web.client.RestTemplate;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@SpringBootTest
-class EvaluateServiceTest {
-
-    @Autowired
-    EvaluateService evaluateService;
-
-    @Test
-    void analyzeEvalTest() {
-        System.out.println(evaluateService.analyzeEvalTest(3));
-    }
-
-    @Test
-    void test() throws JsonProcessingException {
-        RestTemplate restTemplate = new RestTemplate();
-        String s = restTemplate.getForObject("http://47.111.95.164:8080/api/exam/1/questions",String.class);
-        System.out.println(s);
-
-        Map<String, Double> m = new HashMap<>();
-        m.put("19037",25.0);
-        m.put("19033",25.0);
-        m.put("19034",25.0);
-        m.put("19030",25.0);
-        m.put("19031",25.0);
-        Response<ExamQuestionAndScoreDto> r = Response.buildSuccess(ExamQuestionAndScoreDto.builder().questionAndScore(m).build());
-        ObjectMapper objectMapper = new ObjectMapper();
-        String ss = objectMapper.writeValueAsString(r);
-        System.out.println(ss);
-    }
-
-    @Test
-    public void test2() {
-        RestTemplate restTemplate = new RestTemplate();
-        Map<String,String> param = new HashMap<>();
-        param.put("startTime","2019-01-01 00:00:00");
-        param.put("endTime","2021-12-30 00:00:00");
-        String url = "http://47.111.95.164:8080/api/exam/list/range?startTime={startTime}&endTime={endTime}";
-        ParameterizedTypeReference<Response<List<ExamDetailsDto>>> responseType = new ParameterizedTypeReference<Response<List<ExamDetailsDto>>>() {};
-        ResponseEntity<Response<List<ExamDetailsDto>>> r = restTemplate.exchange(url, HttpMethod.GET,null,responseType,param );
-        System.out.println(r.getBody());
-    }
-    @Test
-    public void test1() {
-        PlaygroundClient playgroundClient = new PlaygroundClient("http://localhost:8801","");
-        try{
-            List<StudentAnswerRecordVO> studentAnswerRecordVOList = playgroundClient.getLevel("2017-09-28 17:07:05","2027-09-28 17:07:04");
-            System.out.println(1);
-        } catch (PlaygroundException e) {
-            e.printStackTrace();
-        }
-    }
-
-//    @Test
-//    public void test3() throws Exception {
-//        try {
-//            throw new Exception();
-//        } finally {
-//            System.out.println("妙啊");
-//        }
-//    }
-
-    private void test3_inner() {
-
-    }
-}

+ 0 - 36
seec-data-server/src/test/java/cn/seecoder/data/server/service/Impl/AnalysisServiceImplTest.java

@@ -1,36 +0,0 @@
-package cn.seecoder.data.server.service.Impl;
-
-import cn.seecoder.data.server.domain.GeneralRecordDao;
-import cn.seecoder.data.server.repository.GeneralRecordRepository;
-import cn.seecoder.data.server.repository.knowledge.KnowledgeRepository;
-import cn.seecoder.data.server.service.AnalysisService;
-import org.checkerframework.checker.units.qual.A;
-import org.junit.jupiter.api.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.annotation.Rollback;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-import java.time.LocalDateTime;
-import java.util.List;
-
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@Rollback(value = false)
-class AnalysisServiceImplTest {
-
-    @Autowired
-    GeneralRecordRepository generalRecordRepository;
-
-    @Autowired
-    KnowledgeRepository knowledgeRepository;
-
-    @Autowired
-    AnalysisService analysisService;
-
-    @Test
-    void dataTest(){
-
-    }
-}

+ 0 - 42
seec-data-server/src/test/java/cn/seecoder/data/server/service/Impl/CoderServiceImplTest.java

@@ -1,42 +0,0 @@
-package cn.seecoder.data.server.service.Impl;
-
-import cn.seecoder.data.server.service.CoderService;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.annotation.Rollback;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@Rollback
-@SpringBootTest
-public class CoderServiceImplTest {
-    @Autowired
-    CoderService coderService;
-
-    @Test
-    public void testCoderGetGrade() {
-        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-        LocalDateTime start = LocalDateTime.parse("2020-11-01 00:00:00",df);
-        LocalDateTime end = LocalDateTime.parse("2020-12-01 00:00:00",df);
-        System.out.println(coderService.getCoderGrade(999 ,start,end));
-        System.out.println(coderService.getCoderGrade(1000,start,end));
-        System.out.println(coderService.getCoderGrade(1001,start,end));
-        System.out.println(coderService.getCoderGrade(1002,start,end));
-        System.out.println(coderService.getCoderGrade(1003,start,end));
-        System.out.println(coderService.getCoderGrade(1004,start,end));
-    }
-}
-/**
- * 0.7741363636363636
- * 0.9625875
- * 0.9299062499999999
- * 0.575625
- * 0.7781375
- * 0.9810416666666667
- * */

+ 0 - 25
seec-data-server/src/test/java/cn/seecoder/data/server/service/Impl/DevcloudServiceImplTest.java

@@ -1,25 +0,0 @@
-package cn.seecoder.data.server.service.Impl;
-
-import cn.seecoder.data.server.service.DevcloudService;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.annotation.Rollback;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-import static org.junit.Assert.*;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@Rollback
-@SpringBootTest
-public class DevcloudServiceImplTest {
-
-    @Autowired
-    DevcloudService devcloudService;
-
-    @Test
-    public void commitScoreCompute() {
-        System.out.println(devcloudService.commitScoreCompute(1));
-    }
-}

+ 0 - 31
seec-data-server/src/test/java/cn/seecoder/data/server/service/Impl/EvaluateServiceImplTest.java

@@ -1,31 +0,0 @@
-package cn.seecoder.data.server.service.Impl;
-
-import cn.seecoder.data.server.repository.GeneralRecordRepository;
-import cn.seecoder.data.server.service.EvaluateService;
-import org.junit.jupiter.api.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.annotation.Rollback;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-import java.text.SimpleDateFormat;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-
-//@RunWith(SpringJUnit4ClassRunner.class)
-//@Rollback
-//@SpringBootTest
-class EvaluateServiceImplTest {
-
-    @Autowired
-    GeneralRecordRepository generalRecordRepository;
-
-//    @Test
-//    void getEvaluateScore() {
-//        EvaluateServiceImpl evaluateService = new EvaluateServiceImpl(generalRecordRepository);
-//        double score = evaluateService.getEvaluateScore(332);
-//        System.out.println(score);
-//    }
-}

+ 0 - 63
seec-data-server/src/test/java/cn/seecoder/data/server/service/Impl/KnowledgeServiceImplTest.java

@@ -1,63 +0,0 @@
-package cn.seecoder.data.server.service.Impl;
-
-import cn.seecoder.bok.client.SeecoderBokClient;
-import cn.seecoder.data.server.domain.GeneralRecordDao;
-import cn.seecoder.data.server.domain.knowledge.KnowledgeDao;
-import cn.seecoder.data.server.domain.knowledge.PositionWeightDao;
-import cn.seecoder.data.server.repository.knowledge.KnowledgeRepository;
-import cn.seecoder.data.server.repository.knowledge.PositionWeightRepository;
-import cn.seecoder.data.server.service.KnowledgeService;
-import cn.seecoder.data.server.vo.knowledge.KnowledgePointVO;
-import cn.seecoder.data.server.vo.knowledge.KnowledgeVO;
-import org.junit.jupiter.api.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.stereotype.Repository;
-import org.springframework.test.annotation.Rollback;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Random;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@Rollback(value = false)
-@SpringBootTest
-class KnowledgeServiceImplTest {
-
-    @Autowired
-    KnowledgeRepository knowledgeRepository;
-
-    @Autowired
-    PositionWeightRepository positionWeightRepository;
-
-    @Autowired
-    KnowledgeService knowledgeService;
-
-    @Test
-    void pushDataTest(){
-        String[] position = {"test2"};
-        Random random = new Random();
-        List<KnowledgeDao> knowledgeDaos = knowledgeRepository.findAll();
-        for(int i=0;i<knowledgeDaos.size();i=i+10){
-            int knowledgeId = knowledgeDaos.get(i).getId();
-            PositionWeightDao positionWeightDao = new PositionWeightDao();
-            positionWeightDao.setKnowledgeId(knowledgeId);
-            positionWeightDao.setPosition(position[0]);
-            positionWeightDao.setWeight(random.nextDouble());
-            positionWeightRepository.save(positionWeightDao);
-            System.out.println(positionWeightDao);
-        }
-    }
-
-
-    @Test
-    void recordsTest(){
-        //knowledgeService.getBokInteractionScore(274);
-        System.out.println(knowledgeService.getBokInteractionScore(274));
-    }
-}

+ 0 - 29
seec-data-server/src/test/java/cn/seecoder/data/server/utils/aspects/auth/AuthHandlerAspectJTest.java

@@ -1,29 +0,0 @@
-package cn.seecoder.data.server.utils.aspects.auth;
-
-import com.auth0.jwt.JWT;
-import com.auth0.jwt.JWTVerifier;
-import com.auth0.jwt.algorithms.Algorithm;
-import com.auth0.jwt.interfaces.DecodedJWT;
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-
-public class AuthHandlerAspectJTest {
-
-    @Test
-    public void authCheck() {
-        final String secret = "114514-OIDC-1919810-SEEC-ANALYSIS"; // 目的是加盐,内容随意
-
-        JWTVerifier verifier;
-
-        Algorithm algorithm = Algorithm.HMAC256(secret);
-        String token = JWT.create().withClaim("sky", "WoBiSheYaoXieBuWanLe!!").sign(algorithm); // 创建token
-
-        DecodedJWT jwt = null;
-        verifier = JWT.require(algorithm).build(); //Reusable verifier instance
-        jwt = verifier.verify(token);
-        String sky = jwt.getClaims().get("sky").asString();
-
-        assertEquals("WoBiSheYaoXieBuWanLe!!", sky);
-    }
-}

+ 0 - 23
seec-data-server/src/test/java/config/PropertyTestConfig.java

@@ -1,23 +0,0 @@
-package config;
-
-//import cn.seecoder.data.server.schedule.DevcloudSchedule;
-import cn.seecoder.data.server.schedule.EvaluateSchedule;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.ImportResource;
-import org.springframework.context.annotation.PropertySource;
-import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
-import org.springframework.test.context.TestPropertySource;
-
-@Configuration
-@PropertySource("classpath:config.properties")
-public class PropertyTestConfig {
-//    @Bean
-//    public DevcloudSchedule devcloudSchedule() {
-//        return new DevcloudSchedule();
-//    }
-//    @Bean
-//    public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
-//        return new PropertySourcesPlaceholderConfigurer();
-//    }
-}

Деякі файли не було показано, через те що забагато файлів було змінено