package com.ruoyi.study.controller; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.study.domain.*; import com.ruoyi.study.dto.CategoryQuery; import com.ruoyi.study.dto.SubjectDTO; import com.ruoyi.study.dto.SubjectQuery; import com.ruoyi.study.service.*; import com.ruoyi.study.vo.CategoryVO; import com.ruoyi.study.vo.SubjectVO; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import io.swagger.models.auth.In; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** *

* 2.0新增-题目分类管理 前端控制器 *

* * @author 无关风月 * @since 2024-04-26 */ @RestController @RequestMapping("/base/tCategory") public class TCategoryController { @Autowired private ITSubjectService subjectService; @Autowired private ICategoryService categoryService; @PostMapping("/categoryList") @ApiOperation(value = "列表查询", tags = {"2.0新增-题目分类管理"}) public R> subjectList(@RequestBody CategoryQuery query) { query.setState(1); List integers = new ArrayList<>(); if (StringUtils.hasLength(query.getSecondName())){ List collect = categoryService.lambdaQuery() .eq(TCategory::getType, 2) .eq(TCategory::getState, query.getState()) .like(TCategory::getName, query.getSecondName()) .list().stream().map(TCategory::getParentId).collect(Collectors.toList()); integers.addAll(collect); } if (StringUtils.hasLength(query.getFirstName())){ List collect = categoryService.lambdaQuery() .eq(TCategory::getType, 1) .eq(TCategory::getState, query.getState()) .like(TCategory::getName, query.getFirstName()) .list().stream().map(TCategory::getId).collect(Collectors.toList()); integers.addAll(collect); } if (StringUtils.hasLength(query.getSecondName())&&StringUtils.hasLength(query.getFirstName())){ if (integers.isEmpty()){ integers.add(-1); } } query.setFirstIds(integers); PageInfo res = new PageInfo<>(query.getPageNumber(), query.getPageSize()); List list = categoryService.listAll(query,res); for (CategoryVO categoryVO : list) { List list1 = categoryService.lambdaQuery() .eq(TCategory::getParentId, categoryVO.getId()) .eq(TCategory::getState,query.getState()).list(); categoryVO.setSecondList(list1); } res.setRecords(list); res.setTotal(list.size()); return R.ok(res); } @GetMapping("/list") @ApiOperation(value = "根据类型查询所有一级分类 state=1 题目 state=2 故事", tags = {"2.0新增-题目分类管理"}) public R> list(Integer state) { List list = categoryService.lambdaQuery().eq(TCategory::getState, state).eq(TCategory::getType, 1).list(); return R.ok(list); } @GetMapping("/listById") @ApiOperation(value = "根据一级分类id 查询二级分类列表", tags = {"2.0新增-题目分类管理"}) public R> listById(Integer id) { List list = categoryService.lambdaQuery().eq(TCategory::getParentId, id).list(); return R.ok(list); } @PostMapping("/add") @ApiOperation(value = "添加", tags = {"2.0新增-题目分类管理"}) public R add(@RequestBody TCategory dto) { dto.setState(1); categoryService.save(dto); return R.ok("添加成功"); } @PostMapping("/update") @ApiOperation(value = "编辑", tags = {"2.0新增-题目分类管理"}) public R update(@RequestBody TCategory dto) { dto.setState(1); categoryService.updateById(dto); return R.ok("编辑成功"); } @PostMapping("/delete") @ApiOperation(value = "删除", tags = {"2.0新增-题目分类管理"}) public R delete(@RequestParam("id") Integer id) { TCategory byId = categoryService.getById(id); switch (byId.getType()){ case 1: // 一级分类 List list = subjectService.lambdaQuery().eq(TSubject::getFirstCategory, id).list(); if (!list.isEmpty()){ // 操作失败,当前分类正在被使用 return R.fail("当前分类正在被使用"); } break; case 2: // 二级分类 List list2 = subjectService.lambdaQuery().eq(TSubject::getSecondCategory, id).list(); if (!list2.isEmpty()){ // 操作失败,当前分类正在被使用 return R.fail("当前分类正在被使用"); } break; } categoryService.removeById(id); return R.ok(); } }