package com.aurora.controller; import com.aurora.annotation.OptLog; import com.aurora.model.dto.CategoryAdminDTO; import com.aurora.model.dto.CategoryDTO; import com.aurora.model.dto.CategoryOptionDTO; import com.aurora.service.CategoryService; import com.aurora.model.vo.CategoryVO; import com.aurora.model.vo.ConditionVO; import com.aurora.model.dto.PageResultDTO; import com.aurora.model.vo.ResultVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; import static com.aurora.constant.OptTypeConstant.*; @Api(tags = "分类模块") @RestController// 标识本类为RESTful控制器,组合了@Controller和@ResponseBody,所有方法返回值直接序列化为JSON响应 public class CategoryController { @Autowired private CategoryService categoryService; //用于处理分类相关的业务逻辑 @ApiOperation("获取所有分类")// Swagger注解描述API功能:获取所有分类(通常用于前台展示) @GetMapping("/categories/all") // 返回值ResultVO>是统一的响应包装类(用来规范接口返回的格式,比如包含响应状态、提示信息、数据等) //List是分类数据的列表,CategoryDTO是分类相关的数据传输对象(用来封装分类的信息) public ResultVO> listCategories() { // 调用Service层方法获取所有分类列表,并用ResultVO包装成成功响应 return ResultVO.ok(categoryService.listCategories()); } @ApiOperation(value = "查看后台分类列表")// 查看后台分类列表(通常包含分页和查询条件) @GetMapping("/admin/categories") // 返回分页结果,包含CategoryAdminDTO列表(可能比前台DTO包含更多管理字段) public ResultVO> listCategoriesAdmin(ConditionVO conditionVO) { //ConditionVO是条件封装类,用来接收前端传递的查询条件(比如分类名称、分页信息等) return ResultVO.ok(categoryService.listCategoriesAdmin(conditionVO)); } @ApiOperation(value = "搜索文章分类")//后台管理的搜索文章分类的接口 @GetMapping("/admin/categories/search") // 返回CategoryOptionDTO列表,通常用于下拉选择框等场景 //CategoryOptionDTO是适配“选项选择”场景的分类传输对象(比如下拉选择框里的分类选项,通常只封装分类ID和分类名称等) //List是符合搜索条件的分类选项列表 public ResultVO> listCategoriesAdminBySearch(ConditionVO conditionVO) { return ResultVO.ok(categoryService.listCategoriesBySearch(conditionVO)); } @OptLog(optType = DELETE) @ApiOperation(value = "删除分类") @DeleteMapping("/admin/categories") // @RequestBody接收前端以JSON格式传递的请求体数据,转换成要删除的分类ID列表,ResultVO表示无具体返回数据,仅返回操作成功的状态提示 public ResultVO deleteCategories(@RequestBody List categoryIds) { categoryService.deleteCategories(categoryIds); return ResultVO.ok(); } @OptLog(optType = SAVE_OR_UPDATE) @ApiOperation(value = "添加或修改分类") @PostMapping("/admin/categories") public ResultVO saveOrUpdateCategory(@Valid @RequestBody CategoryVO categoryVO) { // Service层会通过CategorVO中是否包含分类ID等信息,判断是执行添加还是修改操作 categoryService.saveOrUpdateCategory(categoryVO); return ResultVO.ok(); } }