package space.anyi.controller.admin; import space.anyi.entity.Cake; import space.anyi.entity.Review; import space.anyi.service.CakeService; import space.anyi.service.ReviewService; import space.anyi.util.Converter; import space.anyi.entity.vo.ReviewVO; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.support.RedirectAttributes; @Controller @RequestMapping("/admin") public class AdminReviewController { @Autowired private ReviewService reviewService; @Autowired private CakeService cakeService; @GetMapping("/review") public ModelAndView list(@RequestParam(defaultValue = "1") Integer page) { ModelAndView mv = new ModelAndView("admin/review"); List reviewList = reviewService.findAll(page, 10); int totalPages = 1; if (reviewList instanceof com.github.pagehelper.Page) { com.github.pagehelper.Page p = (com.github.pagehelper.Page) reviewList; totalPages = p.getPages(); } List reviewVOs = Converter.toReviewVOList(reviewList); for (ReviewVO vo : reviewVOs) { if (vo.getCakeId() != null) { Cake cake = cakeService.findById(vo.getCakeId()); if (cake != null) { vo.setCakeName(cake.getName()); } } } mv.addObject("reviews", reviewVOs); mv.addObject("page", page); mv.addObject("totalPages", totalPages); return mv; } @PostMapping("/review/toggleStatus") public String toggleStatus(@RequestParam Integer id, RedirectAttributes attr) { reviewService.toggleStatus(id); attr.addFlashAttribute("success", "状态已更改"); return "redirect:/admin/review"; } @PostMapping("/review/reply") public String reply(@RequestParam Integer id, @RequestParam String replyContent, RedirectAttributes attr) { reviewService.reply(id, replyContent); attr.addFlashAttribute("success", "回复成功"); return "redirect:/admin/review"; } }