Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti
// Event 관련 접근
.requestMatchers("/event/", "/event/{eventId}", "/event/member/{memberId}", "/event/member/{memberId}/event/{eventId}", "/event/member/{memberId}/date/{date}", "/event/multipleEvents/{memberId}/{generatorId}", "/event/member/{memberId}/recent").permitAll()
// Generator 관련 접근
.requestMatchers("/generator/", "/generator/{generatorId}").permitAll()
.requestMatchers("/generator/", "/generator/{generatorId}", "/generator/list/{memberId}").permitAll()
// Bookmark 관련 접근
.requestMatchers("/bookmark/add/{memberId}/{generatorId}", "/bookmark/delete/{bookmarkId}" ).permitAll()
// Crawling 관련 접근
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,4 +75,34 @@ public static GeneratorResponseDTO.GeneratorPreviewListDTO toGeneratorPreviewLis
.build();
}


public static GeneratorResponseDTO.GeneratorPreviewDTO toGeneratorPreviewDTOWithBookmark(Generator generator, boolean isBookmarked) {
return GeneratorResponseDTO.GeneratorPreviewDTO.builder()
.generatorId(generator.getGeneratorId())
.memberId(generator.getMember().getMemberId())
.memberName(generator.getMember().getName())
.sourceType(generator.getSourceType())
.generatorTitle(generator.getGeneratorTitle())
.generatorDetail(generator.getGeneratorDetail())
.frames(generator.getFrames())
.mapping(generator.getMapping())
.webUrl(generator.getWebUrl())
.isBookmarked(isBookmarked) // 북마크 상태 추가
.build();
}

public static GeneratorResponseDTO.GeneratorPreviewListDTO toGeneratorPreviewListDTOWithBookmark(
List<Generator> generatorList, List<Long> bookmarkedGeneratorIds) {
List<GeneratorResponseDTO.GeneratorPreviewDTO> generatorPreviewDTOList = generatorList.stream()
.map(generator -> toGeneratorPreviewDTOWithBookmark(
generator, bookmarkedGeneratorIds.contains(generator.getGeneratorId())))
.collect(Collectors.toList());
return GeneratorResponseDTO.GeneratorPreviewListDTO.builder()
.generators(generatorPreviewDTOList)
.build();
}




}
Original file line number Diff line number Diff line change
Expand Up @@ -61,5 +61,4 @@ public static MemberResponseDTO.BookmarkPreviewListDTO toBookmarkPreviewListDTO(
.build();
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.List;

Expand All @@ -17,4 +18,7 @@ public interface BookmarkRepository extends JpaRepository<Bookmark, Long> {
// 회원별 북마크 리스트 조회
//@Query("SELECT b FROM Bookmark b JOIN FETCH b.generator p LEFT JOIN FETCH p.generatorFileList LEFT JOIN FETCH p.member WHERE b.member = :member")
List<Bookmark> findAllByMember(Member member);
@Query("SELECT b.generator.generatorId FROM Bookmark b WHERE b.member.memberId = :memberId")
List<Long> findBookmarkedGeneratorIdsByMemberId(@Param("memberId") Long memberId);

}
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
package Capstone.AutoScheduler.global.service.GeneratorService;

import Capstone.AutoScheduler.global.domain.entity.Generator;
import Capstone.AutoScheduler.global.web.dto.Generator.GeneratorResponseDTO;

import java.util.List;

public interface GeneratorQueryService {

Generator findById(Long generatorId);
List<Generator> getGenerators();
//List<Generator> getGeneratorsWithBookmarkStatus(Long memberId);
List<Generator> getGeneratorsWithBookmarkStatus(Long memberId);
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package Capstone.AutoScheduler.global.service.GeneratorService;


import Capstone.AutoScheduler.global.converter.GeneratorConverter;
import Capstone.AutoScheduler.global.domain.entity.Generator;
import Capstone.AutoScheduler.global.repository.GeneratorRepository;
import Capstone.AutoScheduler.global.web.dto.Generator.GeneratorResponseDTO;
Expand Down Expand Up @@ -34,13 +35,18 @@ public Generator findById(Long generatorId) {
}

@Override
public List<Generator> getGenerators() {
public List<Generator> getGenerators() {
return generatorRepository.findAllByOrderByGeneratorIdDesc();
}


// @Override
// public List<GeneratorResponseDTO.GeneratorPreviewDTO> getGeneratorsWithBookmarkStatus(Long memberId) {
// return generatorRepository.findAllWithBookmarkStatus(memberId);
// }
@Override
public List<Generator> getGeneratorsWithBookmarkStatus(Long memberId) {
return generatorRepository.findAllWithBookmarkStatus(memberId).stream()
.map(data -> (Generator) data[0]) // Generator 객체만 추출
.toList();
}



}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import Capstone.AutoScheduler.global.apiPayload.code.status.SuccessStatus;
import Capstone.AutoScheduler.global.converter.GeneratorConverter;
import Capstone.AutoScheduler.global.domain.entity.Generator;
import Capstone.AutoScheduler.global.repository.BookmarkRepository;
import Capstone.AutoScheduler.global.service.GeneratorService.GeneratorCommandService;
import Capstone.AutoScheduler.global.service.GeneratorService.GeneratorQueryService;
import Capstone.AutoScheduler.global.service.MemberService.MemberCommandService;
Expand Down Expand Up @@ -32,6 +33,7 @@ public class GeneratorController {
private final GeneratorCommandService generatorCommandService;
private final GeneratorQueryService generatorQueryService;
private final MemberCommandService memberCommandService;
private final BookmarkRepository bookmarkRepository;

// 일정 생성기 저장하기
@PostMapping("/")
Expand Down Expand Up @@ -70,14 +72,16 @@ public ApiResponse<GeneratorResponseDTO.GeneratorPreviewListDTO> findGenerators(
GeneratorConverter.toGeneratorPreviewListDTO(generators));
}

// // 전체 일정 생성기 리스트 조회 (사용자의 북마크 상태 포함)
// @GetMapping("/list/{memberId}")
// @Operation(summary = "전체 일정 생성기 리스트 조회 (사용자의 북마크 상태 포함) API", description = "전체 일정 생성기 리스트를 조회하며 사용자가 북마크한 생성기를 표시합니다.")
// public ApiResponse<GeneratorResponseDTO.GeneratorPreviewListDTO> findGeneratorsWithBookmark(@PathVariable Long memberId) {
// List<Generator> generators = generatorQueryService.getGeneratorsWithBookmarkStatus(memberId);
// return ApiResponse.onSuccess(
// SuccessStatus.GENERATOR_OK,
// GeneratorConverter.toGeneratorPreviewListDTO(generators));
// }
// 전체 일정 생성기 리스트 조회 (사용자의 북마크 상태 포함)
@GetMapping("/list/{memberId}")
@Operation(summary = "전체 일정 생성기 리스트 조회 (사용자의 북마크 상태 포함) API", description = "전체 일정 생성기 리스트를 조회하며 사용자가 북마크한 생성기를 표시합니다.")
public ApiResponse<GeneratorResponseDTO.GeneratorPreviewListDTO> findGeneratorsWithBookmark(@PathVariable Long memberId) {
List<Generator> generators = generatorQueryService.getGeneratorsWithBookmarkStatus(memberId);
List<Long> bookmarkedGeneratorIds = bookmarkRepository.findBookmarkedGeneratorIdsByMemberId(memberId);
return ApiResponse.onSuccess(
SuccessStatus.GENERATOR_OK,
GeneratorConverter.toGeneratorPreviewListDTOWithBookmark(generators, bookmarkedGeneratorIds));
}


}
Loading