From 85ac7f1e9d9b84f679705417072b70b5d6addc69 Mon Sep 17 00:00:00 2001 From: ecsimsw Date: Sun, 13 Aug 2023 06:16:28 +0900 Subject: [PATCH] refactor : rename evaluationItem --- .../ton/t210/configuration/WebCorsConfig.java | 21 ++++++++++++++ ...ler.java => EvaluationItemController.java} | 18 ++++++------ .../EvaluationScoreRecordController.java | 15 ++++++---- .../EvaluationItemScoreRecordRepository.java | 6 ++++ src/main/java/se/ton/t210/domain/Member.java | 4 +++ .../se/ton/t210/dto/RecordCountResponse.java | 16 ++++++++++ ...ervice.java => EvaluationItemService.java} | 4 +-- .../service/EvaluationScoreRecordService.java | 29 ++++++++++++++----- 8 files changed, 89 insertions(+), 24 deletions(-) create mode 100644 src/main/java/se/ton/t210/configuration/WebCorsConfig.java rename src/main/java/se/ton/t210/controller/{EvaluationController.java => EvaluationItemController.java} (60%) create mode 100644 src/main/java/se/ton/t210/dto/RecordCountResponse.java rename src/main/java/se/ton/t210/service/{EvaluationService.java => EvaluationItemService.java} (88%) diff --git a/src/main/java/se/ton/t210/configuration/WebCorsConfig.java b/src/main/java/se/ton/t210/configuration/WebCorsConfig.java new file mode 100644 index 0000000..f6746de --- /dev/null +++ b/src/main/java/se/ton/t210/configuration/WebCorsConfig.java @@ -0,0 +1,21 @@ +package se.ton.t210.configuration; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +public class WebCorsConfig implements WebMvcConfigurer { + + @Value("${mymarket.web.cors.allow.origins:http://localhost:8080}") + private String[] allowOrigins; + + @Override + public void addCorsMappings(CorsRegistry registry) { + registry.addMapping("/**") + .allowedOrigins(allowOrigins) + .allowedMethods("*") + .allowCredentials(true); + } +} diff --git a/src/main/java/se/ton/t210/controller/EvaluationController.java b/src/main/java/se/ton/t210/controller/EvaluationItemController.java similarity index 60% rename from src/main/java/se/ton/t210/controller/EvaluationController.java rename to src/main/java/se/ton/t210/controller/EvaluationItemController.java index df5ba92..596b08b 100644 --- a/src/main/java/se/ton/t210/controller/EvaluationController.java +++ b/src/main/java/se/ton/t210/controller/EvaluationItemController.java @@ -7,26 +7,26 @@ import se.ton.t210.domain.type.ApplicationType; import se.ton.t210.dto.EvaluationItemNamesResponse; import se.ton.t210.dto.TakenScoreResponse; -import se.ton.t210.service.EvaluationService; +import se.ton.t210.service.EvaluationItemService; @RestController -public class EvaluationController { +public class EvaluationItemController { - private final EvaluationService evaluationService; + private final EvaluationItemService evaluationItemService; - public EvaluationController(EvaluationService evaluationService) { - this.evaluationService = evaluationService; + public EvaluationItemController(EvaluationItemService evaluationItemService) { + this.evaluationItemService = evaluationItemService; } - @GetMapping("/api/judge/score") + @GetMapping("/api/evaluation/score") public ResponseEntity takenScore(Long evaluationItemId, int score) { - final int takenScore = evaluationService.calculateTakenScore(evaluationItemId, score); + final int takenScore = evaluationItemService.calculateTakenScore(evaluationItemId, score); return ResponseEntity.ok(TakenScoreResponse.of(takenScore)); } - @GetMapping("/api/judge/names") + @GetMapping("/api/evaluation/names") public ResponseEntity> itemNames(ApplicationType applicationType) { - final List names = evaluationService.itemNames(applicationType); + final List names = evaluationItemService.itemNames(applicationType); return ResponseEntity.ok(names); } } diff --git a/src/main/java/se/ton/t210/controller/EvaluationScoreRecordController.java b/src/main/java/se/ton/t210/controller/EvaluationScoreRecordController.java index 3fc29ad..f8d8c24 100644 --- a/src/main/java/se/ton/t210/controller/EvaluationScoreRecordController.java +++ b/src/main/java/se/ton/t210/controller/EvaluationScoreRecordController.java @@ -3,8 +3,11 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; +import se.ton.t210.domain.Member; import se.ton.t210.domain.type.ApplicationType; +import se.ton.t210.domain.type.Gender; import se.ton.t210.dto.MonthlyScoresResponse; +import se.ton.t210.dto.RecordCountResponse; import se.ton.t210.dto.TopMonthlyScoresResponse; import se.ton.t210.service.EvaluationScoreRecordService; @@ -19,11 +22,6 @@ public EvaluationScoreRecordController(EvaluationScoreRecordService evaluationSc this.evaluationScoreRecordService = evaluationScoreRecordService; } - @GetMapping("/api/up") - public String up() { - return "299"; - } - @GetMapping("/api/me/avgScores") public ResponseEntity myScoreRecordResponse(String yearDate) { Long memberId = 1L; @@ -36,4 +34,11 @@ public ResponseEntity topScoresRecordResponse(Applicat final TopMonthlyScoresResponse topMonthlyScoresResponse = evaluationScoreRecordService.averageAllScoresByJudgingItem(applicationType, LocalDate.parse(yearDate)); return ResponseEntity.ok(topMonthlyScoresResponse); } + + @GetMapping("/api/records/count") + public ResponseEntity recordCount() { + final Member member = new Member(1l, "name", "email", "password", Gender.MALE, ApplicationType.FireOfficerFemale); + final RecordCountResponse countResponse = evaluationScoreRecordService.count(member.getApplicationType()); + return ResponseEntity.ok(countResponse); + } } diff --git a/src/main/java/se/ton/t210/domain/EvaluationItemScoreRecordRepository.java b/src/main/java/se/ton/t210/domain/EvaluationItemScoreRecordRepository.java index 574b644..844321d 100644 --- a/src/main/java/se/ton/t210/domain/EvaluationItemScoreRecordRepository.java +++ b/src/main/java/se/ton/t210/domain/EvaluationItemScoreRecordRepository.java @@ -1,13 +1,19 @@ package se.ton.t210.domain; import org.springframework.data.jpa.repository.JpaRepository; +import se.ton.t210.domain.type.ApplicationType; import java.time.LocalDate; import java.util.List; +import java.util.Set; public interface EvaluationItemScoreRecordRepository extends JpaRepository { List findAllByMemberIdAndCreatedAt(Long memberId, LocalDate date); List findAllByEvaluationItemIdAndCreatedAt(Long evaluationItemId, LocalDate date); + + int findAllByEvaluationItemIdIn(Set evaluationSet); + + int countByEvaluationItemIdIn(Set evaluationIds); } diff --git a/src/main/java/se/ton/t210/domain/Member.java b/src/main/java/se/ton/t210/domain/Member.java index 6a16aeb..449765e 100644 --- a/src/main/java/se/ton/t210/domain/Member.java +++ b/src/main/java/se/ton/t210/domain/Member.java @@ -61,6 +61,10 @@ public Member(String name, String email, String password, Gender gender, this(null, name, email, password, gender, applicationType, createdAt, updatedAt); } + public Member(Long id, String name, String email, String password, Gender gender, ApplicationType applicationType) { + this(id, name, email, password, gender, applicationType, LocalDate.now(), LocalDate.now()); + } + public void reissuePwd(String newPwd) { this.password = newPwd; } diff --git a/src/main/java/se/ton/t210/dto/RecordCountResponse.java b/src/main/java/se/ton/t210/dto/RecordCountResponse.java new file mode 100644 index 0000000..4c30fe2 --- /dev/null +++ b/src/main/java/se/ton/t210/dto/RecordCountResponse.java @@ -0,0 +1,16 @@ +package se.ton.t210.dto; + +import lombok.Getter; +import se.ton.t210.domain.type.ApplicationType; + +@Getter +public class RecordCountResponse { + + private final ApplicationType applicationType; + private final int count; + + public RecordCountResponse(ApplicationType applicationType, int count) { + this.applicationType = applicationType; + this.count = count; + } +} diff --git a/src/main/java/se/ton/t210/service/EvaluationService.java b/src/main/java/se/ton/t210/service/EvaluationItemService.java similarity index 88% rename from src/main/java/se/ton/t210/service/EvaluationService.java rename to src/main/java/se/ton/t210/service/EvaluationItemService.java index e50ce19..c3b2478 100644 --- a/src/main/java/se/ton/t210/service/EvaluationService.java +++ b/src/main/java/se/ton/t210/service/EvaluationItemService.java @@ -12,12 +12,12 @@ import java.util.List; @Service -public class EvaluationService { +public class EvaluationItemService { private final EvaluationScoreSectionRepository evaluationScoreSectionRepository; private final EvaluationItemRepository evaluationItemRepository; - public EvaluationService(EvaluationScoreSectionRepository evaluationScoreSectionRepository, EvaluationItemRepository evaluationItemRepository) { + public EvaluationItemService(EvaluationScoreSectionRepository evaluationScoreSectionRepository, EvaluationItemRepository evaluationItemRepository) { this.evaluationScoreSectionRepository = evaluationScoreSectionRepository; this.evaluationItemRepository = evaluationItemRepository; } diff --git a/src/main/java/se/ton/t210/service/EvaluationScoreRecordService.java b/src/main/java/se/ton/t210/service/EvaluationScoreRecordService.java index dcbf128..572a5d7 100644 --- a/src/main/java/se/ton/t210/service/EvaluationScoreRecordService.java +++ b/src/main/java/se/ton/t210/service/EvaluationScoreRecordService.java @@ -1,16 +1,21 @@ package se.ton.t210.service; -import java.util.stream.Collectors; import org.springframework.stereotype.Service; -import se.ton.t210.domain.*; +import se.ton.t210.domain.EvaluationItem; +import se.ton.t210.domain.EvaluationItemRepository; +import se.ton.t210.domain.EvaluationItemScoreRecord; +import se.ton.t210.domain.EvaluationItemScoreRecordRepository; import se.ton.t210.domain.type.ApplicationType; import se.ton.t210.dto.MonthlyScoresResponse; +import se.ton.t210.dto.RecordCountResponse; import se.ton.t210.dto.TopMonthlyScoresResponse; import java.time.LocalDate; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; import static java.util.stream.Collectors.averagingInt; import static java.util.stream.Collectors.groupingBy; @@ -37,16 +42,24 @@ public TopMonthlyScoresResponse averageAllScoresByJudgingItem(ApplicationType ap final Map top50PScores = new HashMap<>(); final Map top30PScores = new HashMap<>(); final List judgingItemIds = evaluationItemRepository.findAllByApplicationType(applicationType) - .stream() - .map(EvaluationItem::getId) - .collect(Collectors.toList()); - for(Long judgingItemId : judgingItemIds) { + .stream() + .map(EvaluationItem::getId) + .collect(Collectors.toList()); + for (Long judgingItemId : judgingItemIds) { final List scores = evaluationItemScoreRecordRepository.findAllByEvaluationItemIdAndCreatedAt(judgingItemId, date); - final int top50PScore = scores.get((scores.size()/2)+1).getScore(); - final int top30PScore = scores.get((scores.size()/3 * 2)+1).getScore(); + final int top50PScore = scores.get((scores.size() / 2) + 1).getScore(); + final int top30PScore = scores.get((scores.size() / 3 * 2) + 1).getScore(); top50PScores.put(judgingItemId, (double) top50PScore); top30PScores.put(judgingItemId, (double) top30PScore); } return TopMonthlyScoresResponse.listOf(top50PScores, top30PScores); } + + public RecordCountResponse count(ApplicationType applicationType) { + final Set evaluationIds = evaluationItemRepository.findAllByApplicationType(applicationType).stream() + .map(it -> it.getId()) + .collect(Collectors.toSet()); + final int count = evaluationItemScoreRecordRepository.countByEvaluationItemIdIn(evaluationIds); + return new RecordCountResponse(applicationType, count); + } }