Skip to content

Commit c412b95

Browse files
committed
[#397] refactor: javadoc 적용
1 parent 49fe09e commit c412b95

File tree

3 files changed

+80
-53
lines changed

3 files changed

+80
-53
lines changed

src/main/java/com/jeju/nanaland/domain/experience/repository/ExperienceRepositoryCustom.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
public interface ExperienceRepositoryCustom {
1616

17-
ExperienceCompositeDto findCompositeDtoById(Long id, Language language);
17+
ExperienceCompositeDto findExperienceCompositeDto(Long id, Language language);
1818

1919
Page<ExperienceCompositeDto> searchCompositeDtoByKeyword(String Keyword, Language language,
2020
Pageable pageable);

src/main/java/com/jeju/nanaland/domain/experience/repository/ExperienceRepositoryImpl.java

+56-49
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.jeju.nanaland.domain.common.data.Category;
1010
import com.jeju.nanaland.domain.common.data.Language;
1111
import com.jeju.nanaland.domain.common.dto.PostPreviewDto;
12+
import com.jeju.nanaland.domain.common.dto.QPostPreviewDto;
1213
import com.jeju.nanaland.domain.experience.dto.ExperienceCompositeDto;
1314
import com.jeju.nanaland.domain.experience.dto.ExperienceResponse;
1415
import com.jeju.nanaland.domain.experience.dto.QExperienceCompositeDto;
@@ -38,7 +39,7 @@ public class ExperienceRepositoryImpl implements ExperienceRepositoryCustom {
3839
private final JPAQueryFactory queryFactory;
3940

4041
@Override
41-
public ExperienceCompositeDto findCompositeDtoById(Long id, Language language) {
42+
public ExperienceCompositeDto findExperienceCompositeDto(Long id, Language language) {
4243
return queryFactory
4344
.select(new QExperienceCompositeDto(
4445
experience.id,
@@ -60,7 +61,10 @@ public ExperienceCompositeDto findCompositeDtoById(Long id, Language language) {
6061
.from(experience)
6162
.leftJoin(experience.firstImageFile, imageFile)
6263
.leftJoin(experience.experienceTrans, experienceTrans)
63-
.where(experience.id.eq(id).and(experienceTrans.language.eq(language)))
64+
.where(
65+
experience.id.eq(id),
66+
experienceTrans.language.eq(language)
67+
)
6468
.fetchOne();
6569
}
6670

@@ -92,10 +96,12 @@ public Page<ExperienceCompositeDto> searchCompositeDtoByKeyword(String keyword,
9296
.leftJoin(experience.firstImageFile, imageFile)
9397
.leftJoin(experience.experienceTrans, experienceTrans)
9498
.on(experienceTrans.language.eq(language))
95-
.where(experienceTrans.title.contains(keyword)
96-
.or(experienceTrans.addressTag.contains(keyword))
97-
.or(experienceTrans.content.contains(keyword))
98-
.or(experience.id.in(idListContainAllHashtags)))
99+
.where(
100+
experienceTrans.title.contains(keyword)
101+
.or(experienceTrans.addressTag.contains(keyword))
102+
.or(experienceTrans.content.contains(keyword))
103+
.or(experience.id.in(idListContainAllHashtags))
104+
)
99105
.orderBy(experienceTrans.createdAt.desc())
100106
.offset(pageable.getOffset())
101107
.limit(pageable.getPageSize())
@@ -107,10 +113,12 @@ public Page<ExperienceCompositeDto> searchCompositeDtoByKeyword(String keyword,
107113
.leftJoin(experience.firstImageFile, imageFile)
108114
.leftJoin(experience.experienceTrans, experienceTrans)
109115
.on(experienceTrans.language.eq(language))
110-
.where(experienceTrans.title.contains(keyword)
111-
.or(experienceTrans.addressTag.contains(keyword))
112-
.or(experienceTrans.content.contains(keyword))
113-
.or(experience.id.in(idListContainAllHashtags)));
116+
.where(
117+
experienceTrans.title.contains(keyword)
118+
.or(experienceTrans.addressTag.contains(keyword))
119+
.or(experienceTrans.content.contains(keyword))
120+
.or(experience.id.in(idListContainAllHashtags))
121+
);
114122

115123
return PageableExecutionUtils.getPage(resultDto, pageable, countQuery::fetchOne);
116124
}
@@ -134,12 +142,16 @@ public Page<ExperienceResponse.PreviewDto> findAllExperiencePreviewDtoOrderByPri
134142
.innerJoin(experience.experienceTrans, experienceTrans)
135143
.innerJoin(experienceKeyword)
136144
.on(experienceKeyword.experience.id.eq(experience.id))
137-
.where(experienceTrans.language.eq(language)
138-
.and(experience.experienceType.eq(experienceType)) // 이색체험 타입(액티비티/문화예술)
139-
.and(addressTagCondition(addressFilterList)) // 지역필터
140-
.and(keywordCondition(keywordFilterList))) // 키워드 필터
141-
.orderBy(experience.priority.desc(), // 우선순위 정렬
142-
experience.createdAt.desc()) // 최신순 정렬
145+
.where(
146+
experienceTrans.language.eq(language),
147+
experience.experienceType.eq(experienceType), // 이색체험 타입(액티비티/문화예술)
148+
addressTagCondition(addressFilterList), // 지역필터
149+
keywordCondition(keywordFilterList) // 키워드 필터
150+
)
151+
.orderBy(
152+
experience.priority.desc(), // 우선순위 정렬
153+
experience.createdAt.desc() // 최신순 정렬
154+
)
143155
.offset(pageable.getOffset())
144156
.limit(pageable.getPageSize())
145157
.fetch();
@@ -151,10 +163,12 @@ public Page<ExperienceResponse.PreviewDto> findAllExperiencePreviewDtoOrderByPri
151163
.innerJoin(experience.experienceTrans, experienceTrans)
152164
.innerJoin(experienceKeyword)
153165
.on(experienceKeyword.experience.id.eq(experience.id))
154-
.where(experienceTrans.language.eq(language)
155-
.and(experience.experienceType.eq(experienceType))
156-
.and(addressTagCondition(addressFilterList))
157-
.and(keywordCondition(keywordFilterList)));
166+
.where(
167+
experienceTrans.language.eq(language),
168+
experience.experienceType.eq(experienceType),
169+
addressTagCondition(addressFilterList),
170+
keywordCondition(keywordFilterList)
171+
);
158172

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

194208
@Override
195209
public PostPreviewDto findPostPreviewDto(Long postId, Language language) {
196-
// return queryFactory
197-
// .select(new QPostPreviewDto(
198-
// experience.id,
199-
// experienceTrans.title,
200-
// imageFile.originUrl,
201-
// imageFile.thumbnailUrl
202-
// ))
203-
// .from(experience)
204-
// .innerJoin(experience.experienceTrans, experienceTrans)
205-
// .innerJoin(experience.firstImageFile, imageFile)
206-
// .where(
207-
// experience.id.eq(postId),
208-
// experienceTrans.language.eq(language))
209-
// .fetchOne();
210-
return null;
210+
return queryFactory
211+
.select(new QPostPreviewDto(
212+
experience.id,
213+
experienceTrans.title,
214+
imageFile.originUrl,
215+
imageFile.thumbnailUrl
216+
))
217+
.from(experience)
218+
.innerJoin(experience.experienceTrans, experienceTrans)
219+
.innerJoin(experience.firstImageFile, imageFile)
220+
.where(
221+
experience.id.eq(postId),
222+
experienceTrans.language.eq(language))
223+
.fetchOne();
211224
}
212225

213226
private List<Long> getIdListContainAllHashtags(String keyword, Language language) {
214227
return queryFactory
215228
.select(experience.id)
216229
.from(experience)
217230
.leftJoin(hashtag)
218-
.on(hashtag.post.id.eq(experience.id)
219-
.and(hashtag.category.eq(Category.EXPERIENCE))
220-
.and(hashtag.language.eq(language)))
231+
.on(hashtag.post.id.eq(experience.id),
232+
hashtag.category.eq(Category.EXPERIENCE),
233+
hashtag.language.eq(language)
234+
)
221235
.where(hashtag.keyword.content.in(splitKeyword(keyword)))
222236
.groupBy(experience.id)
223-
.having(experience.id.count().eq(splitKeyword(keyword).stream().count()))
237+
.having(experience.id.count().eq((long) splitKeyword(keyword).size()))
224238
.fetch();
225239
}
226240

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

237251
private BooleanExpression addressTagCondition(List<String> addressFilterList) {
238-
if (addressFilterList.isEmpty()) {
239-
return null;
240-
} else {
241-
return experienceTrans.addressTag.in(addressFilterList);
242-
}
252+
return addressFilterList.isEmpty() ? null : experienceTrans.addressTag.in(addressFilterList);
243253
}
244254

245255
private BooleanExpression keywordCondition(List<ExperienceTypeKeyword> keywordFilterList) {
246-
if (keywordFilterList.isEmpty()) {
247-
return null;
248-
} else {
249-
return experienceKeyword.experienceTypeKeyword.in(keywordFilterList);
250-
}
256+
return keywordFilterList.isEmpty() ? null
257+
: experienceKeyword.experienceTypeKeyword.in(keywordFilterList);
251258
}
252259
}

src/main/java/com/jeju/nanaland/domain/experience/service/ExperienceService.java

+23-3
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,20 @@ public PostPreviewDto getPostPreviewDto(Long postId, Category category, Language
7777
return postPreviewDto;
7878
}
7979

80-
// 이색체험 리스트 조회
80+
/**
81+
* 이색체험 리스트 조회
82+
*
83+
* @param memberInfoDto 회원 정보
84+
* @param experienceType 이색체험 타입 (ACTIVITY, CULTURE_AND_ARTS)
85+
* @param keywordFilterList 키워드 필터 (LAND_LEISURE, WATER_LEISURE, AIR_LEISURE, MARINE_EXPERIENCE,
86+
* RURAL_EXPERIENCE, HEALING_THERAPY, HISTORY, EXHIBITION, WORKSHOP,
87+
* ART_MUSEUM, MUSEUM, PARK, PERFORMANCE, RELIGIOUS_FACILITY,
88+
* THEME_PARK)
89+
* @param addressFilterList 지역 필터
90+
* @param page 페이지
91+
* @param size 페이지 크기
92+
* @return ExperienceResponse.PreviewPageDto
93+
*/
8194
public ExperienceResponse.PreviewPageDto getExperiencePreviews(MemberInfoDto memberInfoDto,
8295
ExperienceType experienceType, List<ExperienceTypeKeyword> keywordFilterList,
8396
List<String> addressFilterList, int page, int size) {
@@ -108,12 +121,19 @@ public ExperienceResponse.PreviewPageDto getExperiencePreviews(MemberInfoDto mem
108121
.build();
109122
}
110123

111-
// 이색체험 상세 정보 조회
124+
/**
125+
* 이색체험 상세정보 조회
126+
*
127+
* @param memberInfoDto 회원 정보
128+
* @param postId 게시물 id
129+
* @param isSearch 검색을 통해 들어왔는지 여부
130+
* @return ExperienceResponse.DetailDto
131+
*/
112132
public ExperienceResponse.DetailDto getExperienceDetail(MemberInfoDto memberInfoDto, Long postId,
113133
boolean isSearch) {
114134

115135
Language language = memberInfoDto.getLanguage();
116-
ExperienceCompositeDto experienceCompositeDto = experienceRepository.findCompositeDtoById(
136+
ExperienceCompositeDto experienceCompositeDto = experienceRepository.findExperienceCompositeDto(
117137
postId, language);
118138

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

0 commit comments

Comments
 (0)