Skip to content

Commit

Permalink
[#539] refactor: 리뷰 검색어 자동완성 이색체험 카테고리 분리
Browse files Browse the repository at this point in the history
  • Loading branch information
Te-H0 committed Jan 7, 2025
1 parent a601ad7 commit 58fcc6e
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,10 @@ Page<ExperienceThumbnail> findExperienceThumbnails(Language language,

Set<ExperienceTypeKeyword> getExperienceTypeKeywordSetWithWithPessimisticLock(Long postId);

List<SearchPostForReviewDto> findAllSearchPostForReviewDtoByLanguage(Language language);
List<SearchPostForReviewDto> findAllSearchActivityPostForReviewDtoByLanguage(Language language);

List<SearchPostForReviewDto> findAllSearchCultureAndArtsPostForReviewDtoByLanguage(
Language language);

List<Long> findAllIds();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -311,16 +311,35 @@ public Set<ExperienceTypeKeyword> getExperienceTypeKeywordSetWithWithPessimistic
return map.getOrDefault(postId, Collections.emptySet());
}


// List<SearchPostForReviewDto> findAllSearchCultureAndArtsPostForReviewDtoByLanguage(Language language);
@Override
public List<SearchPostForReviewDto> findAllSearchPostForReviewDtoByLanguage(Language language) {
public List<SearchPostForReviewDto> findAllSearchActivityPostForReviewDtoByLanguage(
Language language) {
return queryFactory
.select(
new QReviewResponse_SearchPostForReviewDto(experience.id,
Expressions.constant(Category.EXPERIENCE.name()),
Expressions.constant(ExperienceType.ACTIVITY.name()),
experienceTrans.title, experience.firstImageFile, experienceTrans.address))
.from(experience)
.innerJoin(experience.experienceTrans, experienceTrans)
.where(experienceTrans.language.eq(language))
.where(experience.experienceType.eq(ExperienceType.ACTIVITY))
.fetch();
}

@Override
public List<SearchPostForReviewDto> findAllSearchCultureAndArtsPostForReviewDtoByLanguage(
Language language) {
return queryFactory
.select(
new QReviewResponse_SearchPostForReviewDto(experience.id,
Expressions.constant(ExperienceType.CULTURE_AND_ARTS.name()),
experienceTrans.title, experience.firstImageFile, experienceTrans.address))
.from(experience)
.innerJoin(experience.experienceTrans, experienceTrans)
.where(experienceTrans.language.eq(language))
.where(experience.experienceType.eq(ExperienceType.CULTURE_AND_ARTS))
.fetch();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,8 @@ public MemberReviewDetailDto(Long id, Long postId, String category,

@Getter
@AllArgsConstructor
public static class ExperienceInfo {
public static class ExperienceInfo {

private String title;
private String experienceType;
}
Expand Down Expand Up @@ -269,8 +270,6 @@ public static class SearchPostForReviewDto {
@Schema(description = "게시물 카테고리 ex) RESTAURANT, EXPERIENCE")
private String category;

@Schema(description = "게시물 카테고리 이름, 화면에 사용할 값(언어별 번역 제공) ex) 제주 맛집,,,")
private String categoryValue;

@Schema(description = "게시물 제목")
private String title;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -305,7 +305,8 @@ public void deleteMyReview(MemberInfoDto memberInfoDto, Long reviewId) {

// 내가 쓴 리뷰 수정
@Transactional
public void updateMyReview(MemberInfoDto memberInfoDto, Long reviewId, EditReviewDto editReviewDto) {
public void updateMyReview(MemberInfoDto memberInfoDto, Long reviewId,
EditReviewDto editReviewDto) {
// 유저가 쓴 리뷰 조회
Review review = reviewRepository.findReviewByIdAndMember(reviewId, memberInfoDto.getMember())
.orElseThrow(() -> new NotFoundException(MEMBER_REVIEW_NOT_FOUND.getMessage()));
Expand Down Expand Up @@ -484,7 +485,8 @@ private void updateReviewImages(Review review, EditReviewDto editReviewDto,
.build();
reviewImageFiles.add(reviewImageFile);
} else { // 원래 있던 이미지라면
if (!existImageIds.remove(editImageInfo.getId())) { // set에서 제거하기 , 제거가 안되었다면 imageInfo 잘못 준것 / 나중에 여기 남아있는 건 삭제해야한다고 판단.
if (!existImageIds.remove(
editImageInfo.getId())) { // set에서 제거하기 , 제거가 안되었다면 imageInfo 잘못 준것 / 나중에 여기 남아있는 건 삭제해야한다고 판단.
throw new BadRequestException(EDIT_REVIEW_IMAGE_INFO_BAD_REQUEST.getMessage());
}
}
Expand Down Expand Up @@ -513,19 +515,32 @@ private void initAutoCompleteData() {
if ("test".equals(System.getProperty("spring.profiles.active"))) {
return;
}

// 서버 재시동 시 기존 hash 삭제
for (Language language : Language.values()) {
Boolean delete = redisTemplate.delete(SEARCH_AUTO_COMPLETE_HASH_KEY + language.name());
}

HashOperations<String, String, SearchPostForReviewDto> hashOperations = redisTemplate.opsForHash();

for (Language language : Language.values()) {
experienceRepository.findAllSearchPostForReviewDtoByLanguage(language)
// ACTIVITY 저장
experienceRepository.findAllSearchActivityPostForReviewDtoByLanguage(language)
.forEach(dto -> {
hashOperations.put(SEARCH_AUTO_COMPLETE_HASH_KEY + language.name(),
dto.getTitle(), dto);
});

// CultureAndArts 저장
experienceRepository.findAllSearchCultureAndArtsPostForReviewDtoByLanguage(language)
.forEach(dto -> {
dto.setCategoryValue(Category.EXPERIENCE.getValueByLocale(language));
hashOperations.put(SEARCH_AUTO_COMPLETE_HASH_KEY + language.name(),
dto.getTitle(), dto);
});

// restaurant 저장
restaurantRepository.findAllSearchPostForReviewDtoByLanguage(language)
.forEach(dto -> {
dto.setCategoryValue(Category.RESTAURANT.getValueByLocale(language));
hashOperations.put(SEARCH_AUTO_COMPLETE_HASH_KEY + language.name(),
dto.getTitle(), dto);
});
Expand Down

0 comments on commit 58fcc6e

Please sign in to comment.