package com.qf.myafterprojecy.controller; import com.qf.myafterprojecy.exceptopn.ResponseMessage; import com.qf.myafterprojecy.pojo.Nonsense; import com.qf.myafterprojecy.pojo.dto.NonsenseDto; import com.qf.myafterprojecy.service.INonsenseService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import javax.validation.constraints.Max; import javax.validation.constraints.Min; import java.util.List; @RestController @RequestMapping("/api/nonsense") @Validated public class NonsenseController { private static final Logger logger = LoggerFactory.getLogger(NonsenseController.class); @Autowired private INonsenseService nonsenseService; /** * 获取所有疯言疯语内容 * @return 疯言疯语内容列表 */ @GetMapping public ResponseMessage> getAllNonsense() { logger.info("请求获取所有疯言疯语内容"); return nonsenseService.getAllNonsense(); } /** * 根据状态获取疯言疯语内容 * @param status 状态:0未发表 1已发表 2已删除 * @return 疯言疯语内容列表 */ @GetMapping("/status/{status}") public ResponseMessage> getNonsenseByStatus( @PathVariable("status") Integer status) { logger.info("请求获取状态为{}的疯言疯语内容", status); return nonsenseService.getNonsenseByStatus(status); } /** * 根据ID获取疯言疯语内容 * @param id 疯言疯语内容ID * @return 疯言疯语内容 */ @GetMapping("/{id}") public ResponseMessage getNonsenseById(@PathVariable("id") Integer id) { logger.info("请求获取ID为{}的疯言疯语内容", id); return nonsenseService.getNonsenseById(id); } /** * 创建疯言疯语内容 * 需要管理员权限 * @param nonsenseDto 疯言疯语内容数据 * @return 创建结果 */ @PostMapping public ResponseMessage saveNonsense(@Valid @RequestBody NonsenseDto nonsenseDto) { logger.info("请求保存疯言疯语内容"); return nonsenseService.saveNonsense(nonsenseDto); } /** * 更新疯言疯语内容 * 需要管理员权限 * @param id 疯言疯语内容ID * @param nonsenseDto 疯言疯语内容数据 * @return 更新结果 */ @PutMapping("/{id}") @PreAuthorize("hasRole('ADMIN')") public ResponseMessage updateNonsense(@PathVariable("id") Integer id, @Valid @RequestBody NonsenseDto nonsenseDto) { logger.info("请求更新ID为{}的疯言疯语内容", id); return nonsenseService.updateNonsense(id, nonsenseDto); } /** * 删除疯言疯语内容 * 需要管理员权限 * @param id 疯言疯语内容ID * @return 删除结果 */ @DeleteMapping("/{id}") @PreAuthorize("hasRole('ADMIN')") public ResponseMessage deleteNonsense(@PathVariable("id") Integer id) { logger.info("请求删除ID为{}的疯言疯语内容", id); return nonsenseService.deleteNonsense(id); } /** * 更新疯言疯语内容状态 * 需要管理员权限 * @param id 疯言疯语内容ID * @param status 新状态:0未发表 1已发表 2已删除 * @return 更新结果 */ @PutMapping("/{id}/status/{status}") @PreAuthorize("hasRole('ADMIN')") public ResponseMessage updateNonsenseStatus( @PathVariable("id") Integer id, @PathVariable("status") @Min(0) @Max(2) Integer status) { logger.info("请求更新ID为{}的疯言疯语内容状态为{}", id, status); return nonsenseService.updateNonsenseStatus(id, status); } }