Skip to content

Commit

Permalink
[#397] refactor: 이색체험 dto명 변경
Browse files Browse the repository at this point in the history
  • Loading branch information
heeeeeseok committed Sep 20, 2024
1 parent 4d48681 commit 49fe09e
Show file tree
Hide file tree
Showing 6 changed files with 59 additions and 59 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@
import static com.jeju.nanaland.global.exception.SuccessCode.EXPERIENCE_DETAIL_SUCCESS;
import static com.jeju.nanaland.global.exception.SuccessCode.EXPERIENCE_LIST_SUCCESS;

import com.jeju.nanaland.domain.experience.dto.ExperienceResponse.ExperienceDetailDto;
import com.jeju.nanaland.domain.experience.dto.ExperienceResponse.ExperienceThumbnailDto;
import com.jeju.nanaland.domain.experience.dto.ExperienceResponse;
import com.jeju.nanaland.domain.experience.entity.enums.ExperienceType;
import com.jeju.nanaland.domain.experience.entity.enums.ExperienceTypeKeyword;
import com.jeju.nanaland.domain.experience.service.ExperienceService;
Expand Down Expand Up @@ -41,18 +40,18 @@ public class ExperienceController {
@ApiResponse(responseCode = "500", description = "서버측 에러", content = @Content)
})
@GetMapping("/list")
public BaseResponse<ExperienceThumbnailDto> getExperienceList(
public BaseResponse<ExperienceResponse.PreviewPageDto> getExperienceList(
@AuthMember MemberInfoDto memberInfoDto,
@RequestParam ExperienceType experienceType,
@RequestParam(defaultValue = "") List<ExperienceTypeKeyword> keywordFilterList,
@RequestParam(defaultValue = "") List<String> addressFilterList,
@RequestParam(defaultValue = "0") int page,
@RequestParam(defaultValue = "12") int size) {

ExperienceThumbnailDto thumbnailDto = experienceService.getExperienceList(memberInfoDto,
experienceType, keywordFilterList, addressFilterList, page, size);
ExperienceResponse.PreviewPageDto previewPageDto = experienceService.getExperiencePreviews(
memberInfoDto, experienceType, keywordFilterList, addressFilterList, page, size);

return BaseResponse.success(EXPERIENCE_LIST_SUCCESS, thumbnailDto);
return BaseResponse.success(EXPERIENCE_LIST_SUCCESS, previewPageDto);
}

@Operation(summary = "이색체험 상세 정보 조회", description = "이색체험 상세 정보 조회")
Expand All @@ -64,13 +63,13 @@ public BaseResponse<ExperienceThumbnailDto> getExperienceList(
@ApiResponse(responseCode = "500", description = "서버측 에러", content = @Content)
})
@GetMapping("/{id}")
public BaseResponse<ExperienceDetailDto> getExperienceDetail(
public BaseResponse<ExperienceResponse.DetailDto> getExperienceDetail(
@AuthMember MemberInfoDto memberInfoDto,
@PathVariable Long id,
@RequestParam(defaultValue = "false") boolean isSearch) {

ExperienceDetailDto experienceDetail = experienceService.getExperienceDetail(memberInfoDto,
ExperienceResponse.DetailDto detailDto = experienceService.getExperienceDetail(memberInfoDto,
id, isSearch);
return BaseResponse.success(EXPERIENCE_DETAIL_SUCCESS, experienceDetail);
return BaseResponse.success(EXPERIENCE_DETAIL_SUCCESS, detailDto);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,22 +14,22 @@ public class ExperienceResponse {

@Data
@Builder
@Schema(description = "이색체험 게시물 페이징 정보")
public static class ExperienceThumbnailDto {
@Schema(name = "ExperienceThumbnailDto", description = "이색체험 게시물 페이징 정보")
public static class PreviewPageDto {

@Schema(description = "이색체험 전체 게시물 수")
private Long totalElements;

@Schema(description = "이색체험 게시물 결과 리스트")
private List<ExperienceThumbnail> data;
private List<PreviewDto> data;
}

@Data
@Setter
@Builder
@AllArgsConstructor
@Schema(description = "이색체험 게시물 정보")
public static class ExperienceThumbnail {
@Schema(name = "ExperienceThumbnail", description = "이색체험 게시물 정보")
public static class PreviewDto {

@Schema(description = "이색체험 게시물 id")
private Long id;
Expand All @@ -53,7 +53,7 @@ public static class ExperienceThumbnail {
private boolean isFavorite;

@QueryProjection
public ExperienceThumbnail(Long id, String originUrl, String thumbnailUrl, String title,
public PreviewDto(Long id, String originUrl, String thumbnailUrl, String title,
String addressTag) {
this.id = id;
this.firstImage = new ImageFileDto(originUrl, thumbnailUrl);
Expand All @@ -64,8 +64,8 @@ public ExperienceThumbnail(Long id, String originUrl, String thumbnailUrl, Strin

@Data
@Builder
@Schema(description = "이색체험 상세 정보")
public static class ExperienceDetailDto {
@Schema(name = "ExperienceDetailDto", description = "이색체험 상세 정보")
public static class DetailDto {

@Schema(description = "이색체험 게시물 id")
private Long id;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import com.jeju.nanaland.domain.common.data.Language;
import com.jeju.nanaland.domain.common.dto.PostPreviewDto;
import com.jeju.nanaland.domain.experience.dto.ExperienceCompositeDto;
import com.jeju.nanaland.domain.experience.dto.ExperienceResponse.ExperienceThumbnail;
import com.jeju.nanaland.domain.experience.dto.ExperienceResponse;
import com.jeju.nanaland.domain.experience.entity.enums.ExperienceType;
import com.jeju.nanaland.domain.experience.entity.enums.ExperienceTypeKeyword;
import com.jeju.nanaland.domain.review.dto.ReviewResponse.SearchPostForReviewDto;
Expand All @@ -19,8 +19,9 @@ public interface ExperienceRepositoryCustom {
Page<ExperienceCompositeDto> searchCompositeDtoByKeyword(String Keyword, Language language,
Pageable pageable);

Page<ExperienceThumbnail> findExperienceThumbnails(Language language,
ExperienceType experienceType, List<ExperienceTypeKeyword> keywordFilterList,
Page<ExperienceResponse.PreviewDto> findAllExperiencePreviewDtoOrderByPriorityDescAndCreatedAtDesc(
Language language, ExperienceType experienceType,
List<ExperienceTypeKeyword> keywordFilterList,
List<String> addressFilterList, Pageable pageable);

Set<ExperienceTypeKeyword> getExperienceTypeKeywordSet(Long postId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,10 @@
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.ExperienceThumbnail;
import com.jeju.nanaland.domain.experience.dto.ExperienceResponse;
import com.jeju.nanaland.domain.experience.dto.QExperienceCompositeDto;
import com.jeju.nanaland.domain.experience.dto.QExperienceResponse_ExperienceThumbnail;
import com.jeju.nanaland.domain.experience.dto.QExperienceResponse_PreviewDto;
import com.jeju.nanaland.domain.experience.entity.enums.ExperienceType;
import com.jeju.nanaland.domain.experience.entity.enums.ExperienceTypeKeyword;
import com.jeju.nanaland.domain.review.dto.QReviewResponse_SearchPostForReviewDto;
Expand Down Expand Up @@ -117,12 +116,13 @@ public Page<ExperienceCompositeDto> searchCompositeDtoByKeyword(String keyword,
}

@Override
public Page<ExperienceThumbnail> findExperienceThumbnails(Language language,
ExperienceType experienceType, List<ExperienceTypeKeyword> keywordFilterList,
public Page<ExperienceResponse.PreviewDto> findAllExperiencePreviewDtoOrderByPriorityDescAndCreatedAtDesc(
Language language, ExperienceType experienceType,
List<ExperienceTypeKeyword> keywordFilterList,
List<String> addressFilterList, Pageable pageable) {

List<ExperienceThumbnail> resultDto = queryFactory
.selectDistinct(new QExperienceResponse_ExperienceThumbnail(
List<ExperienceResponse.PreviewDto> resultDto = queryFactory
.selectDistinct(new QExperienceResponse_PreviewDto(
experience.id,
imageFile.originUrl,
imageFile.thumbnailUrl,
Expand Down Expand Up @@ -193,20 +193,21 @@ 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 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;
}

private List<Long> getIdListContainAllHashtags(String keyword, Language language) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,7 @@
import com.jeju.nanaland.domain.common.repository.ImageFileRepository;
import com.jeju.nanaland.domain.common.service.PostService;
import com.jeju.nanaland.domain.experience.dto.ExperienceCompositeDto;
import com.jeju.nanaland.domain.experience.dto.ExperienceResponse.ExperienceDetailDto;
import com.jeju.nanaland.domain.experience.dto.ExperienceResponse.ExperienceThumbnail;
import com.jeju.nanaland.domain.experience.dto.ExperienceResponse.ExperienceThumbnailDto;
import com.jeju.nanaland.domain.experience.dto.ExperienceResponse;
import com.jeju.nanaland.domain.experience.entity.enums.ExperienceType;
import com.jeju.nanaland.domain.experience.entity.enums.ExperienceTypeKeyword;
import com.jeju.nanaland.domain.experience.repository.ExperienceRepository;
Expand Down Expand Up @@ -80,37 +78,38 @@ public PostPreviewDto getPostPreviewDto(Long postId, Category category, Language
}

// 이색체험 리스트 조회
public ExperienceThumbnailDto getExperienceList(MemberInfoDto memberInfoDto,
public ExperienceResponse.PreviewPageDto getExperiencePreviews(MemberInfoDto memberInfoDto,
ExperienceType experienceType, List<ExperienceTypeKeyword> keywordFilterList,
List<String> addressFilterList, int page, int size) {

Language language = memberInfoDto.getLanguage();
Pageable pageable = PageRequest.of(page, size);

// experienceType(액티비티, 문화예술)에 따른 이색체험 조회
Page<ExperienceThumbnail> experienceThumbnailPage = experienceRepository.findExperienceThumbnails(
language, experienceType, keywordFilterList, addressFilterList, pageable);
Page<ExperienceResponse.PreviewDto> experiencePreviewPage =
experienceRepository.findAllExperiencePreviewDtoOrderByPriorityDescAndCreatedAtDesc(
language, experienceType, keywordFilterList, addressFilterList, pageable);

// 좋아요 여부
List<Long> favoriteIds = memberFavoriteService.getFavoritePostIdsWithMember(
memberInfoDto.getMember());
List<ExperienceThumbnail> data = experienceThumbnailPage.getContent();
List<ExperienceResponse.PreviewDto> data = experiencePreviewPage.getContent();

// 좋아요 여부, 리뷰 평균 추가
for (ExperienceThumbnail experienceThumbnail : data) {
Long postId = experienceThumbnail.getId();
experienceThumbnail.setFavorite(favoriteIds.contains(postId));
experienceThumbnail.setRatingAvg(reviewRepository.findTotalRatingAvg(EXPERIENCE, postId));
for (ExperienceResponse.PreviewDto previewDto : data) {
Long postId = previewDto.getId();
previewDto.setFavorite(favoriteIds.contains(postId));
previewDto.setRatingAvg(reviewRepository.findTotalRatingAvg(EXPERIENCE, postId));
}

return ExperienceThumbnailDto.builder()
.totalElements(experienceThumbnailPage.getTotalElements())
return ExperienceResponse.PreviewPageDto.builder()
.totalElements(experiencePreviewPage.getTotalElements())
.data(data)
.build();
}

// 이색체험 상세 정보 조회
public ExperienceDetailDto getExperienceDetail(MemberInfoDto memberInfoDto, Long postId,
public ExperienceResponse.DetailDto getExperienceDetail(MemberInfoDto memberInfoDto, Long postId,
boolean isSearch) {

Language language = memberInfoDto.getLanguage();
Expand Down Expand Up @@ -144,7 +143,7 @@ public ExperienceDetailDto getExperienceDetail(MemberInfoDto memberInfoDto, Long
experienceTypeKeyword.getValueByLocale(language)
).toList();

return ExperienceDetailDto.builder()
return ExperienceResponse.DetailDto.builder()
.id(experienceCompositeDto.getId())
.title(experienceCompositeDto.getTitle())
.intro(experienceCompositeDto.getIntro())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import com.jeju.nanaland.domain.common.entity.Post;
import com.jeju.nanaland.domain.common.repository.ImageFileRepository;
import com.jeju.nanaland.domain.experience.dto.ExperienceCompositeDto;
import com.jeju.nanaland.domain.experience.dto.ExperienceResponse.ExperienceDetailDto;
import com.jeju.nanaland.domain.experience.dto.ExperienceResponse;
import com.jeju.nanaland.domain.experience.dto.ExperienceResponse.ExperienceThumbnail;
import com.jeju.nanaland.domain.experience.dto.ExperienceResponse.ExperienceThumbnailDto;
import com.jeju.nanaland.domain.experience.entity.Experience;
Expand Down Expand Up @@ -126,8 +126,8 @@ void getActivityList() {
.findPostImageFiles(postId);

// when
ExperienceDetailDto result = experienceService.getExperienceDetail(memberInfoDto, postId,
false);
ExperienceResponse.DetailDto result =
experienceService.getExperienceDetail(memberInfoDto, postId, false);

// then
assertThat(result).extracting("title").isEqualTo("액티비티 테스트 제목1");
Expand Down

0 comments on commit 49fe09e

Please sign in to comment.