Skip to content

Commit

Permalink
fix: import 제거
Browse files Browse the repository at this point in the history
  • Loading branch information
ah9mon committed Aug 10, 2023
1 parent 07a7592 commit 25d1ff6
Show file tree
Hide file tree
Showing 9 changed files with 104 additions and 47 deletions.
37 changes: 30 additions & 7 deletions src/main/java/com/anywayclear/controller/ReviewController.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
package com.anywayclear.controller;

import com.anywayclear.dto.request.ReviewCreateRequest;
import com.anywayclear.dto.request.ReviewRequest;
import com.anywayclear.dto.response.ReviewResponse;
import com.anywayclear.entity.Member;
import com.anywayclear.service.ReviewService;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
Expand All @@ -18,12 +17,36 @@ public ReviewController(ReviewService reviewService) {
this.reviewService = reviewService;
}

@PostMapping("/{auctionId}")
public ResponseEntity<ReviewResponse> createReview(
@RequestBody ReviewCreateRequest request,
@PathVariable("auctionId") Long auctionId,
@GetMapping("/{dealId}")
public ResponseEntity<ReviewResponse> getReview(
@PathVariable("dealId") Long dealId) {
reviewService.getReview(dealId);
return ResponseEntity.ok(reviewService.getReview(dealId));
}

@PostMapping("/{dealId}")
public ResponseEntity<Long> createReview(
@RequestBody ReviewRequest request,
@PathVariable("dealId") Long dealId,
@AuthenticationPrincipal OAuth2User oAuth2User){
String reviewerId = (String) oAuth2User.getAttributes().get("userId");
return ResponseEntity.ok(reviewService.createReview(reviewerId, auctionId, request));
return ResponseEntity.ok(reviewService.createReview(reviewerId, dealId, request));
}

@PatchMapping("/{reviewId}")
public ResponseEntity<Long> updateReview(
@RequestBody ReviewRequest request,
@PathVariable("reviewId") Long reviewId,
@AuthenticationPrincipal OAuth2User oAuth2User) {
String reviewerId = (String) oAuth2User.getAttributes().get("userId");
return ResponseEntity.ok(reviewService.updateReview(request,reviewId, reviewerId));
}

@DeleteMapping("/{reviewId}")
public ResponseEntity<Long> deleteReview(
@PathVariable("reviewId") Long reviewId,
@AuthenticationPrincipal OAuth2User oAuth2User) {
String reviewerId = (String) oAuth2User.getAttributes().get("userId");
return ResponseEntity.ok(reviewService.deleteReview(reviewId, reviewerId));
}
}
Original file line number Diff line number Diff line change
@@ -1,22 +1,17 @@
package com.anywayclear.dto.request;

import com.anywayclear.entity.Auction;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.springframework.data.annotation.CreatedDate;

import javax.persistence.*;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

@Getter
@Setter
@NoArgsConstructor
public class ReviewCreateRequest {
public class ReviewRequest {


@NotBlank
Expand All @@ -26,7 +21,7 @@ public class ReviewCreateRequest {
private int score;

@Builder
public ReviewCreateRequest(String comment, int score) {
public ReviewRequest(String comment, int score) {
this.comment = comment;
this.score = score;
}
Expand Down
7 changes: 3 additions & 4 deletions src/main/java/com/anywayclear/dto/response/DealResponse.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import com.anywayclear.entity.Deal;
import com.anywayclear.entity.Member;
import com.anywayclear.entity.Produce;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
Expand All @@ -14,10 +13,10 @@ public class DealResponse {
private boolean isPaid;
private Member consumer;
private Member seller;
private Produce produce;
private ProduceResponse produce;

@Builder
public DealResponse(int endPrice, boolean isPaid, Member consumer, Member seller, Produce produce) {
public DealResponse(int endPrice, boolean isPaid, Member consumer, Member seller, ProduceResponse produce) {
this.endPrice = endPrice;
this.isPaid = isPaid;
this.consumer = consumer;
Expand All @@ -31,7 +30,7 @@ public static DealResponse toResponse(Deal deal) {
.isPaid(deal.isPaid())
.consumer(deal.getConsumer())
.seller(deal.getSeller())
.produce(deal.getProduce())
.produce(ProduceResponse.toResponse(deal.getProduce()))
.build();
}
}
13 changes: 4 additions & 9 deletions src/main/java/com/anywayclear/dto/response/ReviewResponse.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,10 @@
package com.anywayclear.dto.response;

import com.anywayclear.entity.Auction;
import com.anywayclear.entity.Member;
import com.anywayclear.entity.Review;
import lombok.Builder;
import lombok.Getter;
import org.springframework.data.annotation.CreatedDate;

import javax.persistence.*;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

@Getter
public class ReviewResponse {
Expand All @@ -18,17 +13,17 @@ public class ReviewResponse {
private String comment;
private int score;
private LocalDateTime createdAt;
private AuctionResponse auction;
private DealResponse deal;
private String memberUserId;
private String memberNickname;

@Builder
public ReviewResponse(Long id, String comment, int score, LocalDateTime createdAt,String createdDate, AuctionResponse auction, String memberUserId, String memberNickname) {
public ReviewResponse(Long id, String comment, int score, LocalDateTime createdAt, DealResponse deal, String memberUserId, String memberNickname) {
this.id = id;
this.comment = comment;
this.score = score;
this.createdAt = createdAt;
this.auction = auction;
this.deal = deal;
this.memberUserId = memberUserId;
this.memberNickname = memberNickname;
}
Expand All @@ -39,7 +34,7 @@ public static ReviewResponse toResponse(Review review) {
.comment(review.getComment())
.score(review.getScore())
.createdAt(review.getCreatedAt())
.auction(AuctionResponse.toResponse(review.getAuction()))
.deal(DealResponse.toResponse(review.getDeal()))
.memberUserId(review.getMember().getUserId())
.memberNickname(review.getMember().getNickname())
.build();
Expand Down
4 changes: 0 additions & 4 deletions src/main/java/com/anywayclear/entity/Auction.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,6 @@ public class Auction extends BaseTime{
@JoinColumn(name = "produce_id")
private Produce produce;

@OneToOne
@JoinColumn(name = "review_id", referencedColumnName = "id")
private Review review;

private int price;

private String nickname;
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/com/anywayclear/entity/Deal.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,10 @@ public class Deal {
@JoinColumn(name = "produce_id", referencedColumnName = "id")
private Produce produce;

@OneToOne
@JoinColumn(name = "review_id", referencedColumnName = "id")
private Review review;

@Builder
public Deal(int endPrice, Member consumer, Member seller, Produce produce) {
this.endPrice = endPrice;
Expand Down
15 changes: 6 additions & 9 deletions src/main/java/com/anywayclear/entity/Review.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
package com.anywayclear.entity;

import com.anywayclear.dto.request.ReviewCreateRequest;
import com.anywayclear.dto.request.ReviewRequest;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.springframework.data.annotation.CreatedDate;

import javax.persistence.*;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

@Getter
@Setter
Expand All @@ -29,22 +26,22 @@ public class Review extends BaseTime{
private int score;

@OneToOne
@JoinColumn(name = "auction_id", referencedColumnName = "id")
private Auction auction;
@JoinColumn(name = "deal_id", referencedColumnName = "id")
private Deal deal;

@OneToOne
@JoinColumn(name = "member_id", referencedColumnName = "id")
private Member member;

@Builder
public Review(String comment, int score, Auction auction, Member member) {
public Review(String comment, int score, Deal deal, Member member) {
this.comment = comment;
this.score = score;
this.auction = auction;
this.deal = deal;
this.member = member;
}

public static Review toEntity(ReviewCreateRequest request) {
public static Review toEntity(ReviewRequest request) {
return Review.builder()
.comment(request.getComment())
.score(request.getScore())
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/com/anywayclear/exception/ExceptionCode.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ public enum ExceptionCode {

// 404 Not Found : 요청한 URI에 대한 리소스 없음
INVALID_RESOURCE(NOT_FOUND, "요청한 리소스가 없습니다", 404),
INVALID_REVIEW(NOT_FOUND, "존재하지 않는 리뷰입니다", 404),
INVALID_DEAL(NOT_FOUND, "존재하지 않는 거래입니다", 404),

// 405 Method Not Allowed : 사용 불가능한 Method 이용
INVALID_METHOD(METHOD_NOT_ALLOWED, "지원하지 않는 Method 입니다.", 405),
Expand Down
60 changes: 53 additions & 7 deletions src/main/java/com/anywayclear/service/ReviewService.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
package com.anywayclear.service;

import com.anywayclear.dto.request.ReviewCreateRequest;
import com.anywayclear.dto.request.ReviewRequest;
import com.anywayclear.dto.response.ReviewResponse;
import com.anywayclear.entity.Auction;
import com.anywayclear.entity.Deal;
import com.anywayclear.entity.Member;
import com.anywayclear.entity.Review;
import com.anywayclear.exception.CustomException;
import com.anywayclear.exception.ExceptionCode;
import com.anywayclear.repository.AuctionRepository;
import com.anywayclear.repository.DealRepository;
import com.anywayclear.repository.MemberRepository;
import com.anywayclear.repository.ReviewRepository;
import org.springframework.stereotype.Service;
Expand All @@ -17,24 +19,68 @@
public class ReviewService {

private final MemberRepository memberRepository;
private final AuctionRepository auctionRepository;
private final DealRepository dealRepository;
private final ReviewRepository reviewRepository;

public ReviewService(MemberRepository memberRepository, AuctionRepository auctionRepository, ReviewRepository reviewRepository) {
public ReviewService(MemberRepository memberRepository, DealRepository dealRepository, ReviewRepository reviewRepository) {
this.memberRepository = memberRepository;
this.auctionRepository = auctionRepository;
this.dealRepository = dealRepository;
this.reviewRepository = reviewRepository;
}

@Transactional
public ReviewResponse createReview(String reviewerId, Long auctionId, ReviewCreateRequest request) {
public Long createReview(String reviewerId, Long dealId, ReviewRequest request) {
Review review = reviewRepository.save(Review.toEntity(request));

Member reviewer = memberRepository.findByUserId(reviewerId).orElseThrow(() -> new CustomException(ExceptionCode.INVALID_MEMBER));
Auction auction = auctionRepository.findById(auctionId).orElseThrow(() -> new CustomException(ExceptionCode.INVALID_AUCTION_ID));
Deal deal = dealRepository.findById(dealId).orElseThrow(() -> new CustomException(ExceptionCode.INVALID_RESOURCE));

review.setMember(reviewer);
review.setAuction(auction);
review.setDeal(deal);
deal.setReview(review);

return review.getId();
}

@Transactional
public Long updateReview(ReviewRequest request, Long reviewId, String reviewerId) {
Review review = reviewRepository.findById(reviewId).orElseThrow(() -> new CustomException(ExceptionCode.INVALID_REVIEW));

if (!review.getMember().getUserId().equals(reviewerId)) {
throw new CustomException(ExceptionCode.INVALID_AUTH);
}

review.setComment(request.getComment());
review.setScore(request.getScore());

return reviewId;
}

public Long deleteReview(Long reviewId, String reviewerId) {
Review review = reviewRepository.findById(reviewId).orElseThrow(() -> new CustomException(ExceptionCode.INVALID_REVIEW));

if (!review.getMember().getUserId().equals(reviewerId)) {
throw new CustomException(ExceptionCode.INVALID_AUTH);
}

Deal deal = review.getDeal();
System.out.println(deal);
deal.setReview(null);

dealRepository.save(deal);
reviewRepository.delete(review);

return reviewId;
}

@Transactional
public ReviewResponse getReview(Long dealId) {

Deal deal = dealRepository.findById(dealId).orElseThrow(() -> new CustomException(ExceptionCode.INVALID_DEAL));

Review review = deal.getReview();

if (review == null) return null;

return ReviewResponse.toResponse(review);
}
Expand Down

0 comments on commit 25d1ff6

Please sign in to comment.