movice-service

2024. 4. 11. 16:50개발일지

package com.example.totalproject.Service;

import com.example.totalproject.DTO.MovieDTO;
import com.example.totalproject.Entity.MovieEntity;
import com.example.totalproject.Repository.MovieRepository;
import lombok.RequiredArgsConstructor;
import org.modelmapper.ModelMapper;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.util.Optional;

@Service
@RequiredArgsConstructor
public class MovieService {
    @Value("${imgUploadLocation}")
    private String imgUpPath;
    private final MovieRepository movieRepository;
    private final ModelMapper modelMapper = new ModelMapper();
    private final FileService fileService;

    //삽입
    public void movieSave(MovieDTO movieDTO, MultipartFile file) {
        String oriName = file.getOriginalFilename();
        String newName = null;
        try { //파일업로드작업
            if(oriName != null) { //업로드한 파일이 존재하면
                newName = fileService.uploadFile(imgUpPath, oriName, file.getBytes());
                movieDTO.setPoster(newName);
            }
        } catch(Exception e) {

        }
        MovieEntity movieEntity = modelMapper.map(movieDTO,
                MovieEntity.class);
        movieRepository.save(movieEntity);
    }
    //수정(이미지 존재->기존이미지 확인->삭제->업로드)
    public void movieModify(MovieDTO movieDTO, MultipartFile file) {
        String oriName = file.getOriginalFilename(); //새로운 파일
        String newName = movieDTO.getPoster(); //기존파일
        try {
            if (oriName != null) {
                if(newName != null) { //기존파일이 존재하면
                    fileService.deleteFile(imgUpPath, newName);
                    newName= null;
                }
                newName = fileService.uploadFile(imgUpPath, oriName, file.getBytes());
                movieDTO.setPoster(newName);
            }
        } catch(Exception e) {

        }
        MovieEntity movieEntity = modelMapper.map(movieDTO,
                MovieEntity.class);
        movieRepository.save(movieEntity);
    }
    //삭제
    public void movieRemove(int id) {
        //기존레코드에서 영화포스터 파일을 삭제
        Optional<MovieEntity> movieEntity = movieRepository.findById(id);
        String imgName = movieEntity.get().getPoster();
        if(imgName != null) { //해당파일이 존재
            fileService.deleteFile(imgUpPath, imgName);
        }

        movieRepository.deleteById(id);
    }
    //조회
    public Page<MovieDTO> movieList(Pageable page) {
        int cutPage = page.getPageNumber()-1;
        int pageCnt = 5;
        Pageable pageable = PageRequest.of(cutPage, pageCnt,
                Sort.by(Sort.Direction.DESC, "code"));
        Page<MovieEntity> movieEntities = movieRepository.findAll(pageable);
        Page<MovieDTO> movieDTOS = movieEntities.map(data->
                modelMapper.map(data, MovieDTO.class));
        return movieDTOS;
    }
    //개별조회
    public MovieDTO movieRead(int id) {
        Optional<MovieEntity> movieEntity = movieRepository.findById(id);
        MovieDTO movieDTO = modelMapper.map(movieEntity, MovieDTO.class);
        return movieDTO;
    }    
}

'개발일지' 카테고리의 다른 글

LoginService  (0) 2024.04.11
FileService  (0) 2024.04.11
member-service  (0) 2024.04.11
movie-controller  (0) 2024.04.11
member-controller  (0) 2024.04.11