package com.linghu.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.linghu.mapper.KeywordMapper; import com.linghu.mapper.ReferenceMapper; import com.linghu.model.common.ResponseResult; import com.linghu.model.entity.Keyword; import com.linghu.model.entity.Reference; import com.linghu.model.entity.Type; import com.linghu.service.KeywordService; import com.linghu.service.TypeService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @RestController @RequestMapping("/type") @Api(value = "类型相关接口", tags = "设置-类型") public class TypeController { @Autowired private TypeService typeService; @Autowired private KeywordMapper keywordMapper; @Autowired private ReferenceMapper referenceMapper; @PostMapping @ApiOperation(value = "添加类型") public ResponseResult add(@RequestBody Type type) { boolean success = typeService.save(type); if (success) { return ResponseResult.success(type); } return ResponseResult.error("添加类型失败"); } @PostMapping("/batch") @ApiOperation(value = "批量添加类型") public ResponseResult batchAdd(@RequestBody List types) { boolean success = typeService.saveBatch(types); if (success) { return ResponseResult.success(); } return ResponseResult.error("批量添加类型失败"); } @DeleteMapping("/{typeId}") @ApiOperation(value = "删除类型") public ResponseResult delete(@PathVariable Integer typeId) { typeService.removeById(typeId); return ResponseResult.success(); } @PutMapping @ApiOperation(value = "更新类型") public ResponseResult update(@RequestBody Type type) { typeService.updateById(type); return ResponseResult.success(); } @PutMapping("/batch") @ApiOperation(value = "批量更新类型") public ResponseResult batchUpdate(@RequestBody List types) { boolean success = typeService.updateBatchById(types); if (success) { return ResponseResult.success(); } return ResponseResult.error("批量更新类型失败"); } @GetMapping("/{typeId}") @ApiOperation(value = "根据ID查询类型") public ResponseResult getById(@PathVariable Integer typeId) { Type type = typeService.getById(typeId); if (type != null ) { return ResponseResult.success(type); } return ResponseResult.error("类型不存在"); } @DeleteMapping("/batch") @ApiOperation(value = "批量删除类型") public ResponseResult batchDelete(@RequestBody List typeIds) { List types = typeIds.stream().map(id -> { Type type = new Type(); type.setType_id(id); return type; }).collect(java.util.stream.Collectors.toList()); boolean success = typeService.updateBatchById(types); if (success) { return ResponseResult.success(); } return ResponseResult.error("批量删除类型失败"); } @GetMapping("/list") @ApiOperation(value = "查询类型列表,不传页数和大小就查全部") public ResponseResult> list( @RequestParam(required = false) Integer page, @RequestParam(required = false) Integer pageSize, @RequestParam(required = false) Integer keywordId, @RequestParam(required = false) Integer questionId, @RequestParam(required = false) Integer isNow ) { List typeIds=new ArrayList<>(); Keyword keyword=new Keyword(); //先查找当前关键词下,所有的回答 的 所有的平台名称 if (keywordId != null) { keyword = keywordMapper.selectById(keywordId); } typeIds= keywordMapper.getTypeIds(keywordId,questionId,isNow,keyword); /* if (keywordId != null && questionId == null) { List references = referenceMapper.selectList(new LambdaQueryWrapper() .eq(Reference::getKeyword_id, keywordId) .eq(Reference::getNum,isNow == 0 ? 1 : keyword.getNum()) ); typeIds = references.stream().map(Reference::getType_id).filter(Objects::nonNull).distinct().collect(Collectors.toList()); } if (questionId != null) { List references = referenceMapper.selectList(new LambdaQueryWrapper() .eq(Reference::getKeyword_id, keywordId) .eq(Reference::getNum, isNow == 0 ? 1 : keyword.getNum()) .eq(Reference::getQuestion_id, questionId) ); typeIds = references.stream().map(Reference::getType_id).filter(Objects::nonNull).distinct().collect(Collectors.toList()); } */ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); if (!typeIds.isEmpty()) { queryWrapper.in(Type::getType_id, typeIds); }else { if (keywordId != null) { return ResponseResult.success(new ArrayList<>()); }else { List list = typeService.list(queryWrapper); return ResponseResult.success(list); } } List list = typeService.list(queryWrapper); return ResponseResult.success(list); } }