스프링부트15 맛슐랭 - 맛집 리뷰 Controller 구현 1. URL - 'reviews/create' 리뷰 생성을 위한 url이다. 리뷰를 생성하기 위한 html에 reviewCreateRequest 객체를 model에 담아 보내주었다. (리뷰 작성 정보를 reviewCreateRequest 객체에 담아오기 위해서이다.) @GetMapping("/create") public String reviewPage(Model model) { model.addAttribute("reviewCreateRequest",new ReviewCreateRequest()); return "/reviews/create"; } 리뷰 등록 버튼을 누르면 /reviews/create url로 reviewCreateRequest 객체가 전송된다. 해당 리뷰에 이상이 없는지 검증 후 이상이.. 2024. 3. 27. 맛슐랭 - 맛집 리뷰 service 구현 (CRUD) 1. ReviewService 리뷰를 생성, 수정, 조회, 삭제 하기 위한 로직을 구현한 서비스이다. 리뷰와 이미지는 일대다 조인이기 때문에 dto로 정보를 받아오거나 반환할 경우 for문을 사용하여 처리하였다. 리뷰 등록 시 검증 메서드에서 BindingResult 객체를 통해 오류를 담아 html로 넘겨주었다. 코드 내 주석에 설명을 적어놓았기 때문에 자세한 설명은 생략한다. @Service @RequiredArgsConstructor public class ReviewService { private final ReviewRepository reviewRepository; private final UploadImageService uploadImageService; private final Place.. 2024. 3. 27. 맛슐랭 - db 설계 맛집 리뷰를 구현하기 이전에 DB 설계부터 진행하였다. 엔티티 분석 member 간편 로그인 서버로부터 받은 email,nickname 정보 각 사용자의 권한을 담은 role 회원가입 시간을 담은 created_at 회원정보 수정 시간을 담은 last_modified_at wishlist 특정 회원이 특정 장소를 찜하였을 때 장소와 멤버를 저장하기 위해 만든 엔티티이다. review 맛집 리뷰를 담기위한 엔티티이다. eatFoods에는 먹은 음식들이 리스트 형태로 저장된다. 리뷰를 쓴 member의 id, 리뷰의 대상인 음식점의 id, 리뷰 관련 정보들이 저장된다. upload_image 리뷰에 들어가는 이미지들을 저장한다. 사용자가 업데이트 한 파일의 이름인 originalFilename 실제 서버에 .. 2024. 3. 27. 맛슐랭 - 스프링부트 OAuth2 로그인 구현 (소셜로그인,간편로그인) - intro - 저번 프로젝트에서 일반 회원가입&로그인을 구현해보았기 때문에 이번 프로젝트에서는 소셜로그인을 사용해보고자 한다. 국내에서 많이 사용하는 네이버와 카카오 로그인을 사용해볼 예정이다. OAuth2에 관해 알아햘 내용들은 2024.03.07 - [spring] - Spring Security (스프링 시큐리티) OAuth2 정리 1 에 정리해놓았다. 스프링부트에서 OAuth 2.0을 설정할 때, Spring Security는 인증 및 권한 부여를 담당하는 필터 및 프로세스를 구성한다. 따라서 스프링부트가 자동으로 authorization code를 요청하고 받아오는 작업부터 access token을 사용하여 사용자 정보에 접근하는 작업까지를 수행해준다. => 개발자는 복잡한 로직을 직접 구현.. 2024. 3. 20. 쇼핑몰 구현 13 - 주문 기능 Order 1. OrderRepository @Repository public interface OrderRepository extends JpaRepository { //특정 회원의 주문을 최신순으로 조회 @Query("select o from Order o "+ "where o.member.email = :email "+ "order by o.createdAt desc" ) Page findAllByMemberEmail(String email, PageRequest pageRequest); //특정 회원의 주문을 가져올 때 배송지 정보도 페치조인으로 가져옴 @Query("select o from Order o join fetch o.delivery d where o.member.email = :ema.. 2024. 2. 23. 쇼핑몰 구현 11 - 위시리스트 기능 1. LikeRepository @Repository public interface LikeRepository extends JpaRepository { //회원이 해당 아이템 아이디를 가진 상품에 누른 위시리스트를 취소할 경우 void deleteByMemberEmailAndItemId(String email,Long itemId); //회원이 해당 아이템 아이디를 가진 상품에 위시리스트 버튼을 눌렀는지 확인하기 위해 Boolean existsByMemberEmailAndItemId(String email,Long itemId); //특정 회원이 누른 위시리스트 상품들을 모두 조회 Page findAllByMemberEmail(PageRequest pageRequest,String email); //회.. 2024. 2. 23. 이전 1 2 3 다음