Skip to content

Commit

Permalink
Merge pull request #107 from Team-2m4t/refactor/#104
Browse files Browse the repository at this point in the history
[refactor] ๋ฆฌ๋ทฐ ์‹ ๊ณ  API ๋ฆฌํŒฉํ† ๋ง
  • Loading branch information
yujin113 authored May 6, 2022
2 parents 1d441c6 + e92e4ee commit bc169e5
Show file tree
Hide file tree
Showing 8 changed files with 68 additions and 107 deletions.
65 changes: 11 additions & 54 deletions src/main/java/hyangyu/server/api/ReviewApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,17 @@
import hyangyu.server.dto.*;
import hyangyu.server.dto.review.*;
import hyangyu.server.dto.user.UserDto;
import hyangyu.server.exception.CustomException;
import hyangyu.server.service.*;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Optional;

import static hyangyu.server.constants.ExceptionCode.EVENT_NOT_FOUND;
import static hyangyu.server.constants.SuccessCode.*;

@RestController
Expand Down Expand Up @@ -93,65 +94,21 @@ public ResponseEntity<ReviewResponse> deleteFestivalReview(@PathVariable Long fe
}

@PostMapping("/review/accuse/{event}/{reviewId}")
public ResponseEntity accuseReview(@PathVariable Long reviewId, @PathVariable String event) throws Exception {
//์‚ฌ์šฉ์ž ๊ฒ€์ƒ‰
UserDto user = userService.getMyUserWithAuthorities();
if (user == null) {
return new ResponseEntity(new ErrorDto(401, "์œ ํšจํ•˜์ง€ ์•Š์€ ์‚ฌ์šฉ์ž์ž…๋‹ˆ๋‹ค."), HttpStatus.BAD_REQUEST);
}

public ResponseEntity<ReviewResponse> accuseReview(@PathVariable Long reviewId, @PathVariable String event) throws Exception {
if (event.equals("display")) {
//๋ฆฌ๋ทฐ ๊ฒ€์ƒ‰
Optional<DisplayReview> displayReview = displayReviewService.findReview(reviewId);
if (displayReview.isEmpty()) {
return new ResponseEntity(new ErrorDto(404, "์‹ ๊ณ ํ•  ๋ฆฌ๋ทฐ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค."), HttpStatus.BAD_REQUEST);
} else {
String message = displayReviewService.accuseDisplayReview(displayReview.get(), user.getUserId());
if (message.equals("๋‚ด๊ฐ€ ์“ด ๋ฆฌ๋ทฐ๋Š” ์‹ ๊ณ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.")) {
return new ResponseEntity(new ErrorDto(404, message), HttpStatus.BAD_REQUEST);
}
if (message.equals("์ด๋ฏธ ์‹ ๊ณ ํ•œ ๋ฆฌ๋ทฐ์ž…๋‹ˆ๋‹ค.")) {
return new ResponseEntity(new ErrorDto(404, message), HttpStatus.BAD_REQUEST);
}
ResponseDto responseDto = new ResponseDto(200, message);
return new ResponseEntity(responseDto, HttpStatus.OK);
}
displayReviewService.accuseDisplayReview(reviewId);

return ReviewResponse.newResponse(REVIEW_WARN_SUCCESS);
} else if (event.equals("fair")) {
//๋ฆฌ๋ทฐ ๊ฒ€์ƒ‰
Optional<FairReview> fairReview = fairReviewService.findReview(reviewId);
if (fairReview.isEmpty()) {
return new ResponseEntity(new ErrorDto(404, "์‹ ๊ณ ํ•  ๋ฆฌ๋ทฐ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค."), HttpStatus.BAD_REQUEST);
} else {
String message = fairReviewService.accuseFairReview(fairReview.get(), user.getUserId());
if (message.equals("๋‚ด๊ฐ€ ์“ด ๋ฆฌ๋ทฐ๋Š” ์‹ ๊ณ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.")) {
return new ResponseEntity(new ErrorDto(404, message), HttpStatus.BAD_REQUEST);
}
if (message.equals("์ด๋ฏธ ์‹ ๊ณ ํ•œ ๋ฆฌ๋ทฐ์ž…๋‹ˆ๋‹ค.")) {
return new ResponseEntity(new ErrorDto(404, message), HttpStatus.BAD_REQUEST);
}
ResponseDto responseDto = new ResponseDto(200, message);
return new ResponseEntity(responseDto, HttpStatus.OK);
}
fairReviewService.accuseFairReview(reviewId);

return ReviewResponse.newResponse(REVIEW_WARN_SUCCESS);
} else if (event.equals("festival")) {
//๋ฆฌ๋ทฐ ๊ฒ€์ƒ‰
Optional<FestivalReview> festivalReview = festivalReviewService.findReview(reviewId);
if (festivalReview.isEmpty()) {
return new ResponseEntity(new ErrorDto(404, "์‹ ๊ณ ํ•  ๋ฆฌ๋ทฐ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค."), HttpStatus.BAD_REQUEST);
} else {
String message = festivalReviewService.accuseFestivalReview(festivalReview.get(), user.getUserId());
if (message.equals("๋‚ด๊ฐ€ ์“ด ๋ฆฌ๋ทฐ๋Š” ์‹ ๊ณ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.")) {
return new ResponseEntity(new ErrorDto(404, message), HttpStatus.BAD_REQUEST);
}
if (message.equals("์ด๋ฏธ ์‹ ๊ณ ํ•œ ๋ฆฌ๋ทฐ์ž…๋‹ˆ๋‹ค.")) {
return new ResponseEntity(new ErrorDto(404, message), HttpStatus.BAD_REQUEST);
}
ResponseDto responseDto = new ResponseDto(200, message);
return new ResponseEntity(responseDto, HttpStatus.OK);
}
festivalReviewService.accuseFestivalReview(reviewId);

return ReviewResponse.newResponse(REVIEW_WARN_SUCCESS);
} else {
return new ResponseEntity(new ErrorDto(404, "์ด๋ฒคํŠธ๋ช…์ด ์ž˜๋ชป๋˜์—ˆ์Šต๋‹ˆ๋‹ค."), HttpStatus.BAD_REQUEST);
throw new CustomException(EVENT_NOT_FOUND);
}
}

Expand Down
8 changes: 6 additions & 2 deletions src/main/java/hyangyu/server/constants/ExceptionCode.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,17 @@ public enum ExceptionCode {
UNSUPPORTED_TOKEN(UNAUTHORIZED, "์ง€์›๋˜์ง€ ์•Š๋Š” JWT ํ† ํฐ์ž…๋‹ˆ๋‹ค."),
WRONG_TOKEN(UNAUTHORIZED, "JWT ํ† ํฐ์ด ์ž˜๋ชป๋˜์—ˆ์Šต๋‹ˆ๋‹ค."),
UNKNOWN_ERROR(UNAUTHORIZED, "์•Œ ์ˆ˜ ์—†๋Š” ์š”์ฒญ ์ธ์ฆ ์—๋Ÿฌ! ํ—ค๋”์— ํ† ํฐ์„ ๋„ฃ์–ด ๋ณด๋ƒˆ๋Š”์ง€ ๋‹ค์‹œ ํ•œ ๋ฒˆ ํ™•์ธํ•ด๋ณด์„ธ์š”."),
ACCESS_DENIED(UNAUTHORIZED, "์ ‘๊ทผ์ด ๊ฑฐ์ ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.")
ACCESS_DENIED(UNAUTHORIZED, "์ ‘๊ทผ์ด ๊ฑฐ์ ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."),

/* 404 - ์ฐพ์„ ์ˆ˜ ์—†๋Š” ๋ฆฌ์†Œ์Šค */,
/* 403 - ํ—ˆ์šฉ๋˜์ง€ ์•Š์€ ์ ‘๊ทผ */
ACCUSE_DENIED(FORBIDDEN, "๋‚ด๊ฐ€ ์“ด ๋ฆฌ๋ทฐ๋Š” ์‹ ๊ณ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค."),

/* 404 - ์ฐพ์„ ์ˆ˜ ์—†๋Š” ๋ฆฌ์†Œ์Šค */
USER_NOT_FOUND(NOT_FOUND, "์œ ํšจํ•˜์ง€ ์•Š์€ ์‚ฌ์šฉ์ž์ž…๋‹ˆ๋‹ค."),
DISPLAY_NOT_FOUND(NOT_FOUND, "์ž˜๋ชป๋œ ์ „์‹œ id์ž…๋‹ˆ๋‹ค."),
FAIR_NOT_FOUND(NOT_FOUND, "์ž˜๋ชป๋œ ๋ฐ•๋žŒํšŒ id์ž…๋‹ˆ๋‹ค."),
FESTIVAL_NOT_FOUND(NOT_FOUND, "์ž˜๋ชป๋œ ํŽ˜์Šคํ‹ฐ๋ฒŒ id์ž…๋‹ˆ๋‹ค."),
EVENT_NOT_FOUND(NOT_FOUND, "์ž˜๋ชป๋œ ์ด๋ฒคํŠธ๋ช…์ž…๋‹ˆ๋‹ค."),
REVIEW_NOT_FOUND(NOT_FOUND, "์ž‘์„ฑํ•œ ๋ฆฌ๋ทฐ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค."),


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,15 @@
import org.springframework.data.jpa.repository.Query;
import org.springframework.transaction.annotation.Transactional;

import java.util.Optional;

public interface DisplayWarnRepository extends JpaRepository<DisplayWarn, Long> {

@Query("select w from DisplayWarn w where w.displayReview.reviewId=?1 and w.user.userId=?2")
public DisplayWarn getDisplayWarn(Long reviewId, Long userId);
Optional<DisplayWarn> getDisplayWarn(Long reviewId, Long userId);

@Modifying
@Transactional
@Query("delete from DisplayWarn w where w.displayReview.reviewId=?1")
public void deleteDisplayWarns(Long reviewId);
void deleteDisplayWarns(Long reviewId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,15 @@
import org.springframework.data.jpa.repository.Query;
import org.springframework.transaction.annotation.Transactional;

import java.util.Optional;

public interface FairWarnRepository extends JpaRepository<FairWarn, Long> {

@Query("select w from FairWarn w where w.fairReview.reviewId=?1 and w.user.userId=?2")
public FairWarn getFairWarn(Long reviewId, Long userId);
Optional<FairWarn> getFairWarn(Long reviewId, Long userId);

@Modifying
@Transactional
@Query("delete from FairWarn w where w.fairReview.reviewId=?1")
public void deleteFairWarns(Long reviewId);
void deleteFairWarns(Long reviewId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,15 @@
import org.springframework.data.jpa.repository.Query;
import org.springframework.transaction.annotation.Transactional;

import java.util.Optional;

public interface FestivalWarnRepository extends JpaRepository<FestivalWarn, Long> {

@Query("select w from FestivalWarn w where w.festivalReview.reviewId=?1 and w.user.userId=?2")
public FestivalWarn getFestivalWarn(Long reviewId, Long userId);
Optional<FestivalWarn> getFestivalWarn(Long reviewId, Long userId);

@Modifying
@Transactional
@Query("delete from FestivalWarn w where w.festivalReview.reviewId=?1")
public void deleteFestivalWarns(Long reviewId);
void deleteFestivalWarns(Long reviewId);
}
28 changes: 13 additions & 15 deletions src/main/java/hyangyu/server/service/DisplayReviewService.java
Original file line number Diff line number Diff line change
Expand Up @@ -84,32 +84,30 @@ public void deleteDisplayReview(Long displayId) {
displayReview.ifPresent(displayReviewRepository::delete);
}

public Optional<DisplayReview> findReview(Long reviewId) {
return displayReviewRepository.findById(reviewId);
}
public void accuseDisplayReview(Long reviewId) {
User user = getUser();

DisplayReview displayReview = displayReviewRepository.findById(reviewId)
.orElseThrow(() -> new CustomException(REVIEW_NOT_FOUND));

public String accuseDisplayReview(DisplayReview displayReview, Long userId) {
Optional<User> user = userRepository.findById(userId);
if (userId.equals(displayReview.getUser().getUserId())) {
return "๋‚ด๊ฐ€ ์“ด ๋ฆฌ๋ทฐ๋Š” ์‹ ๊ณ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.";
if (user.equals(displayReview.getUser())) {
throw new CustomException(ACCUSE_DENIED);
}

Optional<DisplayWarn> displayWarn = Optional.ofNullable(displayWarnRepository.getDisplayWarn(displayReview.getReviewId(), userId));
if (displayWarn.isEmpty() && user.isPresent()) {
DisplayWarn warn = DisplayWarn.createDisplayWarn(displayReview, user.get());
Optional<DisplayWarn> displayWarn = displayWarnRepository.getDisplayWarn(reviewId, user.getUserId());
if (displayWarn.isEmpty()) {
DisplayWarn warn = DisplayWarn.createDisplayWarn(displayReview, user);
displayWarnRepository.save(warn);

displayReview.increaseWarn();
if (displayReview.getWarn() == 3) {
displayWarnRepository.deleteDisplayWarns(displayReview.getReviewId());
displayReviewRepository.delete(displayReview);
return "์‹ ๊ณ  3๋ฒˆ์ด ๋ˆ„์ ๋˜์–ด ์ž๋™ ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.";
}
} else if (displayWarn.isPresent()) {
return "์ด๋ฏธ ์‹ ๊ณ ํ•œ ๋ฆฌ๋ทฐ์ž…๋‹ˆ๋‹ค.";
}

return "์‹ ๊ณ ๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.";
if (displayWarn.isPresent()) {
throw new CustomException(ALREADY_WARN_REVIEW);
}
}

public List<ReviewDto> getDisplayReviews(Long displayId) {
Expand Down
28 changes: 13 additions & 15 deletions src/main/java/hyangyu/server/service/FairReviewService.java
Original file line number Diff line number Diff line change
Expand Up @@ -81,32 +81,30 @@ public void deleteFairReview(Long fairId) {
fairReview.ifPresent(fairReviewRepository::delete);
}

public Optional<FairReview> findReview(Long reviewId) {
return fairReviewRepository.findById(reviewId);
}
public void accuseFairReview(Long reviewId) {
User user = getUser();

FairReview fairReview = fairReviewRepository.findById(reviewId)
.orElseThrow(() -> new CustomException(REVIEW_NOT_FOUND));

public String accuseFairReview(FairReview fairReview, Long userId) {
Optional<User> user = userRepository.findById(userId);
if (userId.equals(fairReview.getUser().getUserId())) {
return "๋‚ด๊ฐ€ ์“ด ๋ฆฌ๋ทฐ๋Š” ์‹ ๊ณ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.";
if (user.equals(fairReview.getUser())) {
throw new CustomException(ACCUSE_DENIED);
}

Optional<FairWarn> fairWarn = Optional.ofNullable(fairWarnRepository.getFairWarn(fairReview.getReviewId(), userId));
if (fairWarn.isEmpty() && user.isPresent()) {
FairWarn warn = FairWarn.createFairWarn(fairReview, user.get());
Optional<FairWarn> fairWarn = fairWarnRepository.getFairWarn(reviewId, user.getUserId());
if (fairWarn.isEmpty()) {
FairWarn warn = FairWarn.createFairWarn(fairReview, user);
fairWarnRepository.save(warn);

fairReview.increaseWarn();
if (fairReview.getWarn() == 3) {
fairWarnRepository.deleteFairWarns(fairReview.getReviewId());
fairReviewRepository.delete(fairReview);
return "์‹ ๊ณ  3๋ฒˆ์ด ๋ˆ„์ ๋˜์–ด ์ž๋™ ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.";
}
} else if (fairWarn.isPresent()) {
return "์ด๋ฏธ ์‹ ๊ณ ํ•œ ๋ฆฌ๋ทฐ์ž…๋‹ˆ๋‹ค.";
}

return "์‹ ๊ณ ๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.";
if (fairWarn.isPresent()) {
throw new CustomException(ALREADY_WARN_REVIEW);
}
}

public List<MyReviewDto> getMyFairReviews(Long userId) {
Expand Down
28 changes: 13 additions & 15 deletions src/main/java/hyangyu/server/service/FestivalReviewService.java
Original file line number Diff line number Diff line change
Expand Up @@ -81,32 +81,30 @@ public void deleteFestivalReview(Long festivalId) {
festivalReview.ifPresent(festivalReviewRepository::delete);
}

public Optional<FestivalReview> findReview(Long reviewId) {
return festivalReviewRepository.findById(reviewId);
}
public void accuseFestivalReview(Long reviewId) {
User user = getUser();

FestivalReview festivalReview = festivalReviewRepository.findById(reviewId)
.orElseThrow(() -> new CustomException(REVIEW_NOT_FOUND));

public String accuseFestivalReview(FestivalReview festivalReview, Long userId) {
Optional<User> user = userRepository.findById(userId);
if (userId.equals(festivalReview.getUser().getUserId())) {
return "๋‚ด๊ฐ€ ์“ด ๋ฆฌ๋ทฐ๋Š” ์‹ ๊ณ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.";
if (user.equals(festivalReview.getUser())) {
throw new CustomException(ACCUSE_DENIED);
}

Optional<FestivalWarn> festivalWarn = Optional.ofNullable(festivalWarnRepository.getFestivalWarn(festivalReview.getReviewId(), userId));
if (festivalWarn.isEmpty() && user.isPresent()) {
FestivalWarn warn = FestivalWarn.createFestivalWarn(festivalReview, user.get());
Optional<FestivalWarn> festivalWarn = festivalWarnRepository.getFestivalWarn(reviewId, user.getUserId());
if (festivalWarn.isEmpty()) {
FestivalWarn warn = FestivalWarn.createFestivalWarn(festivalReview, user);
festivalWarnRepository.save(warn);

festivalReview.increaseWarn();
if (festivalReview.getWarn() == 3) {
festivalWarnRepository.deleteFestivalWarns(festivalReview.getReviewId());
festivalReviewRepository.delete(festivalReview);
return "์‹ ๊ณ  3๋ฒˆ์ด ๋ˆ„์ ๋˜์–ด ์ž๋™ ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.";
}
} else if (festivalWarn.isPresent()) {
return "์ด๋ฏธ ์‹ ๊ณ ํ•œ ๋ฆฌ๋ทฐ์ž…๋‹ˆ๋‹ค.";
}

return "์‹ ๊ณ ๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.";
if (festivalWarn.isPresent()) {
throw new CustomException(ALREADY_WARN_REVIEW);
}
}

public List<ReviewDto> getFestivalReviews(Long festivalId) {
Expand Down

0 comments on commit bc169e5

Please sign in to comment.