[Project] 상영관 등록하기

김호정's avatar
Oct 09, 2024
[Project] 상영관 등록하기
 

상영관등록하기

notion image
 
notion image
 

 

상영관 등록을 위한 로직

  1. 프론트에서 상영관id, 영화id. 상영날짜를 보내준다
  1. 관리자 권한이 등록이 가능한 사람인지를 체크한다.
  1. 영화와 상영관의 상영시간을 가져온다.
  1. 상영시간을 등록한다.
 

1. controller

@PostMapping("/admin/showtime") public String saveShowtime(@ModelAttribute AdminShotimeRequest.ShowtimeSaveRequest req) { // 상영관 등록 처리 int day = adminService.상영관등록하기(req); // 리다이렉트로 /admin/showtime 페이지로 이동 return "redirect:/admin/showtime/"+ day; }
 
 

2.service

//어드민 유저확인해야함 원래 -- 추가필요 @Transactional public int 상영관등록하기(AdminShotimeRequest.ShowtimeSaveRequest req) { // 영화와 상영관을 가져옴 Movie movie = movieRepository.findById(req.getMovieId()) .orElseThrow(() -> new ExceptionApi401("Movie not found")); Screen screen = screenRepository.findById(req.getScreenId()) .orElseThrow(() -> new ExceptionApi404("Screen not found")); // 상영 시간 엔티티 생성 Showtime showtime = new Showtime(); showtime.setMovie(movie); showtime.setScreen(screen); showtime.setPrice(req.getPrice()); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"); LocalDateTime localDateTime = LocalDateTime.parse(req.getTime(), formatter); // LocalDateTime을 Timestamp로 변환 Timestamp timestamp = Timestamp.valueOf(localDateTime); showtime.setStartedAt(timestamp); // 상영 시작 시간 설정 int dayOfMonth = localDateTime.getDayOfMonth(); // 상영 시간 저장 showtimeRepository.save(showtime); return dayOfMonth; }
 

3.dto

public class AdminShotimeRequest { @Data public static class LoginDTO { @NotEmpty private String username; @NotEmpty private String password; } @Data public static class ShowtimeSaveRequest { private Long movieId; private String time; // 상영 시작 시간 private Long screenId; // 상영관 ID private Integer price =10; public ShowtimeSaveRequest(){} public ShowtimeSaveRequest(Long movieId, String time, Long screenId) { this.movieId = movieId; this.time = time; this.screenId = screenId; } } }
 

추가로직

등록하려는 상영시간에 중복되는 시간이 없는지 검증을 하는 로직이 필요해 보인다.
Share article

keepgoing