Skip to content

Commit

Permalink
Merge pull request #51 from KNU-HAEDAL/refactor/domain
Browse files Browse the repository at this point in the history
Refactor/domain
  • Loading branch information
bayy1216 authored Aug 7, 2024
2 parents 568972a + 3987b08 commit ac5e9c8
Show file tree
Hide file tree
Showing 7 changed files with 50 additions and 40 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -67,10 +67,10 @@ public record ScoreResponse(
) {

public static ScoreResponse from(
ChallengeReviewModel.ChallengeReviewScore challengeReviewScore) {
ChallengeReviewModel.Score score) {
return ScoreResponse.builder()
.averageRating(challengeReviewScore.averageRating())
.ratingCount(challengeReviewScore.ratingCount())
.averageRating(score.averageRating())
.ratingCount(score.ratingCount())
.build();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,11 +68,20 @@ public static ChallengeVerificationResult from(Integer totalCount, Integer succe


@Builder
public record ChallengeRecord(String title, Integer totalCount, Integer successCount,
LocalDate startDate, LocalDate endDate, List<Long> recordIds) {
public record ChallengeRecord(
String title,
Integer totalCount,
Integer successCount,
LocalDate startDate,
LocalDate endDate,
List<Long> recordIds
) {

public static ChallengeRecord from(Challenge challenge, ChallengeGroup challengeGroup,
List<ChallengeVerification> challengeVerificationList) {
public static ChallengeRecord from(
Challenge challenge,
List<ChallengeVerification> challengeVerificationList
) {
ChallengeGroup challengeGroup = challenge.getChallengeGroup();
return ChallengeRecord.builder()
.title(challengeGroup.getTitle())
.totalCount(challenge.getRequiredCount())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import java.util.List;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.haedal.zzansuni.domain.challengegroup.ChallengeGroup;
import org.haedal.zzansuni.domain.challengegroup.challenge.ChallengeModel.ChallengeRecord;
import org.haedal.zzansuni.domain.challengegroup.challenge.port.ChallengeReader;
import org.haedal.zzansuni.domain.userchallenge.review.ChallengeReview;
Expand Down Expand Up @@ -40,23 +39,20 @@ public class ChallengeService {
/**
* 챌린지 기록 가져오기
*/

@Transactional(readOnly = true)
public ChallengeModel.ChallengeRecord getChallengeRecord(Long userId, Long challengeId) {
Challenge challenge = challengeReader.getById(challengeId);
ChallengeGroup challengeGroup = challenge.getChallengeGroup();
UserChallenge userChallenge = userChallengeReader.getByUserIdAndChallengeId(userId,
challengeId);
List<ChallengeVerification> challengeVerifications = challengeVerificationReader.findByUserChallengeId(
userChallenge.getId());
return ChallengeRecord.from(challenge, challengeGroup, challengeVerifications);
UserChallenge userChallenge
= userChallengeReader.getByUserIdAndChallengeId(userId, challengeId);
List<ChallengeVerification> challengeVerifications
= challengeVerificationReader.findByUserChallengeId(userChallenge.getId());
return ChallengeRecord.from(challenge, challengeVerifications);

}

/**
* 챌린지 기록 상세 가져오기
*/

@Transactional(readOnly = true)
public ChallengeVerificationModel getChallengeRecordDetail(Long recordId) {
ChallengeVerification challengeVerification = challengeVerificationReader.getById(recordId);
Expand All @@ -70,18 +66,13 @@ public ChallengeVerificationModel getChallengeRecordDetail(Long recordId) {
public Long createReview(ChallengeCommand.ReviewCreate command, Long challengeId, Long userId) {
UserChallenge userChallenge = userChallengeReader.getByUserIdAndChallengeId(userId,
challengeId);
Long challengeGroupId = userChallenge
.getChallenge()
.getChallengeGroup()
.getId();

//이미 리뷰를 작성했는지 확인
challengeReviewReader.findByUserChallengeId(userChallenge.getId())
.ifPresent(review -> {
throw new IllegalArgumentException("이미 리뷰를 작성했습니다.");
});
ChallengeReview challengeReview = ChallengeReview.create(userChallenge, command,
challengeGroupId);
ChallengeReview challengeReview = ChallengeReview.create(userChallenge, command);
challengeReviewStore.store(challengeReview);
return challengeReview.getId();
}
Expand Down Expand Up @@ -113,10 +104,11 @@ public Page<ChallengeReviewWithUserInfo> getChallengeReviews(Pageable pageable)
* 챌린지 그룹 리뷰 평점 가져오기
*/
@Transactional(readOnly = true)
public ChallengeReviewModel.ChallengeReviewScore getChallengeGroupReviewScore(
public ChallengeReviewModel.Score getChallengeGroupReviewScore(
Long challengeGroupId) {
List<ChallengeReview> challengeReviews = challengeReviewReader.findByChallengeGroupId(
challengeGroupId);
return ChallengeReviewModel.ChallengeReviewScore.of(challengeReviews);
//TODO 모든 리뷰를 가져와서 계산 -> 성능 이슈 발생 가능
return ChallengeReviewModel.Score.of(challengeReviews);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,10 @@ public static UserChallenge create(Challenge challenge, User user) {
.build();
}

public Long getChallengeId() {
return this.challenge.getId();
}

/**
* 챌린지 인증 추가
* 1. 챌린지 인증을 추가
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ public class ChallengeReview extends BaseTimeEntity {
@Column(nullable = false)
private Long challengeGroupId;

public static ChallengeReview create(UserChallenge userChallenge,
ChallengeCommand.ReviewCreate command, Long challengeGroupId) {
public static ChallengeReview create(UserChallenge userChallenge, ChallengeCommand.ReviewCreate command) {
Long challengeGroupId = userChallenge.getChallenge().getChallengeGroupId();
return ChallengeReview.builder()
.userChallenge(userChallenge)
.content(command.getContent())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@
import java.util.List;
import java.util.Map;
import lombok.Builder;
import org.haedal.zzansuni.domain.challengegroup.ChallengeGroup;
import org.haedal.zzansuni.domain.challengegroup.challenge.Challenge;
import org.haedal.zzansuni.domain.user.UserModel;
import org.haedal.zzansuni.domain.userchallenge.UserChallenge;

public class ChallengeReviewModel {

Expand All @@ -19,11 +22,12 @@ public record ChallengeReviewWithUserInfo(

public static ChallengeReviewWithUserInfo from(ChallengeReview challengeReview) {
var userModel = UserModel.Main.from(challengeReview.getUserChallenge().getUser());
Challenge challenge = challengeReview.getUserChallenge().getChallenge();
ChallengeGroup challengeGroup = challenge.getChallengeGroup();

return ChallengeReviewWithUserInfo.builder()
.challengeId(challengeReview.getUserChallenge().getChallenge().getId())
.challengeTitle(
challengeReview.getUserChallenge().getChallenge().getChallengeGroup()
.getTitle())
.challengeId(challenge.getId())
.challengeTitle(challengeGroup.getTitle())
.user(userModel)
.content(challengeReview.getContent())
.rating(challengeReview.getRating())
Expand All @@ -43,13 +47,14 @@ public record ChallengeReviewWithChallenge(

public static ChallengeReviewWithChallenge from(ChallengeReview challengeReview) {
var userModel = UserModel.Main.from(challengeReview.getUserChallenge().getUser());
UserChallenge userChallenge = challengeReview.getUserChallenge();
Challenge challenge = userChallenge.getChallenge();
ChallengeGroup challengeGroup = challenge.getChallengeGroup();

return ChallengeReviewWithChallenge.builder()
.challengeId(challengeReview.getUserChallenge().getChallenge().getId())
.challengeTitle(
challengeReview.getUserChallenge().getChallenge().getChallengeGroup()
.getTitle())
.challengeDifficulty(
challengeReview.getUserChallenge().getChallenge().getDifficulty())
.challengeId(userChallenge.getChallengeId())
.challengeTitle(challengeGroup.getTitle())
.challengeDifficulty(challenge.getDifficulty())
.user(userModel)
.content(challengeReview.getContent())
.rating(challengeReview.getRating())
Expand All @@ -59,12 +64,12 @@ public static ChallengeReviewWithChallenge from(ChallengeReview challengeReview)
}

@Builder
public record ChallengeReviewScore(
public record Score(
Float averageRating,
Map<Integer, Integer> ratingCount
) {

public static ChallengeReviewScore of(List<ChallengeReview> challengeReviews) {
public static Score of(List<ChallengeReview> challengeReviews) {
// key: rating, value: count
// rating은 1,2,3,4,5 이며 value는 각각의 rating이 몇개인지 count
Map<Integer, Integer> ratingCount = new HashMap<>();
Expand All @@ -80,7 +85,7 @@ public static ChallengeReviewScore of(List<ChallengeReview> challengeReviews) {
.mapToInt(ChallengeReview::getRating)
.average()
.orElse(0);
return ChallengeReviewScore.builder()
return Score.builder()
.averageRating((float) averageRating)
.ratingCount(ratingCount)
.build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ void getChallengeGroupReviewScore() {
when(challengeReviewReader.findByChallengeGroupId(challengeGroupId)).thenReturn(
challengeReviews);

ChallengeReviewModel.ChallengeReviewScore result = challengeService.getChallengeGroupReviewScore(
ChallengeReviewModel.Score result = challengeService.getChallengeGroupReviewScore(
challengeGroupId);

assertNotNull(result);
Expand Down

0 comments on commit ac5e9c8

Please sign in to comment.