package com.ruoyi.web.controller.api; import com.ruoyi.common.basic.PageDTO; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.utils.BeanUtils; import com.ruoyi.system.domain.TbFieldCategory; import com.ruoyi.system.dto.FieldCategoryDTO; import com.ruoyi.system.dto.ShowHideDTO; import com.ruoyi.system.dto.update.FieldCategoryUpdateDTO; import com.ruoyi.system.query.FieldCategoryQuery; import com.ruoyi.system.service.TbFieldCategoryService; import com.ruoyi.system.vo.FieldCategoryDetailVO; import com.ruoyi.system.vo.FieldCategoryVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Objects; /** *

* 字段分类表 前端控制器 *

* * @author mitao * @since 2024-03-13 */ @Slf4j @RestController @RequestMapping("/field-category") @RequiredArgsConstructor @Api(tags = "字段分类管理相关接口") public class TbFieldCategoryController { private final TbFieldCategoryService tbFieldCategoryService; /** * 添加 * @param dto 字段分类数据传输对象 * @return R */ @PostMapping("/add") @ApiOperation("添加") public R add(@RequestBody @Validated FieldCategoryDTO dto) { tbFieldCategoryService.add(dto); return R.ok(); } /** * 根据id获取字段分类详情 * @param id 字段分类id * @return R */ @GetMapping("/get-details") @ApiOperation("根据id获取字段分类详情") public R getById(@RequestParam(value = "id") Integer id) { TbFieldCategory oneCategory = tbFieldCategoryService.getById(id); if (Objects.isNull(oneCategory)) { return R.ok(new FieldCategoryDetailVO()); } FieldCategoryDetailVO vo = BeanUtils.copyBean(oneCategory, FieldCategoryDetailVO.class); //根据一级分类id,查询二级分类 List twoCategoryList = tbFieldCategoryService.lambdaQuery().eq(TbFieldCategory::getParentId, oneCategory.getId()).list(); twoCategoryList.forEach(item->{ FieldCategoryDetailVO twoCategoryVO = BeanUtils.copyBean(item, FieldCategoryDetailVO.class); vo.getChildren().add(twoCategoryVO); //根据二级分类id,查询三级分类 List threeCategoryList = tbFieldCategoryService.lambdaQuery().eq(TbFieldCategory::getParentId, item.getId()).list(); threeCategoryList.forEach(threeCategory->{ FieldCategoryDetailVO threeCategoryVO = BeanUtils.copyBean(threeCategory, FieldCategoryDetailVO.class); twoCategoryVO.getChildren().add(threeCategoryVO); }); }); return R.ok(vo); } /** * 分页条件查询 * @param query 部门条件查询对象 * @return PageVO */ @PostMapping("/page") @ApiOperation("分页条件查询") public R> page(@RequestBody FieldCategoryQuery query) { return R.ok(tbFieldCategoryService.queryPage(query)); } /** * 隐藏显示操作 * @param dto 显示隐藏操作数据传输对象 * @return R */ @PostMapping("/show-hide") @ApiOperation("隐藏显示操作") public R showHide(@RequestBody ShowHideDTO dto) { tbFieldCategoryService.showHide(dto); return R.ok(); } /** * 删除分类子节点 * @param id id * @return R */ @DeleteMapping("/delete-children") @ApiOperation("编辑页面删除子字段分类") public R deleteChildren(@RequestParam(value = "id") Integer id){ tbFieldCategoryService.deleteChildren(id); return R.ok(); } /** * 删除分类 * @param id id * @return R */ @DeleteMapping("/delete") @ApiOperation("列表页面删除分类") public R delete(@RequestParam(value = "id") Integer id){ tbFieldCategoryService.delete(id); return R.ok(); } /** * 编辑分类 * @param dto 字段分类更新数据传输对象 * @return R */ @PutMapping("/edit") @ApiOperation("编辑") public R edit(@RequestBody FieldCategoryUpdateDTO dto) { tbFieldCategoryService.edit(dto); return R.ok(); } }