임의로 정보들을 만들어 화면에 나올 수 있게 테스트 하기
 영화관
 let cinemaList = [`가산디지털단지`, `사상롯데시네마`, `화명CGV`, `서면롯데시네마`, `덕천메가박스`];
    for (let i = 0; i < cinemaList.length; i++) {
        console.log(cinemaList[i] + `<br>`);
    }
    
    영화
    let movieList = [{ age: 15, title: `베리드` }, { age: 15, title: `러브로지` }, { age: 19, title: `쏘우` }, { age: 19, title: `악마를 보았다` }];
    for (let i = 0; i < movieList.length; i++) {
        console.log(movieList[i].age + `<br>`);
        console.log(movieList[i].title + `<br>`);
    }
    
    //날짜
    var today = new Date();
    var date = today.getDate();//일
    //현재 날짜 +1   
    for (let i = 0; i < 10; i++) {
        console.log(date + i);
    }
    
    상영시간 + 좌석
    let seatList = [{ time: `14:35`, remain: `85/90` }, { time: `18:35`, remain: `20/98` }]
    for (let i = 0; i < seatList.length; i++) {
        console.log(seatList[i].time + `<br>`);
        console.log(seatList[i].remain + `<br>`);
    }아직 day로 하면 일요일 시작으로 0123456 으로 숫자로 나오는 것은 아는데 이 것을 요일로 바꾸는 법이 아직 미숙함
먼저 화면 뿌리고 시작할 예정
<!-- 메인 콘텐츠 -->
        <div class="main__content">
            <!-- 영화관 선택 -->
            <div class="section">
                <div class="section__title">영화관</div>
                <div class="content cinema__selection">
                    <div onclick="cinemaLists()" class="cinema__area">
                        <div class="cinema__item">부산</div>
                        <div class="cinema__item">서울</div>
                    </div>
                    <div class="cinema__name" id="cinemas">
                    </div>
                </div>
            </div>
            <!-- 영화 선택 -->
            <div class="section">
                <div class="section__title">영화 선택</div>
                <div class="content" id="movies">
                </div>
            </div>let isMovieListsExecuted = false;
    // 여기서는 영화 리스트를 가지고 와야한다
    let movieList = [{ age: 15, title: `베리드` }, { age: 15, title: `러브로지` }, { age: 19, title: `쏘우` }, { age: 19, title: `악마를 보았다` }];
    for (let i = 0; i < movieList.length; i++) {
        console.log(movieList[i].age + `<br>`);
        console.log(movieList[i].title + `<br>`);
    }
    function movieLists() {
        if (isMovieListsExecuted) return;
        for (let i = 0; i < movieList.length; i++) {
            $("#movies").append(makeMovies(i))
        }
        isMovieListsExecuted = true;
    }
    function makeMovies(id) {
        return ` <div class="movie__item">
                        <img src="num_${movieList[id].age}.png" alt="rating">
                        <span>${movieList[id].title}</span>
                    </div>`
    }
    function cinemaLists() {
        if (isCinemaListsExecuted) return;
        for (let i = 0; i < cinemaList.length; i++) {
            $("#cinemas").append(makeCinemas(i))
            console.log(cinemaList[i] + `<br>`);
        }
        isCinemaListsExecuted = true;
    }
    function makeCinemas(id) {
        return ` <div onclick="movieLists()"  class="cinema__detail__item">${cinemaList[id]}</div>`
    }이런식으로 먼저 화면 클릭 시 이동되는 것을 먼저 연습함
근데 이거 왜 된거지? 아직 모름
- 잘 몰랐던게 ShowtimeResponse.MoveiDTO를 받을 때 생성자 Moive movie를 넣었는데 List<Movie>로 받아야해서 고민 계속함
- 참고함 여기에서
이거 그냥 
public List<ShowtimeResponse.ShowTimeDTO> 날짜보기(Long date,Long id){
        List<Showtime> dats = showtimeRepository.mFindByDateIdMovieId(date,id);
        List<ShowtimeResponse.ShowTimeDTO> dtos = new ArrayList<>();
        for(Showtime showtime : dats){
            ShowtimeResponse.ShowTimeDTO dto = new ShowtimeResponse.ShowTimeDTO(showtime);
            dtos.add(dto);
        }
        return dtos;
    }이렇게 했으면 됐는데 이 때는 기억을 못했었음
그래서 이런식으로 했음
public List<ShowtimeResponse.MovieDTO> 영화관영화보기(Long id){
        List<Screen> screens = screenRepository.mFindScreenByCinemaId(id);
        List<Long> screenIds = screens.stream().map(screen -> screen.getId()).toList();
        List<Showtime> showtimes = showtimeRepository.mFindByWithMovieScreenIds(screenIds);
        List<Movie> moviePs =  showtimes.stream().map(showtime -> showtime.getMovie()).distinct().toList();
        List<ShowtimeResponse.MovieDTO> movieList = new ArrayList<>();
        for(Movie movie : moviePs){
            ShowtimeResponse.MovieDTO dto = ShowtimeResponse.MovieDTO.builder()
                    .id(movie.getId())
                    .movieNm(movie.getMovieNm())
                    .ratingGrade(movie.getRatingGrade())
                    .build();
            movieList.add(dto);
        }
        return movieList;
    }일단 리포지토리
@Query("select distinct st from Showtime st left join fetch st.movie mt where st.screen.id IN :ids ")
    List<Showtime> mFindByWithMovieScreenIds(@Param("ids") List<Long> ids);서비스
 public List<ShowtimeResponse.MovieDTO> 영화관영화보기(Long id){
        List<Screen> screens = screenRepository.mFindScreenByCinemaId(id);
        List<Long> screenIds = screens.stream().map(screen -> screen.getId()).toList();
        List<Showtime> showtimes = showtimeRepository.mFindByWithMovieScreenIds(screenIds);
        List<Movie> moviePs =  showtimes.stream().map(showtime -> showtime.getMovie()).distinct().toList();
        List<ShowtimeResponse.MovieDTO> movieList = new ArrayList<>();
        for(Movie movie : moviePs){
            ShowtimeResponse.MovieDTO dto = ShowtimeResponse.MovieDTO.builder()
                    .id(movie.getId())
                    .movieNm(movie.getMovieNm())
                    .ratingGrade(movie.getRatingGrade())
                    .build();
            movieList.add(dto);
        }
        return movieList;
//        List<Showtime> showtimes = showtimeRepository.mFindByScreenIds(screenIds);
//        List<Movie> moviePs = showtimes.stream().map(showtime -> showtime.getMovie()).distinct().toList();
    }컨트롤러
 @GetMapping("/reservation/cinema/{id}")
    public ResponseEntity<?> movies(@PathVariable("id") Long id){
        List<ShowtimeResponse.MovieDTO> movieList = showtimeService.영화관영화보기(id);
        return ResponseEntity.ok(Resp.ok(movieList));
    }또 다른 궁금증
왜 alt=”rating” 이라 하면 사진이 안 보이고  rating 글자만 보일까?
async function movies(cinemaId){
        let response = await fetch("http://localhost:8080/reservation/cinema/"+cinemaId,{
            method: "get"
        });
        let data = await response.json();
        console.log("data ", data);
        console.log("body ", data.body);
        $("#movie-box").empty();
        for(movie of data.body){
            let dom = makeMovie(movie);
            $("#movie-box").append(dom);
        }
    }
function makeMovie(movie){
        return ` <div class="movie__item">
                        <img src="num_${movie.ratingGrade}.png" alt="rating">
                        <span>${movie.movieNm}</span>`;
    }    하고 json은

이런식으로

- 지역 선택 시 영화관

- 영화관 선택 시 영화 리스트

- 영화 리스트 선택 시 오늘 날짜로 +5

- 날짜 선택 시 상영시간

Share article
