Skip to content

Commit

Permalink
[#397] refactor: javadoc 적용
Browse files Browse the repository at this point in the history
  • Loading branch information
heeeeeseok committed Sep 20, 2024
1 parent 49fe09e commit c412b95
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 53 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

public interface ExperienceRepositoryCustom {

ExperienceCompositeDto findCompositeDtoById(Long id, Language language);
ExperienceCompositeDto findExperienceCompositeDto(Long id, Language language);

Page<ExperienceCompositeDto> searchCompositeDtoByKeyword(String Keyword, Language language,
Pageable pageable);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import com.jeju.nanaland.domain.common.data.Category;
import com.jeju.nanaland.domain.common.data.Language;
import com.jeju.nanaland.domain.common.dto.PostPreviewDto;
import com.jeju.nanaland.domain.common.dto.QPostPreviewDto;
import com.jeju.nanaland.domain.experience.dto.ExperienceCompositeDto;
import com.jeju.nanaland.domain.experience.dto.ExperienceResponse;
import com.jeju.nanaland.domain.experience.dto.QExperienceCompositeDto;
Expand Down Expand Up @@ -38,7 +39,7 @@ public class ExperienceRepositoryImpl implements ExperienceRepositoryCustom {
private final JPAQueryFactory queryFactory;

@Override
public ExperienceCompositeDto findCompositeDtoById(Long id, Language language) {
public ExperienceCompositeDto findExperienceCompositeDto(Long id, Language language) {
return queryFactory
.select(new QExperienceCompositeDto(
experience.id,
Expand All @@ -60,7 +61,10 @@ public ExperienceCompositeDto findCompositeDtoById(Long id, Language language) {
.from(experience)
.leftJoin(experience.firstImageFile, imageFile)
.leftJoin(experience.experienceTrans, experienceTrans)
.where(experience.id.eq(id).and(experienceTrans.language.eq(language)))
.where(
experience.id.eq(id),
experienceTrans.language.eq(language)
)
.fetchOne();
}

Expand Down Expand Up @@ -92,10 +96,12 @@ public Page<ExperienceCompositeDto> searchCompositeDtoByKeyword(String keyword,
.leftJoin(experience.firstImageFile, imageFile)
.leftJoin(experience.experienceTrans, experienceTrans)
.on(experienceTrans.language.eq(language))
.where(experienceTrans.title.contains(keyword)
.or(experienceTrans.addressTag.contains(keyword))
.or(experienceTrans.content.contains(keyword))
.or(experience.id.in(idListContainAllHashtags)))
.where(
experienceTrans.title.contains(keyword)
.or(experienceTrans.addressTag.contains(keyword))
.or(experienceTrans.content.contains(keyword))
.or(experience.id.in(idListContainAllHashtags))
)
.orderBy(experienceTrans.createdAt.desc())
.offset(pageable.getOffset())
.limit(pageable.getPageSize())
Expand All @@ -107,10 +113,12 @@ public Page<ExperienceCompositeDto> searchCompositeDtoByKeyword(String keyword,
.leftJoin(experience.firstImageFile, imageFile)
.leftJoin(experience.experienceTrans, experienceTrans)
.on(experienceTrans.language.eq(language))
.where(experienceTrans.title.contains(keyword)
.or(experienceTrans.addressTag.contains(keyword))
.or(experienceTrans.content.contains(keyword))
.or(experience.id.in(idListContainAllHashtags)));
.where(
experienceTrans.title.contains(keyword)
.or(experienceTrans.addressTag.contains(keyword))
.or(experienceTrans.content.contains(keyword))
.or(experience.id.in(idListContainAllHashtags))
);

return PageableExecutionUtils.getPage(resultDto, pageable, countQuery::fetchOne);
}
Expand All @@ -134,12 +142,16 @@ public Page<ExperienceResponse.PreviewDto> findAllExperiencePreviewDtoOrderByPri
.innerJoin(experience.experienceTrans, experienceTrans)
.innerJoin(experienceKeyword)
.on(experienceKeyword.experience.id.eq(experience.id))
.where(experienceTrans.language.eq(language)
.and(experience.experienceType.eq(experienceType)) // 이색체험 타입(액티비티/문화예술)
.and(addressTagCondition(addressFilterList)) // 지역필터
.and(keywordCondition(keywordFilterList))) // 키워드 필터
.orderBy(experience.priority.desc(), // 우선순위 정렬
experience.createdAt.desc()) // 최신순 정렬
.where(
experienceTrans.language.eq(language),
experience.experienceType.eq(experienceType), // 이색체험 타입(액티비티/문화예술)
addressTagCondition(addressFilterList), // 지역필터
keywordCondition(keywordFilterList) // 키워드 필터
)
.orderBy(
experience.priority.desc(), // 우선순위 정렬
experience.createdAt.desc() // 최신순 정렬
)
.offset(pageable.getOffset())
.limit(pageable.getPageSize())
.fetch();
Expand All @@ -151,10 +163,12 @@ public Page<ExperienceResponse.PreviewDto> findAllExperiencePreviewDtoOrderByPri
.innerJoin(experience.experienceTrans, experienceTrans)
.innerJoin(experienceKeyword)
.on(experienceKeyword.experience.id.eq(experience.id))
.where(experienceTrans.language.eq(language)
.and(experience.experienceType.eq(experienceType))
.and(addressTagCondition(addressFilterList))
.and(keywordCondition(keywordFilterList)));
.where(
experienceTrans.language.eq(language),
experience.experienceType.eq(experienceType),
addressTagCondition(addressFilterList),
keywordCondition(keywordFilterList)
);

return PageableExecutionUtils.getPage(resultDto, pageable, countQuery::fetchOne);
}
Expand Down Expand Up @@ -193,34 +207,34 @@ public List<Long> findAllIds() {

@Override
public PostPreviewDto findPostPreviewDto(Long postId, Language language) {
// return queryFactory
// .select(new QPostPreviewDto(
// experience.id,
// experienceTrans.title,
// imageFile.originUrl,
// imageFile.thumbnailUrl
// ))
// .from(experience)
// .innerJoin(experience.experienceTrans, experienceTrans)
// .innerJoin(experience.firstImageFile, imageFile)
// .where(
// experience.id.eq(postId),
// experienceTrans.language.eq(language))
// .fetchOne();
return null;
return queryFactory
.select(new QPostPreviewDto(
experience.id,
experienceTrans.title,
imageFile.originUrl,
imageFile.thumbnailUrl
))
.from(experience)
.innerJoin(experience.experienceTrans, experienceTrans)
.innerJoin(experience.firstImageFile, imageFile)
.where(
experience.id.eq(postId),
experienceTrans.language.eq(language))
.fetchOne();
}

private List<Long> getIdListContainAllHashtags(String keyword, Language language) {
return queryFactory
.select(experience.id)
.from(experience)
.leftJoin(hashtag)
.on(hashtag.post.id.eq(experience.id)
.and(hashtag.category.eq(Category.EXPERIENCE))
.and(hashtag.language.eq(language)))
.on(hashtag.post.id.eq(experience.id),
hashtag.category.eq(Category.EXPERIENCE),
hashtag.language.eq(language)
)
.where(hashtag.keyword.content.in(splitKeyword(keyword)))
.groupBy(experience.id)
.having(experience.id.count().eq(splitKeyword(keyword).stream().count()))
.having(experience.id.count().eq((long) splitKeyword(keyword).size()))
.fetch();
}

Expand All @@ -235,18 +249,11 @@ private List<String> splitKeyword(String keyword) {
}

private BooleanExpression addressTagCondition(List<String> addressFilterList) {
if (addressFilterList.isEmpty()) {
return null;
} else {
return experienceTrans.addressTag.in(addressFilterList);
}
return addressFilterList.isEmpty() ? null : experienceTrans.addressTag.in(addressFilterList);
}

private BooleanExpression keywordCondition(List<ExperienceTypeKeyword> keywordFilterList) {
if (keywordFilterList.isEmpty()) {
return null;
} else {
return experienceKeyword.experienceTypeKeyword.in(keywordFilterList);
}
return keywordFilterList.isEmpty() ? null
: experienceKeyword.experienceTypeKeyword.in(keywordFilterList);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,20 @@ public PostPreviewDto getPostPreviewDto(Long postId, Category category, Language
return postPreviewDto;
}

// 이색체험 리스트 조회
/**
* 이색체험 리스트 조회
*
* @param memberInfoDto 회원 정보
* @param experienceType 이색체험 타입 (ACTIVITY, CULTURE_AND_ARTS)
* @param keywordFilterList 키워드 필터 (LAND_LEISURE, WATER_LEISURE, AIR_LEISURE, MARINE_EXPERIENCE,
* RURAL_EXPERIENCE, HEALING_THERAPY, HISTORY, EXHIBITION, WORKSHOP,
* ART_MUSEUM, MUSEUM, PARK, PERFORMANCE, RELIGIOUS_FACILITY,
* THEME_PARK)
* @param addressFilterList 지역 필터
* @param page 페이지
* @param size 페이지 크기
* @return ExperienceResponse.PreviewPageDto
*/
public ExperienceResponse.PreviewPageDto getExperiencePreviews(MemberInfoDto memberInfoDto,
ExperienceType experienceType, List<ExperienceTypeKeyword> keywordFilterList,
List<String> addressFilterList, int page, int size) {
Expand Down Expand Up @@ -108,12 +121,19 @@ public ExperienceResponse.PreviewPageDto getExperiencePreviews(MemberInfoDto mem
.build();
}

// 이색체험 상세 정보 조회
/**
* 이색체험 상세정보 조회
*
* @param memberInfoDto 회원 정보
* @param postId 게시물 id
* @param isSearch 검색을 통해 들어왔는지 여부
* @return ExperienceResponse.DetailDto
*/
public ExperienceResponse.DetailDto getExperienceDetail(MemberInfoDto memberInfoDto, Long postId,
boolean isSearch) {

Language language = memberInfoDto.getLanguage();
ExperienceCompositeDto experienceCompositeDto = experienceRepository.findCompositeDtoById(
ExperienceCompositeDto experienceCompositeDto = experienceRepository.findExperienceCompositeDto(
postId, language);

// 해당 id의 포스트가 없는 경우 404 에러
Expand Down

0 comments on commit c412b95

Please sign in to comment.