Skip to content

Commit

Permalink
#18 [Refactor] 리뷰 리팩토링 Errorcode 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
JSoi committed Aug 2, 2022
1 parent d13d86c commit caaa949
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 63 deletions.
9 changes: 8 additions & 1 deletion src/main/java/com/mpnp/baechelin/exception/ErrorCode.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,14 @@ public enum ErrorCode {
NULL_POINTER_EXCEPTION(500, "E-NPE500", "빈 값이 들어올 수 없습니다."),
IMAGE_PROCESS_FAIL(500,"E-IPF500","이미지 오류 발생"),
KEYWORD_ARE_NEEDED(500, "E-KAE500", "검색어를 입력해주세요."),
INVALID_BARRIER_TAG(500, "E-IBT500","배리어 프리 태그를 확인해주세요");
INVALID_BARRIER_TAG(500, "E-IBT500","배리어 프리 태그를 확인해주세요."),
NO_STORE_FOUND(500, "E-NSF", "가게가 존재하지 않습니다."),
NO_FOLDER_FOUND(500, "E-NFF", "폴더가 존재하지 않습니다."),
NO_BOOKMARK_FOUND(500, "E-NBF", "북마크가 존재하지 않습니다."),
NO_USER_FOUND(500, "E-NUF", "유저가 존재하지 않습니다."),
NO_REVIEW_FOUND(500, "E-NRF", "리뷰가 존재하지 않습니다."),

;

private final int status;
private final String code;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package com.mpnp.baechelin.review.controller;

import com.mpnp.baechelin.common.SuccessResponse;
import com.mpnp.baechelin.exception.CustomException;
import com.mpnp.baechelin.exception.ErrorCode;
import com.mpnp.baechelin.review.domain.Review;
import com.mpnp.baechelin.review.dto.PageInfoResponseDto;
import com.mpnp.baechelin.review.dto.ReviewMainResponseDto;
Expand Down Expand Up @@ -34,22 +37,19 @@ public class ReviewController {

private final ReviewService reviewService;

/** 리뷰 조회 */
/**
* 리뷰 조회
*/
@GetMapping("/review/{storeId}")
public ResponseEntity<PageInfoResponseDto> getStoreReview(@PathVariable int storeId,
@AuthenticationPrincipal User user,
@PageableDefault(page = 0, size = 5, sort = "id", direction = Sort.Direction.DESC) Pageable pageable) {

if (user != null) {
PageInfoResponseDto pageInfoResponseDto = reviewService.getReview(storeId, user.getUsername(), pageable);
return new ResponseEntity<>(pageInfoResponseDto, HttpStatus.OK);
}

if (user == null) {
PageInfoResponseDto pageInfoResponseDto = reviewService.getReview(storeId, pageable);
return new ResponseEntity<>(pageInfoResponseDto, HttpStatus.OK);
}
return null;
PageInfoResponseDto pageInfoResponseDto = reviewService.getReview(storeId, user.getUsername(), pageable);
return new ResponseEntity<>(pageInfoResponseDto, HttpStatus.OK);
}

// @GetMapping("/review/{storeId}")
Expand All @@ -59,49 +59,56 @@ public ResponseEntity<PageInfoResponseDto> getStoreReview(@PathVariable int stor
// return new ResponseEntity<>(reviewList, HttpStatus.OK);
// }

/** 리뷰 작성 */
/**
* 리뷰 작성
*/
@PostMapping("/review")
public ResponseEntity<?> review(@ModelAttribute ReviewRequestDto reviewRequestDto,
@AuthenticationPrincipal User user) throws IOException {


if(user==null){ throw new IllegalArgumentException("해당하는 회원 정보가 없습니다.");}
public SuccessResponse review(@ModelAttribute ReviewRequestDto reviewRequestDto,
@AuthenticationPrincipal User user) throws IOException {
if (user == null) {
throw new CustomException(ErrorCode.ACCESS_DENIED);
}
reviewService.review(reviewRequestDto, user.getUsername());

return new ResponseEntity<>(HttpStatus.OK);
return new SuccessResponse("리뷰 등록 성공");
}

/** 리뷰 수정 */
/**
* 리뷰 수정
*/
@PatchMapping("/review/{reviewId}")
public ResponseEntity<?> reviewUpdate(@ModelAttribute ReviewRequestDto reviewRequestDto,
@AuthenticationPrincipal User user,
@PathVariable int reviewId) throws IOException {

if(user==null){ throw new IllegalArgumentException("해당하는 회원 정보가 없습니다."); }
public SuccessResponse reviewUpdate(@ModelAttribute ReviewRequestDto reviewRequestDto,
@AuthenticationPrincipal User user,
@PathVariable int reviewId) {
if (user == null) {
throw new CustomException(ErrorCode.ACCESS_DENIED);
}
reviewService.reviewUpdate(reviewRequestDto, user.getUsername(), reviewId);

return new ResponseEntity<>(HttpStatus.OK);
return new SuccessResponse("리뷰 수정 성공");
}

@PostMapping("/review/imageUpload")
public ResponseEntity<?> imageUpload(@AuthenticationPrincipal User user,
@RequestParam MultipartFile imageFile){

if(user==null){ throw new IllegalArgumentException("해당하는 회원 정보가 없습니다."); }
public SuccessResponse imageUpload(@AuthenticationPrincipal User user,
@RequestParam MultipartFile imageFile) {

if (user == null) {
throw new CustomException(ErrorCode.ACCESS_DENIED);
}
reviewService.imageUpload(imageFile, user.getUsername());
return new ResponseEntity<>(HttpStatus.OK);
return new SuccessResponse("리뷰 이미지 등록 완료");
}

/** 리뷰 삭제 */
/**
* 리뷰 삭제
*/
@DeleteMapping("/review/{reviewId}")
public ResponseEntity<?> reviewDelete(@AuthenticationPrincipal User user,
@PathVariable int reviewId) {
public SuccessResponse reviewDelete(@AuthenticationPrincipal User user,
@PathVariable int reviewId) {

if(user==null){ throw new IllegalArgumentException("해당하는 회원 정보가 없습니다."); }
if (user == null) {
throw new CustomException(ErrorCode.ACCESS_DENIED);
}
reviewService.reviewDelete(user.getUsername(), reviewId);

return new ResponseEntity<>(HttpStatus.OK);
return new SuccessResponse("리뷰 이미지 삭제 완료");
}

// 반경 넓히기
Expand All @@ -111,5 +118,4 @@ public List<ReviewMainResponseDto> recentReview(@RequestParam(required = false)
@RequestParam int limit) {
return reviewService.getRecentReview(lat, lng, limit);
}

}
44 changes: 18 additions & 26 deletions src/main/java/com/mpnp/baechelin/review/service/ReviewService.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.mpnp.baechelin.review.service;

import com.mpnp.baechelin.exception.CustomException;
import com.mpnp.baechelin.exception.ErrorCode;
import com.mpnp.baechelin.review.domain.Review;
import com.mpnp.baechelin.review.domain.ReviewImage;
import com.mpnp.baechelin.review.dto.PageInfoResponseDto;
Expand Down Expand Up @@ -95,32 +97,28 @@ public void review(ReviewRequestDto reviewRequestDto, String socialId) throws IO
public PageInfoResponseDto getReview(long storeId, String socialId, Pageable pageable) {

User myUser = userRepository.findBySocialId(socialId);
Store store = storeRepository.findById(storeId).orElseThrow(() -> new IllegalArgumentException("해당 가게가 없습니다"));
Store store = storeRepository.findById(storeId).orElseThrow(() -> new CustomException(ErrorCode.NO_STORE_FOUND));
Page<Review> reviewList = reviewRepository.findAllByStoreId(store, pageable);


List<ReviewResponseDto> reviewResponseDtoList = new ArrayList<>();
for (Review review : reviewList) {
ReviewResponseDto reviewResponseDto = new ReviewResponseDto(review);
Optional<User> user = userRepository.findById(reviewResponseDto.getUserId());
reviewResponseDto.userInfo(user.get(), myUser);
User user = userRepository.findById(reviewResponseDto.getUserId()).orElseThrow(() -> new CustomException(ErrorCode.NO_USER_FOUND));
reviewResponseDto.userInfo(user, myUser);
reviewResponseDtoList.add(reviewResponseDto);
}


PageInfoResponseDto pageInfoResponseDto = PageInfoResponseDto
return PageInfoResponseDto
.builder()
.totalElements((int) reviewList.getTotalElements())
.totalPages(reviewList.getTotalPages())
.number(reviewList.getNumber())
.size(reviewList.getSize())
.reviewResponseDtoList(reviewResponseDtoList)
.hasNextPage(reviewList.isFirst() ? false : true)
.hasPreviousPage(!reviewList.isLast() ? false : true)
.hasNextPage(!reviewList.isFirst())
.hasPreviousPage(reviewList.isLast())
.build();


return pageInfoResponseDto;
}

public PageInfoResponseDto getReview(long storeId, Pageable pageable) {
Expand All @@ -132,25 +130,22 @@ public PageInfoResponseDto getReview(long storeId, Pageable pageable) {
List<ReviewResponseDto> reviewResponseDtoList = new ArrayList<>();
for (Review review : reviewList) {
ReviewResponseDto reviewResponseDto = new ReviewResponseDto(review);
Optional<User> user = userRepository.findById(reviewResponseDto.getUserId());
reviewResponseDto.userInfo(user.get());
User user = userRepository.findById(reviewResponseDto.getUserId()).orElseThrow(()-> new CustomException(ErrorCode.NO_USER_FOUND));
reviewResponseDto.userInfo(user);
reviewResponseDtoList.add(reviewResponseDto);
}


PageInfoResponseDto pageInfoResponseDto = PageInfoResponseDto
return PageInfoResponseDto
.builder()
.totalElements((int) reviewList.getTotalElements())
.totalPages(reviewList.getTotalPages())
.number(reviewList.getNumber())
.size(reviewList.getSize())
.reviewResponseDtoList(reviewResponseDtoList)
.hasNextPage(reviewList.isFirst() ? false : true)
.hasPreviousPage(!reviewList.isLast() ? false : true)
.hasNextPage(reviewList.isFirst())
.hasPreviousPage(reviewList.isLast())
.build();


return pageInfoResponseDto;
}


Expand Down Expand Up @@ -241,11 +236,9 @@ public void reviewUpdate(ReviewRequestDto reviewRequestDto, String socialId, int
*/
public void reviewDelete(String socialId, int reviewId) {

User user = userRepository .findBySocialId(socialId); if (user == null) { new IllegalArgumentException("해당하는 소셜아이디를 찾을 수 없습니다."); } // 유저 유무 확인 예외처리
Review review = reviewRepository.findById(reviewId).orElseThrow(() -> new IllegalArgumentException("해당하는 리뷰가 이미 삭제 되었습니다.")); // 리뷰 유무 확인 예외처리;
Optional<Store> store = storeRepository.findById(Long.valueOf(review.getStoreId().getId()));
if(store.isEmpty()){ throw new IllegalArgumentException("해당하는 업장이 없습니다.");}

User user = userRepository .findBySocialId(socialId); if (user == null) { throw new CustomException(ErrorCode.NO_USER_FOUND); } // 유저 유무 확인 예외처리
Review review = reviewRepository.findById(reviewId).orElseThrow(() -> new CustomException(ErrorCode.NO_REVIEW_FOUND)); // 리뷰 유무 확인 예외처리;
Store store = storeRepository.findById(review.getStoreId().getId()).orElseThrow(()-> new CustomException(ErrorCode.NO_STORE_FOUND));

List<ReviewImage> imageList = review.getReviewImageList();

Expand All @@ -258,9 +251,8 @@ public void reviewDelete(String socialId, int reviewId) {
awsS3Manager.deleteFile(reviewImage.getReviewImageUrl().substring(reviewImage.getReviewImageUrl().indexOf("com/") + 4));
}
}

store.get().removeReview(review);
storeRepository.save(store.get().updatePointAvg()); // 별점 평점 구하는 코드
store.removeReview(review);
storeRepository.save(store.updatePointAvg()); // 별점 평점 구하는 코드
}


Expand Down

0 comments on commit caaa949

Please sign in to comment.