AdminReviewController.java
package com.rbctcsworld.ecommerce.admin;
import com.rbctcsworld.ecommerce.review.Review;
import com.rbctcsworld.ecommerce.review.ReviewDtos.ReviewResponse;
import com.rbctcsworld.ecommerce.review.ReviewService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* Review moderation (ROLE_ADMIN via SecurityConfig).
* GET /api/admin/reviews?status=PUBLISHED|HIDDEN 200
* POST /api/admin/reviews/{id}/hide 200 (removed from list and from the average) | 404
* POST /api/admin/reviews/{id}/publish 200 | 404
*/
@RestController
@RequestMapping("/api/admin/reviews")
public class AdminReviewController {
private final ReviewService reviews;
public AdminReviewController(ReviewService reviews) {
this.reviews = reviews;
}
@GetMapping
public List<ReviewResponse> list(@RequestParam(required = false) String status) {
return reviews.adminList(status);
}
@PostMapping("/{id}/hide")
public ReviewResponse hide(@PathVariable Long id) {
return reviews.moderate(id, Review.HIDDEN);
}
@PostMapping("/{id}/publish")
public ReviewResponse publish(@PathVariable Long id) {
return reviews.moderate(id, Review.PUBLISHED);
}
}