Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat : Review Service 빌더패턴 적용 마이페이지 분리 #61

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package jeje.work.aeatbe.controller;

import jeje.work.aeatbe.dto.AllergyCategory.AllergyCategoryDTO;
import jeje.work.aeatbe.dto.allergyCategory.AllergyCategoryDTO;
import jeje.work.aeatbe.service.AllergyCategoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
Expand Down
65 changes: 35 additions & 30 deletions src/main/java/jeje/work/aeatbe/controller/ReviewController.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package jeje.work.aeatbe.controller;

import java.util.List;
import jeje.work.aeatbe.annotation.LoginUser;
import jeje.work.aeatbe.dto.review.ReviewDTO;
import jeje.work.aeatbe.service.ReviewService;
import org.springframework.http.HttpStatus;
Expand All @@ -11,7 +12,6 @@
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
Expand All @@ -24,7 +24,7 @@
public class ReviewController {

private final ReviewService reviewService;

public ReviewController(ReviewService reviewService) {
this.reviewService = reviewService;
}
Expand All @@ -33,42 +33,48 @@ public ReviewController(ReviewService reviewService) {
/**
* 칼럼 조회
*
* @param searchByUser 마이페이지 여부(true = 마이페이지, false = 단순 상품 리뷰)
* @param productId 상품 id
* @param token 유저 토큰
* @return list 형식의 reviewDTO
*
* @todo 토큰에서 필요한 정보를 추출하는 코드를 구현해야 함
*/
@GetMapping
public ResponseEntity<List<ReviewDTO>> getReviews(
@RequestParam(required = false) boolean searchByUser,
@RequestParam(required = true) Long productId,
@RequestHeader(required = false, value = "Authorization") String token
) {
if (searchByUser && (token == null || token.isEmpty()))
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build();

List<ReviewDTO> reviews = reviewService.getReviews(searchByUser, productId, token);
@RequestParam(required = true) Long productId) {

List<ReviewDTO> reviews = reviewService.getReviews(productId);
return ResponseEntity.ok(reviews);
}


/**
* 특정 유저에 대한 리뷰를 조회
*
* @param kakaoId the kakao id
* @return 특정 유저에 관한 리뷰 리스트
*
* @todo: kakaoId -> userId로 수정 필요
*/
@GetMapping("/my")
public ResponseEntity<?> getReivewsByUser(@LoginUser String kakaoId) {
List<ReviewDTO> review = reviewService.getReviewsByUser(kakaoId);

return ResponseEntity.ok(review);
}


/**
* 새 리뷰 생성
*
* @param reviewDTO 리뷰 DTO
* @param token 유저 토큰
* @param kakaoId the kakao id
* @return 201 created 응답 코드
*
* @todo 토큰에서 필요한 정보를 추출하는 코드를 구현해야 함
* @todo 토큰 인증하는 로직 필요
* @todo: kakaoId -> userId로 수정 필요
*/
@PostMapping
public ResponseEntity<?> postReviews(@RequestBody ReviewDTO reviewDTO,
@RequestHeader(required = true, value = "Authorization") String token) {

reviewService.createReview(reviewDTO, token);
@LoginUser String kakaoId) {
reviewService.createReview(reviewDTO, kakaoId);
return ResponseEntity.status(HttpStatus.CREATED).build();

}
Expand All @@ -78,34 +84,33 @@ public ResponseEntity<?> postReviews(@RequestBody ReviewDTO reviewDTO,
*
* @param id 리뷰 id
* @param reviewDTO 리뷰 DTO
* @param token 유저 토큰
* @param kakaoId the kakao id
* @return 200 ok 응답 코드
*
* @todo 토큰에서 필요한 정보를 추출하는 코드를 구현해야 함
* @todo 토큰 인증하는 로직 필요
* @todo: kakaoId -> userId로 수정 필요
*/
@PatchMapping("/{id}")
public ResponseEntity<?> updateReviews(@PathVariable Long id,
@RequestBody ReviewDTO reviewDTO,
@RequestHeader(required = true, value = "Authorization") String token) {
reviewService.updateReviews(id, reviewDTO);
@LoginUser String kakaoId) {
reviewService.updateReviews(id, reviewDTO, kakaoId);
return ResponseEntity.ok().build();
}

/**
* 리뷰 삭제
*
* @param id 리뷰 id
* @param token 유저 토큰
* @param id 리뷰 id
* @param kakaoId the kakao id
* @return 204 응답 코드 반환
*
* @todo 토큰에서 필요한 정보를 추출하는 코드를 구현해야 함
* @todo 토큰 인증하는 로직 필요
* @todo: kakaoId -> userId로 수정 필요
*
*/
@DeleteMapping("/{id}")
public ResponseEntity<?> deleteReviews(@PathVariable Long id,
@RequestHeader(required = true, value = "Authorization") String token) {
reviewService.deleteReviews(id);
@LoginUser String kakaoId) {
reviewService.deleteReviews(id, kakaoId);
return ResponseEntity.noContent().build();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import java.io.IOException;
import jeje.work.aeatbe.domian.KakaoProperties;
import jeje.work.aeatbe.domian.KakaoTokenResponsed;
import jeje.work.aeatbe.dto.User.TokenResponseDto;
import jeje.work.aeatbe.dto.user.TokenResponseDto;
import jeje.work.aeatbe.service.UserService;
import jeje.work.aeatbe.utility.JwtUtil;
import lombok.RequiredArgsConstructor;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package jeje.work.aeatbe.dto.AllergyCategory;
package jeje.work.aeatbe.dto.allergyCategory;

import lombok.Builder;

Expand Down
6 changes: 4 additions & 2 deletions src/main/java/jeje/work/aeatbe/dto/review/ReviewDTO.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
package jeje.work.aeatbe.dto.review;

import jeje.work.aeatbe.dto.User.UserDTO;
import java.util.Optional;
import jeje.work.aeatbe.dto.user.UserDTO;
import lombok.Builder;

@Builder
public record ReviewDTO(Long id,
int rate,
String content,
UserDTO user,
Long productId) {
Long productId,
Optional<String> productImgUrl) {

}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package jeje.work.aeatbe.dto.User;
package jeje.work.aeatbe.dto.user;

import lombok.Builder;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package jeje.work.aeatbe.dto.User;
package jeje.work.aeatbe.dto.user;


import lombok.Builder;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package jeje.work.aeatbe.dto.User;
package jeje.work.aeatbe.dto.user;
import lombok.*;


Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package jeje.work.aeatbe.dto.User;
package jeje.work.aeatbe.dto.user;

import lombok.*;

Expand Down
3 changes: 3 additions & 0 deletions src/main/java/jeje/work/aeatbe/entity/Product.java
Original file line number Diff line number Diff line change
Expand Up @@ -55,4 +55,7 @@ public class Product extends BaseEntity{

@OneToMany(mappedBy = "product", cascade = CascadeType.ALL, orphanRemoval = true)
private List<ProductFreeFrom> productFreeFroms;

@OneToMany(mappedBy = "product", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Review> reviews;
}
4 changes: 2 additions & 2 deletions src/main/java/jeje/work/aeatbe/entity/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ public class User extends BaseEntity{
@Column(name = "user_img_url", length = 255)
private String userImgUrl;

// @Column
// private String kakaoId;
@Column
private String kakaoId;

@Column
private String accessToken;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package jeje.work.aeatbe.mapper.allergyCategory;

import jeje.work.aeatbe.dto.AllergyCategory.AllergyCategoryDTO;
import jeje.work.aeatbe.dto.allergyCategory.AllergyCategoryDTO;
import jeje.work.aeatbe.entity.AllergyCategory;
import org.springframework.stereotype.Component;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,6 @@
public interface UserRepository extends JpaRepository<User, Long> {

Optional<User> findByUserId(String userId);
Optional<Long> findByKakaoId(String userId);

}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package jeje.work.aeatbe.service;

import jeje.work.aeatbe.dto.AllergyCategory.AllergyCategoryDTO;
import jeje.work.aeatbe.dto.allergyCategory.AllergyCategoryDTO;
import jeje.work.aeatbe.entity.AllergyCategory;
import jeje.work.aeatbe.exception.AllergyCategoryNotFoundException;
import jeje.work.aeatbe.mapper.allergyCategory.AllergyCategoryMapper;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package jeje.work.aeatbe.service;

import jeje.work.aeatbe.dto.AllergyCategory.AllergyCategoryDTO;
import jeje.work.aeatbe.dto.allergyCategory.AllergyCategoryDTO;
import jeje.work.aeatbe.dto.product.ProductAllergyDTO;
import jeje.work.aeatbe.entity.AllergyCategory;
import jeje.work.aeatbe.entity.Product;
Expand Down
1 change: 0 additions & 1 deletion src/main/java/jeje/work/aeatbe/service/ProductService.java
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,6 @@ public ProductResponseDTO updateProduct(Long id, ProductDTO productDTO, List<Str
@Transactional
public void deleteProduct(Long id) {
var product = getProductEntity(id);
reviewService.deleteReviewsByProductId(id);
productRepository.delete(product);
}
}
Loading
Loading