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 |