2022. 9. 1. 18:47ㆍ프로젝트/Spring Project
# 2일차 - ItemImg
이미지 이름, 원래 이미지 이름, 이미지 url, 대표이미지 여부 작성.
상품과 일대다 매핑을 해줌. @ManyToOne
FetchType.LAZY는 지연로딩을 뜻함.
상품 이미지도 업데이트를 해야 할 수도 있으므로 업데이트 메소드 만들어줌.
빌더 패턴 사용.
이미지엔티티 형식의 리스트에 itemId로 조회한 이미지들을 받아옴.
대표 사진여부를 확인하여 대표사진도 조회하여 받아옴.
파일 서비스를 통해 파일을 업로드 및 삭제 할수있음.
업로드 메소드를 보면 파라미터로 업로드 경로, 오리지널 파일 이름, 파일 데이터를 받는다.
랜덤 UUID를 만들고 오리지널 파일 이름에서 확장자를 뽑아옴.
저장할 이름에 uuid와 확장자를 합쳐 같이 변수에 저장.
업로드 url은 받아온 업로드 경로와 저장할 파일 이름을 합침.
새로운 파일 생성후 파일데이터 작성.
파일 이름 리턴함.
파일 삭제는 파일 경로를 받아오고 존재 유무를 따진후 파일 삭제.
상품 이미지 저장위치는 C:/shop/item으로 해줌.
업데이트 메소드.
상품 서비스에서 저장 메소드이다.
파라미터로 상품 정보, 이미지 파일 리스트를 받는다.
상품 정보로 itemFormDto에 있는 ModelMapper를 통해 item클래스 형태로 변환하여 전달 후 저장.
이미지 파일 수만큼 반복하고 처음 이미지는 대표사진으로 생각하고 'Y' 값을 넣어주고 저장한다.
업데이트 메소드는 상품아이디를 받아 조회후 정보를 받는다.
상품 이미지들의 아이디 또한 가져와 itemImgService에 updateItemImg메소드를 통해 업데이트 후 상품 아이디 리턴.
상품 등록은 관리자 페이지에서 진행.
MVC패턴 사용.
model을 사용하여 상품등록dto 를 넣어주고 상품 등록 페이지 반환.
객체 검증, 유효성 검증을 위해 @Valid 어노테이션 사용. itemFormDto, 스프링에서 제공하는 BindingResult를 통해 예외처리, 이미지 파일을 받는다.
예외 처리가 나면 다시 등록 페이지를 반환하고, 사진이 비거나 상품 아이디가 null일경우 에러메시지를 반환한다.
정상적이면 itemService에서 저장한다.
업데이트도 등록과 비슷함.
상품 삭제는 판매상태로 조율하면 되므로 굳이 작성 안함.
프론트엔드는 잘 하지 못하므로 코드만 남김.
git : https://github.com/Junyoungs7/Shopping
위 깃헙에 전체 코드 있음.
'프로젝트 > Spring Project' 카테고리의 다른 글
RiotAPI + 내전 팀 추천 알고리즘 (1) | 2022.09.29 |
---|---|
Riot API + Spring + JSON (0) | 2022.09.22 |
쇼핑몰 개발 - spring boot + thymeleaf (4일차) (0) | 2022.09.01 |
쇼핑몰 개발 - spring boot + thymeleaf (3일차) (2) | 2022.09.01 |
쇼핑몰 개발 - spring boot + thymeleaf (1일차) (0) | 2022.08.16 |