-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
15 changed files
with
178 additions
and
168 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
6 changes: 4 additions & 2 deletions
6
src/main/java/org/guzzing/studayserver/domain/review/repository/ReviewJpaRepository.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,12 +1,14 @@ | ||
package org.guzzing.studayserver.domain.review.repository; | ||
|
||
import org.guzzing.studayserver.domain.academy.model.Academy; | ||
import org.guzzing.studayserver.domain.member.model.Member; | ||
import org.guzzing.studayserver.domain.review.model.Review; | ||
import org.springframework.data.jpa.repository.JpaRepository; | ||
|
||
public interface ReviewJpaRepository extends JpaRepository<Review, Long>, ReviewRepository { | ||
|
||
boolean existsByMemberIdAndAcademyId(final Long memberId, final Long academyId); | ||
boolean existsByMemberAndAcademy(final Member member, final Academy academy); | ||
|
||
void deleteByMemberId(final long memberId); | ||
void deleteByMember(final Member member); | ||
|
||
} |
8 changes: 4 additions & 4 deletions
8
src/main/java/org/guzzing/studayserver/domain/review/repository/ReviewRepository.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,15 +1,15 @@ | ||
package org.guzzing.studayserver.domain.review.repository; | ||
|
||
import org.guzzing.studayserver.domain.academy.model.Academy; | ||
import org.guzzing.studayserver.domain.member.model.Member; | ||
import org.guzzing.studayserver.domain.review.model.Review; | ||
|
||
public interface ReviewRepository { | ||
|
||
Review save(final Review review); | ||
|
||
boolean existsByMemberIdAndAcademyId(final Long memberId, final Long academyId); | ||
boolean existsByMemberAndAcademy(final Member member, final Academy academy); | ||
|
||
void deleteByMemberId(final long memberId); | ||
|
||
void deleteAll(); | ||
void deleteByMember(final Member member); | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
63 changes: 35 additions & 28 deletions
63
src/main/java/org/guzzing/studayserver/domain/review/service/ReviewFacade.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,66 +1,73 @@ | ||
package org.guzzing.studayserver.domain.review.service; | ||
|
||
import org.guzzing.studayserver.domain.academy.service.AcademyAccessService; | ||
import org.guzzing.studayserver.domain.member.service.MemberAccessService; | ||
import jakarta.persistence.EntityExistsException; | ||
import java.util.Map; | ||
import org.guzzing.studayserver.domain.academy.model.Academy; | ||
import org.guzzing.studayserver.domain.academy.service.AcademyService; | ||
import org.guzzing.studayserver.domain.member.model.Member; | ||
import org.guzzing.studayserver.domain.member.service.MemberService; | ||
import org.guzzing.studayserver.domain.review.model.Review; | ||
import org.guzzing.studayserver.domain.review.model.ReviewType; | ||
import org.guzzing.studayserver.domain.review.service.dto.request.ReviewPostParam; | ||
import org.guzzing.studayserver.domain.review.service.dto.response.ReviewPostResult; | ||
import org.guzzing.studayserver.domain.review.service.dto.response.ReviewableResult; | ||
import org.guzzing.studayserver.global.exception.ReviewException; | ||
import org.springframework.stereotype.Service; | ||
|
||
@Service | ||
public class ReviewFacade { | ||
|
||
private final ReviewCommandService reviewCommandService; | ||
private final ReviewReadService reviewReadService; | ||
private final AcademyAccessService academyAccessService; | ||
private final MemberAccessService memberAccessService; | ||
private final MemberService memberService; | ||
private final AcademyService academyService; | ||
|
||
public ReviewFacade( | ||
final ReviewCommandService reviewCommandService, | ||
final ReviewReadService reviewReadService, | ||
final AcademyAccessService academyAccessService, | ||
final MemberAccessService memberAccessService | ||
final MemberService memberService, | ||
final AcademyService academyService | ||
) { | ||
this.reviewCommandService = reviewCommandService; | ||
this.reviewReadService = reviewReadService; | ||
this.academyAccessService = academyAccessService; | ||
this.memberAccessService = memberAccessService; | ||
this.memberService = memberService; | ||
this.academyService = academyService; | ||
} | ||
|
||
public ReviewPostResult createReviewOfAcademy(final ReviewPostParam param) { | ||
memberAccessService.validateMember(param.memberId()); | ||
academyAccessService.validateAcademy(param.academyId()); | ||
final Member member = memberService.getMember(param.memberId()); | ||
final Academy academy = academyService.getAcademy(param.academyId()); | ||
|
||
final ReviewableResult reviewableResult = getReviewableToAcademy(param.memberId(), param.academyId()); | ||
checkReviewExists(member, academy); | ||
|
||
if (!reviewableResult.reviewable()) { | ||
throw new ReviewException("이미 리뷰를 남겼습니다."); | ||
} | ||
|
||
final Review review = Review.of( | ||
param.memberId(), | ||
param.academyId(), | ||
ReviewType.getSelectedReviewMap(param)); | ||
final Map<ReviewType, Boolean> selectedReviewMap = ReviewType.getSelectedReviewMap(param); | ||
|
||
final Review savedReview = reviewCommandService.saveReview(review); | ||
final Review savedReview = reviewCommandService.saveReview( | ||
Review.of(member, academy, selectedReviewMap)); | ||
academyService.getReviewCountOfAcademy(academy.getId()) | ||
.updateSelectedReviewCount(selectedReviewMap); | ||
|
||
return ReviewPostResult.from(savedReview); | ||
} | ||
|
||
public void removeReview(final long memberId) { | ||
reviewCommandService.deleteReviewOfMember(memberId); | ||
public void removeReview(final Member member) { | ||
reviewCommandService.deleteReviewOfMember(member); | ||
} | ||
|
||
public ReviewableResult getReviewableToAcademy(final Long memberId, final Long academyId) { | ||
memberAccessService.validateMember(memberId); | ||
academyAccessService.validateAcademy(academyId); | ||
public ReviewableResult getReviewableToAcademy(final long memberId, final long academyId) { | ||
final Member member = memberService.getMember(memberId); | ||
final Academy academy = academyService.getAcademy(academyId); | ||
|
||
final boolean existsReview = reviewReadService.existsReview(member, academy); | ||
|
||
boolean existsReview = reviewReadService.existsReview(memberId, academyId); | ||
return ReviewableResult.of(member.getId(), academy.getId(), !existsReview); | ||
} | ||
|
||
private void checkReviewExists(Member member, Academy academy) { | ||
final boolean existsReview = reviewReadService.existsReview(member, academy); | ||
|
||
return ReviewableResult.of(memberId, academyId, !existsReview); | ||
if (existsReview) { | ||
throw new EntityExistsException("이미 리뷰를 남겼습니다."); | ||
} | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
4 changes: 2 additions & 2 deletions
4
...main/java/org/guzzing/studayserver/domain/review/service/dto/request/ReviewPostParam.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
6 changes: 3 additions & 3 deletions
6
...in/java/org/guzzing/studayserver/domain/review/service/dto/response/ReviewableResult.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.