package com.rj.controller; import com.rj.entity.KnowledgeBase; import com.rj.service.IKnowledgeBaseService; import com.rj.service.MinIOService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.util.HashMap; import java.util.List; import java.util.Map; /** *

* 知识库管理表 前端控制器 *

* * @author 李中华 ,spllzh * @since 2025-01-27 */ @Slf4j @RestController @RequestMapping("/api/knowledgeBase") @Tag(name = "知识库管理", description = "知识库管理相关接口") public class KnowledgeBaseController { @Autowired private IKnowledgeBaseService knowledgeBaseService; @Autowired private MinIOService minIOService; /** * 新增知识 */ @PostMapping("/add") @Operation(summary = "新增知识", description = "添加新的知识信息") public ResponseEntity> addKnowledge( @RequestParam(value = "file", required = false) MultipartFile file, @Parameter(description = "知识信息", required = true) @ModelAttribute KnowledgeBase knowledgeBase) { // 如果提供了文件,上传到MinIO并保存路径 if (file != null && !file.isEmpty()) { try { log.info("开始上传文件到MinIO,文件名:{}", file.getOriginalFilename()); String fileUrl = minIOService.uploadFile(file); log.info("文件上传到MinIO成功,URL: {}", fileUrl); // 将上传的文件URL保存到知识库对象的附件URL字段 knowledgeBase.setAttachmentUrl(fileUrl); } catch (Exception e) { log.error("文件上传到MinIO失败: {}", e.getMessage(), e); Map errorResult = new HashMap<>(); errorResult.put("success", false); errorResult.put("message", "文件上传失败:" + e.getMessage()); return ResponseEntity.internalServerError().body(errorResult); } } Map result = knowledgeBaseService.addKnowledge(knowledgeBase); Boolean success = (Boolean) result.get("success"); if (success != null && success) { return ResponseEntity.ok(result); } else { return ResponseEntity.badRequest().body(result); } } /** * 根据ID查询知识 */ @GetMapping("/get/{id}") @Operation(summary = "根据ID查询知识", description = "根据知识ID获取知识详细信息") public ResponseEntity> getKnowledgeById( @Parameter(description = "知识ID", required = true) @PathVariable String id) { Map result = knowledgeBaseService.getKnowledgeById(id); Boolean success = (Boolean) result.get("success"); if (success != null && success) { return ResponseEntity.ok(result); } else { return ResponseEntity.notFound().build(); } } /** * 分页查询知识列表 */ @PostMapping("/list") @Operation(summary = "分页查询知识列表", description = "分页查询知识信息列表") public ResponseEntity> getKnowledgeList( @Parameter(description = "页码", example = "1") @RequestParam(defaultValue = "1") Integer current, @Parameter(description = "每页大小", example = "10") @RequestParam(defaultValue = "10") Integer size, @Parameter(description = "知识标题(模糊查询)") @RequestParam(required = false) String title, @Parameter(description = "知识分类") @RequestParam(required = false) String category, @Parameter(description = "应用行业") @RequestParam(required = false) String industry, @Parameter(description = "创建人") @RequestParam(required = false) String creator, @Parameter(description = "状态") @RequestParam(required = false) String status) { Map result = knowledgeBaseService.getKnowledgeList(current, size, title, category, industry, creator, status); return ResponseEntity.ok(result); } /** * 更新知识信息 */ @PutMapping("/update") @Operation(summary = "更新知识信息", description = "更新知识详细信息") public ResponseEntity> updateKnowledge( @Parameter(description = "知识信息", required = true) @RequestBody KnowledgeBase knowledgeBase) { Map result = knowledgeBaseService.updateKnowledge(knowledgeBase); Boolean success = (Boolean) result.get("success"); if (success != null && success) { return ResponseEntity.ok(result); } else { return ResponseEntity.badRequest().body(result); } } /** * 根据ID删除知识 */ @DeleteMapping("/delete/{id}") @Operation(summary = "删除知识", description = "根据知识ID删除知识信息") public ResponseEntity> deleteKnowledge( @Parameter(description = "知识ID", required = true) @PathVariable String id) { Map result = knowledgeBaseService.deleteKnowledge(id); Boolean success = (Boolean) result.get("success"); if (success != null && success) { return ResponseEntity.ok(result); } else { return ResponseEntity.badRequest().body(result); } } /** * 批量删除知识 */ @DeleteMapping("/batchDelete") @Operation(summary = "批量删除知识", description = "根据知识ID列表批量删除知识信息") public ResponseEntity> batchDeleteKnowledge( @Parameter(description = "知识ID列表", required = true) @RequestBody List ids) { Map result = knowledgeBaseService.batchDeleteKnowledge(ids); Boolean success = (Boolean) result.get("success"); if (success != null && success) { return ResponseEntity.ok(result); } else { return ResponseEntity.badRequest().body(result); } } /** * 点赞知识 */ @PostMapping("/like/{id}") @Operation(summary = "点赞知识", description = "为指定知识点赞") public ResponseEntity> likeKnowledge( @Parameter(description = "知识ID", required = true) @PathVariable String id) { Map result = knowledgeBaseService.likeKnowledge(id); Boolean success = (Boolean) result.get("success"); if (success != null && success) { return ResponseEntity.ok(result); } else { return ResponseEntity.badRequest().body(result); } } /** * 置顶/取消置顶知识 */ @PostMapping("/toggleTop/{id}") @Operation(summary = "置顶/取消置顶知识", description = "切换知识的置顶状态") public ResponseEntity> toggleTopKnowledge( @Parameter(description = "知识ID", required = true) @PathVariable String id) { Map result = knowledgeBaseService.toggleTopKnowledge(id); Boolean success = (Boolean) result.get("success"); if (success != null && success) { return ResponseEntity.ok(result); } else { return ResponseEntity.badRequest().body(result); } } /** * 获取知识统计信息 */ @GetMapping("/statistics") @Operation(summary = "获取知识统计信息", description = "获取知识总数等统计信息") public ResponseEntity> getKnowledgeStatistics() { Map result = knowledgeBaseService.getKnowledgeStatistics(); return ResponseEntity.ok(result); } /** * 获取分类列表 */ @GetMapping("/categories") @Operation(summary = "获取分类列表", description = "获取所有知识分类") public ResponseEntity> getCategories() { Map result = knowledgeBaseService.getCategories(); return ResponseEntity.ok(result); } /** * 获取行业列表 */ @GetMapping("/industries") @Operation(summary = "获取行业列表", description = "获取所有应用行业") public ResponseEntity> getIndustries() { Map result = knowledgeBaseService.getIndustries(); return ResponseEntity.ok(result); } }