Skip to content

Commit

Permalink
[fix] #43 일치율 계산을 위한 service util 객체 적용
Browse files Browse the repository at this point in the history
  • Loading branch information
RyuKwanKon committed Jan 13, 2024
1 parent 0abb646 commit 455f954
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 36 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
import org.gachon.checkmate.domain.post.dto.support.PostSearchDto;
import org.gachon.checkmate.domain.post.entity.Post;
import org.gachon.checkmate.domain.post.repository.PostRepository;
import org.gachon.checkmate.domain.post.utils.PostSortType;
import org.gachon.checkmate.domain.post.utils.PostSortingUtils;
import org.gachon.checkmate.domain.scrap.repository.ScrapRepository;
import org.gachon.checkmate.global.error.exception.EntityNotFoundException;
Expand All @@ -32,10 +31,10 @@

import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

import static org.gachon.checkmate.domain.checkList.utils.MatchRateCalculator.getAccuracy;
import static org.gachon.checkmate.global.error.ErrorCode.*;
import static org.gachon.checkmate.global.utils.PagingUtils.convertPaging;

Expand Down Expand Up @@ -110,12 +109,6 @@ public PostStateUpdateResponseDto updateMyPostState(Long userId, Long postId, Po
return PostStateUpdateResponseDto.of(post);
}

private void validatePostWriter(User user, Post post) {
if (!post.getUser().getId().equals(user.getId())) {
throw new ForbiddenException(NOT_POST_WRITER);
}
}

private List<PostSearchElementResponseDto> createPostSearchResponseDto(Page<PostSearchDto> postSearchDtoList, CheckList checkList) {
return postSearchDtoList.stream()
.map(postSearchDto ->
Expand All @@ -126,22 +119,16 @@ private List<PostSearchElementResponseDto> createPostSearchResponseDto(Page<Post
.collect(Collectors.toList());
}

private int getAccuracy(PostCheckList postCheckList, CheckList checkList) {
int count = 0;
count += postCheckList.getCleanType().compareRateTo(checkList.getCleanType());
count += postCheckList.getDrinkType().compareRateTo(checkList.getDrinkType());
count += postCheckList.getHomeType().compareRateTo(checkList.getHomeType());
count += postCheckList.getLifePatternType().compareRateTo(checkList.getLifePatternType());
count += postCheckList.getNoiseType().compareRateTo(checkList.getNoiseType());
count += postCheckList.getSleepType().compareRateTo(checkList.getSleepType());
count += postCheckList.getSmokeType().compareRateTo(checkList.getSmokeType());
return (int) (count / 7) * 100;
}

private int getRemainDate(LocalDate endDate) {
return (int) LocalDate.now().until(endDate, ChronoUnit.DAYS);
}

private void validatePostWriter(User user, Post post) {
if (!post.getUser().getId().equals(user.getId())) {
throw new ForbiddenException(NOT_POST_WRITER);
}
}

private void validateDuplicateTitle(String title) {
if (postRepository.existsByTitle(title))
throw new InvalidValueException(INVALID_POST_TITLE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import lombok.RequiredArgsConstructor;
import org.gachon.checkmate.domain.checkList.entity.CheckList;
import org.gachon.checkmate.domain.checkList.entity.PostCheckList;
import org.gachon.checkmate.domain.checkList.repository.CheckListRepository;
import org.gachon.checkmate.domain.member.entity.User;
import org.gachon.checkmate.domain.member.repository.UserRepository;
Expand All @@ -26,6 +25,7 @@
import java.util.List;
import java.util.stream.Collectors;

import static org.gachon.checkmate.domain.checkList.utils.MatchRateCalculator.getAccuracy;
import static org.gachon.checkmate.global.error.ErrorCode.*;

@RequiredArgsConstructor
Expand Down Expand Up @@ -65,21 +65,6 @@ private List<PostSearchElementResponseDto> createPostSearchResponseDto(Page<Post
.collect(Collectors.toList());
}

private int getAccuracy(PostCheckList postCheckList, CheckList checkList) {
int count = 0;
count += getRateForFrequencyElement(postCheckList.getCleanType().getCode(), checkList.getCleanType().getCode(), 4);
count += getRateForFrequencyElement(postCheckList.getDrinkType().getCode(), checkList.getDrinkType().getCode(), 3);
count += getRateForFrequencyElement(postCheckList.getHomeType().getCode(), checkList.getHomeType().getCode(), 3);
count = postCheckList.getLifePatternType().equals(checkList.getLifePatternType()) ? count + 1 : count;
count = postCheckList.getNoiseType().equals(checkList.getNoiseType()) ? count + 1 : count;
count = postCheckList.getSleepType().equals(checkList.getSleepType()) ? count + 1 : count;
return (int) (count / 6) * 100;
}

private int getRateForFrequencyElement(String firstEnumCode, String secondEnumCode, int size) {
return 1 - Math.abs(Integer.parseInt(firstEnumCode) - Integer.parseInt(secondEnumCode)) / size;
}

private int getRemainDate(LocalDate endDate) {
return (int) LocalDate.now().until(endDate, ChronoUnit.DAYS);
}
Expand Down

0 comments on commit 455f954

Please sign in to comment.