diff --git a/src/main/java/ac/kr/deu/connect/luck/food_truck/FoodTruckMapper.java b/src/main/java/ac/kr/deu/connect/luck/food_truck/FoodTruckMapper.java index 5089801..1299186 100644 --- a/src/main/java/ac/kr/deu/connect/luck/food_truck/FoodTruckMapper.java +++ b/src/main/java/ac/kr/deu/connect/luck/food_truck/FoodTruckMapper.java @@ -78,4 +78,6 @@ public interface FoodTruckMapper { FoodTruckMenu toFoodTruckMenu(FoodTruckMenuRequest foodTruckMenuRequest); FoodTruckReview toFoodTruckReview(FoodTruckReviewRequest foodTruckReviewRequest); + + FoodTruckReviewRequest toFoodTruckReviewRequest(FoodTruckReview foodTruckReview); } diff --git a/src/main/java/ac/kr/deu/connect/luck/food_truck/controller/FoodTruckReviewController.java b/src/main/java/ac/kr/deu/connect/luck/food_truck/controller/FoodTruckReviewController.java index debc074..e856d35 100644 --- a/src/main/java/ac/kr/deu/connect/luck/food_truck/controller/FoodTruckReviewController.java +++ b/src/main/java/ac/kr/deu/connect/luck/food_truck/controller/FoodTruckReviewController.java @@ -2,8 +2,10 @@ import ac.kr.deu.connect.luck.food_truck.dto.FoodTruckReviewRequest; import ac.kr.deu.connect.luck.food_truck.service.FoodTruckReviewService; +import ac.kr.deu.connect.luck.food_truck.service.FoodTruckService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -16,29 +18,78 @@ @Slf4j @Controller -@RequestMapping("/food-truck/{foodTruckId}/review") +@RequestMapping("/food-truck/{id}/review") @AllArgsConstructor public class FoodTruckReviewController { private final FoodTruckReviewService foodTruckReviewService; + private final FoodTruckService foodTruckService; @GetMapping - public String getFoodTruckReview( - @PathVariable("foodTruckId") Long foodTruckId, + public String getFoodTruckReviewList( + @PathVariable(value = "id") Long id, Model model ) { - model.addAttribute("reviewRequestForm", new FoodTruckReviewRequest("", 0, null)); - return "food_truck/food-truck-review-form"; + model.addAttribute("foodTruckDetailResponse", foodTruckService.getFoodTruck(id)); + return "food_truck/manager/review_manage"; } - @PostMapping(consumes = {MediaType.MULTIPART_FORM_DATA_VALUE}) - public String postFoodTruckReview( - @PathVariable("foodTruckId") Long foodTruckId, - FoodTruckReviewRequest reviewRequest, - Principal principal + @GetMapping("/{reviewId}/reply") + public String getFoodTruckReviewDetail( + @PathVariable(value = "id") Long id, + @PathVariable(value = "reviewId") Long reviewId, + Model model + ) { + log.info("reviewId: {}", foodTruckReviewService.getFoodTruckReview(reviewId).getContent()); + model.addAttribute("review", foodTruckReviewService.getFoodTruckReview(reviewId)); + model.addAttribute("foodTruckId", id); + model.addAttribute("reviewId", reviewId); + return "food_truck/manager/review_reply_form"; + } + + @PreAuthorize("isAuthenticated()") + @PostMapping("/{reviewId}/reply") + public String replyFoodTruckReview( + @PathVariable(value = "id") Long id, + @PathVariable(value = "reviewId") Long reviewId, + String content + ) { + foodTruckReviewService.addReplyToReview(reviewId, content); + return "redirect:/food-truck/" + id + "/review"; + } + + @PreAuthorize("isAuthenticated()") + @GetMapping("/{reviewId}/delete") + public String deleteFoodTruckReview( + @PathVariable(value = "id") Long id, + @PathVariable(value = "reviewId") Long reviewId ) { + foodTruckReviewService.deleteFoodTruckReview(reviewId); + return "redirect:/user"; + } - foodTruckReviewService.saveFoodTruckReview(foodTruckId, reviewRequest, principal.getName()); - return "redirect:/food-truck/{foodTruckId}"; + @PreAuthorize("isAuthenticated()") + @GetMapping("/{reviewId}/edit") + public String editFoodTruckReview( + @PathVariable(value = "id") Long id, + @PathVariable(value = "reviewId") Long reviewId, + Model model + ) { + model.addAttribute("review", foodTruckReviewService.getFoodTruckReviewForRequest(reviewId)); + model.addAttribute("foodTruckId", id); + model.addAttribute("reviewId", reviewId); + return "food_truck/review_edit_form"; } -} + + @PreAuthorize("isAuthenticated()") + @PostMapping("/{reviewId}/edit") + public String editFoodTruckReview( + @PathVariable(value = "id") Long id, + @PathVariable(value = "reviewId") Long reviewId, + FoodTruckReviewRequest foodTruckReview, Principal principal + ) { + foodTruckReviewService.saveFoodTruckReview(id, foodTruckReview, principal.getName(), reviewId); + return "redirect:/user"; + } + } + diff --git a/src/main/java/ac/kr/deu/connect/luck/food_truck/service/FoodTruckReviewService.java b/src/main/java/ac/kr/deu/connect/luck/food_truck/service/FoodTruckReviewService.java index 983e0f2..eb3465e 100644 --- a/src/main/java/ac/kr/deu/connect/luck/food_truck/service/FoodTruckReviewService.java +++ b/src/main/java/ac/kr/deu/connect/luck/food_truck/service/FoodTruckReviewService.java @@ -93,4 +93,13 @@ public FoodTruckReviewResponse addReplyToReview(Long reviewId, String content) { review.setReply(content); return foodTruckMapper.toFoodTruckReviewResponse(foodTruckReviewRepository.save(review)); } + + public FoodTruckReview getFoodTruckReview(Long reviewId) { + return foodTruckReviewRepository.findById(reviewId).get(); + } + + public FoodTruckReviewRequest getFoodTruckReviewForRequest(Long reviewId) { + FoodTruckReview review = foodTruckReviewRepository.findById(reviewId).get(); + return foodTruckMapper.toFoodTruckReviewRequest(review); + } } diff --git a/src/main/java/ac/kr/deu/connect/luck/image/ImageRestController.java b/src/main/java/ac/kr/deu/connect/luck/image/ImageRestController.java index a7ed262..e78b993 100644 --- a/src/main/java/ac/kr/deu/connect/luck/image/ImageRestController.java +++ b/src/main/java/ac/kr/deu/connect/luck/image/ImageRestController.java @@ -1,5 +1,6 @@ package ac.kr.deu.connect.luck.image; +import ac.kr.deu.connect.luck.image.dto.ImageUrlResponse; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.AllArgsConstructor; diff --git a/src/main/java/ac/kr/deu/connect/luck/image/ImageUrlResponse.java b/src/main/java/ac/kr/deu/connect/luck/image/ImageUrlResponse.java deleted file mode 100644 index 1a55991..0000000 --- a/src/main/java/ac/kr/deu/connect/luck/image/ImageUrlResponse.java +++ /dev/null @@ -1,6 +0,0 @@ -package ac.kr.deu.connect.luck.image; - -public record ImageUrlResponse( - String url -) { -} diff --git a/src/main/java/ac/kr/deu/connect/luck/image/dto/ImageUrlResponse.kt b/src/main/java/ac/kr/deu/connect/luck/image/dto/ImageUrlResponse.kt new file mode 100644 index 0000000..0498ccd --- /dev/null +++ b/src/main/java/ac/kr/deu/connect/luck/image/dto/ImageUrlResponse.kt @@ -0,0 +1,9 @@ +package ac.kr.deu.connect.luck.image.dto + +data class ImageUrlResponse( + val imageUrl: String +) { + override fun toString(): String { + return "ImageUrlResponse(imageUrl='$imageUrl')" + } +} diff --git a/src/main/resources/templates/food_truck/manager/my_food_truck_list.html b/src/main/resources/templates/food_truck/manager/my_food_truck_list.html index 57ca470..89f36af 100644 --- a/src/main/resources/templates/food_truck/manager/my_food_truck_list.html +++ b/src/main/resources/templates/food_truck/manager/my_food_truck_list.html @@ -37,6 +37,9 @@
+ 평점: + + 점 +
++ 작성자: + +
++ 작성일: + +
++ 답장: + +
+ + + +