Skip to content

Commit

Permalink
[fix] 기획 변경에 따른 도시 상세 피드 쇼츠 조회 로직 수정 및 응답 데이터 변경
Browse files Browse the repository at this point in the history
  • Loading branch information
jo0oy committed Jan 25, 2024
1 parent bcb1e7c commit 6032b24
Show file tree
Hide file tree
Showing 5 changed files with 51 additions and 49 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.haejwo.tripcometrue.domain.city.dto.response.*;
import com.haejwo.tripcometrue.domain.city.service.CityContentReadService;
import com.haejwo.tripcometrue.domain.triprecord.dto.response.triprecord_schedule_media.TripRecordScheduleVideoListItemResponseDto;
import com.haejwo.tripcometrue.global.util.ResponseDTO;
import com.haejwo.tripcometrue.global.util.SliceResponseDto;
import com.haejwo.tripcometrue.global.validator.annotation.HomeTopListQueryType;
Expand Down Expand Up @@ -67,7 +68,7 @@ public ResponseEntity<ResponseDTO<List<CityImageContentResponseDto>>> getImagesB

// 도시 쇼츠 더보기 조회
@GetMapping("/{cityId}/videos")
public ResponseEntity<ResponseDTO<SliceResponseDto<CityVideoContentResponseDto>>> getVideosByCityIdPagination(
public ResponseEntity<ResponseDTO<SliceResponseDto<TripRecordScheduleVideoListItemResponseDto>>> getVideosByCityIdPagination(
@PathVariable("cityId") Long cityId,
@PageableDefault(sort = "createdAt", direction = Sort.Direction.DESC) Pageable pageable
) {
Expand All @@ -82,7 +83,7 @@ public ResponseEntity<ResponseDTO<SliceResponseDto<CityVideoContentResponseDto>>

// 도시 쇼츠 리스트 조회
@GetMapping("/{cityId}/videos/list")
public ResponseEntity<ResponseDTO<List<CityVideoContentResponseDto>>> getVideosByCityId(
public ResponseEntity<ResponseDTO<List<TripRecordScheduleVideoListItemResponseDto>>> getVideosByCityId(
@PathVariable("cityId") Long cityId
) {
return ResponseEntity
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.haejwo.tripcometrue.domain.place.entity.Place;
import com.haejwo.tripcometrue.domain.place.repositroy.PlaceRepository;
import com.haejwo.tripcometrue.domain.triprecord.dto.query.TripRecordScheduleImageWithPlaceIdQueryDto;
import com.haejwo.tripcometrue.domain.triprecord.dto.response.triprecord_schedule_media.TripRecordScheduleVideoListItemResponseDto;
import com.haejwo.tripcometrue.domain.triprecord.repository.triprecord_schedule_image.TripRecordScheduleImageRepository;
import com.haejwo.tripcometrue.domain.triprecord.repository.triprecord_schedule_video.TripRecordScheduleVideoRepository;
import com.haejwo.tripcometrue.global.util.SliceResponseDto;
Expand Down Expand Up @@ -129,21 +130,21 @@ public SliceResponseDto<CityImageContentResponseDto> getImages(Long cityId, Page

// 도시 쇼츠 리스트 조회
@Transactional(readOnly = true)
public List<CityVideoContentResponseDto> getVideos(Long cityId) {
public List<TripRecordScheduleVideoListItemResponseDto> getVideos(Long cityId) {
return tripRecordScheduleVideoRepository
.findByCityIdOrderByCreatedAtDescLimitSize(cityId, CITY_MEDIA_CONTENT_SIZE)
.stream()
.map(CityVideoContentResponseDto::fromEntity)
.map(TripRecordScheduleVideoListItemResponseDto::fromQueryDto)
.toList();
}

// 도시 쇼츠 리스트 조회 (페이징, 정렬)
@Transactional(readOnly = true)
public SliceResponseDto<CityVideoContentResponseDto> getVideos(Long cityId, Pageable pageable) {
public SliceResponseDto<TripRecordScheduleVideoListItemResponseDto> getVideos(Long cityId, Pageable pageable) {
return SliceResponseDto.of(
tripRecordScheduleVideoRepository
.findByCityId(cityId, pageable)
.map(CityVideoContentResponseDto::fromEntity)
.map(TripRecordScheduleVideoListItemResponseDto::fromQueryDto)
);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
package com.haejwo.tripcometrue.domain.triprecord.repository.triprecord_schedule_video;

import com.haejwo.tripcometrue.domain.triprecord.dto.query.TripRecordScheduleVideoQueryDto;
import com.haejwo.tripcometrue.domain.triprecord.entity.TripRecordScheduleVideo;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Slice;

import java.util.List;

public interface TripRecordScheduleVideoRepositoryCustom {

Slice<TripRecordScheduleVideo> findByCityId(Long cityId, Pageable pageable);
Slice<TripRecordScheduleVideoQueryDto> findByCityId(Long cityId, Pageable pageable);

List<TripRecordScheduleVideo> findByCityIdOrderByCreatedAtDescLimitSize(Long cityId, Integer size);
List<TripRecordScheduleVideoQueryDto> findByCityIdOrderByCreatedAtDescLimitSize(Long cityId, Integer size);

List<TripRecordScheduleVideoQueryDto> findNewestVideoList(int size);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.haejwo.tripcometrue.domain.triprecord.repository.triprecord_schedule_video;

import com.haejwo.tripcometrue.domain.triprecord.dto.query.TripRecordScheduleVideoQueryDto;
import com.haejwo.tripcometrue.domain.triprecord.entity.TripRecordScheduleVideo;
import com.haejwo.tripcometrue.global.enums.Country;
import com.querydsl.core.types.Order;
import com.querydsl.core.types.OrderSpecifier;
Expand All @@ -28,12 +27,29 @@ public class TripRecordScheduleVideoRepositoryImpl implements TripRecordSchedule
private final JPAQueryFactory queryFactory;

@Override
public Slice<TripRecordScheduleVideo> findByCityId(Long cityId, Pageable pageable) {
public Slice<TripRecordScheduleVideoQueryDto> findByCityId(Long cityId, Pageable pageable) {

int pageSize = pageable.getPageSize();
List<TripRecordScheduleVideo> content = queryFactory
.selectFrom(tripRecordScheduleVideo)
.leftJoin(tripRecordScheduleVideo.tripRecordSchedule, tripRecordSchedule).fetchJoin()
.leftJoin(tripRecordSchedule.place, place)
List<TripRecordScheduleVideoQueryDto> content = queryFactory
.select(
Projections.constructor(
TripRecordScheduleVideoQueryDto.class,
tripRecordScheduleVideo.id,
tripRecord.id,
tripRecord.title,
tripRecordScheduleVideo.thumbnailUrl,
tripRecordScheduleVideo.videoUrl,
tripRecord.storeCount,
member.id,
member.memberBase.nickname,
member.profileImage
)
)
.from(tripRecordScheduleVideo)
.join(tripRecordScheduleVideo.tripRecordSchedule, tripRecordSchedule)
.join(tripRecordSchedule.place, place)
.join(tripRecordSchedule.tripRecord, tripRecord)
.join(tripRecord.member, member)
.where(
place.city.id.eq(cityId)
)
Expand All @@ -52,15 +68,30 @@ public Slice<TripRecordScheduleVideo> findByCityId(Long cityId, Pageable pageabl
}

@Override
public List<TripRecordScheduleVideo> findByCityIdOrderByCreatedAtDescLimitSize(Long cityId, Integer size) {
public List<TripRecordScheduleVideoQueryDto> findByCityIdOrderByCreatedAtDescLimitSize(Long cityId, Integer size) {
return queryFactory
.selectFrom(tripRecordScheduleVideo)
.join(tripRecordScheduleVideo.tripRecordSchedule, tripRecordSchedule).fetchJoin()
.select(
Projections.constructor(
TripRecordScheduleVideoQueryDto.class,
tripRecordScheduleVideo.id,
tripRecord.id,
tripRecord.title,
tripRecordScheduleVideo.thumbnailUrl,
tripRecordScheduleVideo.videoUrl,
tripRecord.storeCount,
member.id,
member.memberBase.nickname,
member.profileImage
)
)
.from(tripRecordScheduleVideo)
.join(tripRecordScheduleVideo.tripRecordSchedule, tripRecordSchedule)
.join(tripRecordSchedule.place, place)
.join(tripRecordSchedule.tripRecord, tripRecord)
.join(tripRecord.member, member)
.where(
place.city.id.eq(cityId)
)
.orderBy(tripRecordScheduleVideo.createdAt.desc())
.limit(size)
.fetch();
}
Expand Down

0 comments on commit 6032b24

Please sign in to comment.