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.TCategory;
import com.ruoyi.study.domain.TStory;
import com.ruoyi.study.domain.TSubject;
import com.ruoyi.study.dto.CategoryQuery;
import com.ruoyi.study.service.ICategoryService;
import com.ruoyi.study.service.ITStoryService;
import com.ruoyi.study.service.ITSubjectService;
import com.ruoyi.study.vo.CategoryVO;
import io.swagger.annotations.ApiOperation;
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/tCategoryStory")
public class TCategoryStoryController {
@Autowired
private ITSubjectService subjectService;
@Autowired
private ICategoryService categoryService;
@Autowired
private ITStoryService storyService;
@PostMapping("/categoryList")
@ApiOperation(value = "列表查询", tags = {"2.0新增-故事分类管理"})
public R> subjectList(@RequestBody CategoryQuery query) {
query.setState(2);
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,2).list();
categoryVO.setSecondList(list1);
}
res.setRecords(list);
res.setTotal(list.size());
return R.ok(res);
}
@PostMapping("/add")
@ApiOperation(value = "添加", tags = {"2.0新增-故事分类管理"})
public R add(@RequestBody TCategory dto) {
dto.setState(2);
categoryService.save(dto);
return R.ok("添加成功");
}
@PostMapping("/update")
@ApiOperation(value = "编辑", tags = {"2.0新增-故事分类管理"})
public R update(@RequestBody TCategory dto) {
dto.setState(2);
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 = storyService.lambdaQuery().eq(TStory::getFirstCategory, id).list();
if (!list.isEmpty()){
// 操作失败,当前分类正在被使用
return R.fail("当前分类正在被使用");
}
break;
case 2:
// 二级分类
List list2 = storyService.lambdaQuery().eq(TStory::getSecondCategory, id).list();
if (!list2.isEmpty()){
// 操作失败,当前分类正在被使用
return R.fail("当前分类正在被使用");
}
break;
}
categoryService.removeById(id);
return R.ok();
}
}