mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-04 04:08:43 +08:00 
			
		
		
		
	【新增】AI 知识库: 增加部分管理类接口
This commit is contained in:
		@@ -1,13 +1,19 @@
 | 
			
		||||
package cn.iocoder.yudao.module.ai.controller.admin.knowledge;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.AiKnowledgeCreateMyReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.AiKnowledgeUpdateMyReqVO;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.knowledge.AiKnowledgeCreateMyReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.knowledge.AiKnowledgeRespVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.knowledge.AiKnowledgeUpdateMyReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.dal.dataobject.knowledge.AiKnowledgeDO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.service.knowledge.AiKnowledgeService;
 | 
			
		||||
import io.swagger.v3.oas.annotations.Operation;
 | 
			
		||||
import io.swagger.v3.oas.annotations.tags.Tag;
 | 
			
		||||
import jakarta.annotation.Resource;
 | 
			
		||||
import jakarta.validation.Valid;
 | 
			
		||||
import org.springframework.validation.annotation.Validated;
 | 
			
		||||
import org.springframework.web.bind.annotation.*;
 | 
			
		||||
 | 
			
		||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 | 
			
		||||
@@ -19,19 +25,27 @@ import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUti
 | 
			
		||||
public class AiKnowledgeController {
 | 
			
		||||
 | 
			
		||||
    @Resource
 | 
			
		||||
    private AiKnowledgeService knowledgeBaseService;
 | 
			
		||||
    private AiKnowledgeService knowledgeService;
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/my-page")
 | 
			
		||||
    @Operation(summary = "获取【我的】知识库分页")
 | 
			
		||||
    public CommonResult<PageResult<AiKnowledgeRespVO>> getKnowledgePageMy(@Validated PageParam pageReqVO) {
 | 
			
		||||
        PageResult<AiKnowledgeDO> pageResult = knowledgeService.getKnowledgePageMy(getLoginUserId(), pageReqVO);
 | 
			
		||||
        return success(BeanUtils.toBean(pageResult, AiKnowledgeRespVO.class));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @PostMapping("/create-my")
 | 
			
		||||
    @Operation(summary = "创建【我的】知识库")
 | 
			
		||||
    public CommonResult<Long> createKnowledgeMy(@RequestBody @Valid AiKnowledgeCreateMyReqVO createReqVO) {
 | 
			
		||||
        return success(knowledgeBaseService.createKnowledgeMy(createReqVO, getLoginUserId()));
 | 
			
		||||
        return success(knowledgeService.createKnowledgeMy(createReqVO, getLoginUserId()));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @PutMapping("/update-my")
 | 
			
		||||
    @Operation(summary = "更新【我的】知识库")
 | 
			
		||||
    public CommonResult<Boolean> updateKnowledgeMy(@RequestBody @Valid AiKnowledgeUpdateMyReqVO updateReqVO) {
 | 
			
		||||
        knowledgeBaseService.updateKnowledgeMy(updateReqVO, getLoginUserId());
 | 
			
		||||
        knowledgeService.updateKnowledgeMy(updateReqVO, getLoginUserId());
 | 
			
		||||
        return success(true);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,54 @@
 | 
			
		||||
package cn.iocoder.yudao.module.ai.controller.admin.knowledge;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.document.AiKnowledgeDocumentPageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.document.AiKnowledgeDocumentRespVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.document.AiKnowledgeDocumentUpdateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.knowledge.AiKnowledgeDocumentCreateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.dal.dataobject.knowledge.AiKnowledgeDocumentDO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.service.knowledge.AiKnowledgeDocumentService;
 | 
			
		||||
import io.swagger.v3.oas.annotations.Operation;
 | 
			
		||||
import io.swagger.v3.oas.annotations.tags.Tag;
 | 
			
		||||
import jakarta.annotation.Resource;
 | 
			
		||||
import org.springframework.validation.annotation.Validated;
 | 
			
		||||
import org.springframework.web.bind.annotation.*;
 | 
			
		||||
 | 
			
		||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@Tag(name = "管理后台 - AI 知识库-文档")
 | 
			
		||||
@RestController
 | 
			
		||||
@RequestMapping("/ai/knowledge/document")
 | 
			
		||||
public class AiKnowledgeDocumentController {
 | 
			
		||||
 | 
			
		||||
    @Resource
 | 
			
		||||
    private AiKnowledgeDocumentService documentService;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @PostMapping("/create")
 | 
			
		||||
    @Operation(summary = "新建文档")
 | 
			
		||||
    public CommonResult<Long> createKnowledgeDocument(@Validated AiKnowledgeDocumentCreateReqVO reqVO) {
 | 
			
		||||
        Long knowledgeDocumentId = documentService.createKnowledgeDocument(reqVO);
 | 
			
		||||
        return success(knowledgeDocumentId);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/page")
 | 
			
		||||
    @Operation(summary = "获取文档分页")
 | 
			
		||||
    public CommonResult<PageResult<AiKnowledgeDocumentRespVO>> getKnowledgeDocumentPageMy(@Validated AiKnowledgeDocumentPageReqVO pageReqVO) {
 | 
			
		||||
        PageResult<AiKnowledgeDocumentDO> pageResult = documentService.getKnowledgeDocumentPage(pageReqVO);
 | 
			
		||||
        return success(BeanUtils.toBean(pageResult, AiKnowledgeDocumentRespVO.class));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @PutMapping("/update")
 | 
			
		||||
    @Operation(summary = "更新文档")
 | 
			
		||||
    public CommonResult<Boolean> updateKnowledgeDocument(@Validated @RequestBody AiKnowledgeDocumentUpdateReqVO reqVO) {
 | 
			
		||||
        documentService.updateKnowledgeDocument(reqVO);
 | 
			
		||||
        return success(true);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,51 @@
 | 
			
		||||
package cn.iocoder.yudao.module.ai.controller.admin.knowledge;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.segment.AiKnowledgeSegmentPageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.segment.AiKnowledgeSegmentRespVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.segment.AiKnowledgeSegmentUpdateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.segment.AiKnowledgeSegmentUpdateStatusReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.dal.dataobject.knowledge.AiKnowledgeSegmentDO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.service.knowledge.AiKnowledgeSegmentService;
 | 
			
		||||
import io.swagger.v3.oas.annotations.Operation;
 | 
			
		||||
import io.swagger.v3.oas.annotations.tags.Tag;
 | 
			
		||||
import jakarta.annotation.Resource;
 | 
			
		||||
import org.springframework.validation.annotation.Validated;
 | 
			
		||||
import org.springframework.web.bind.annotation.*;
 | 
			
		||||
 | 
			
		||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@Tag(name = "管理后台 - AI 知识库-段落")
 | 
			
		||||
@RestController
 | 
			
		||||
@RequestMapping("/ai/knowledge/segment")
 | 
			
		||||
public class AiKnowledgeSegmentController {
 | 
			
		||||
 | 
			
		||||
    @Resource
 | 
			
		||||
    private AiKnowledgeSegmentService segmentService;
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/page")
 | 
			
		||||
    @Operation(summary = "获取段落分页")
 | 
			
		||||
    public CommonResult<PageResult<AiKnowledgeSegmentRespVO>> getKnowledgeSegmentPageMy(@Validated AiKnowledgeSegmentPageReqVO pageReqVO) {
 | 
			
		||||
        PageResult<AiKnowledgeSegmentDO> pageResult = segmentService.getKnowledgeSegmentPage(pageReqVO);
 | 
			
		||||
        return success(BeanUtils.toBean(pageResult, AiKnowledgeSegmentRespVO.class));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @PutMapping("/update")
 | 
			
		||||
    @Operation(summary = "更新段落内容")
 | 
			
		||||
    public CommonResult<Boolean> updateKnowledgeSegment(@Validated @RequestBody AiKnowledgeSegmentUpdateReqVO reqVO) {
 | 
			
		||||
        segmentService.updateKnowledgeSegment(reqVO);
 | 
			
		||||
        return success(true);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PutMapping("/update-status")
 | 
			
		||||
    @Operation(summary = "启禁用段落内容")
 | 
			
		||||
    public CommonResult<Boolean> updateKnowledgeSegmentStatus(@Validated @RequestBody AiKnowledgeSegmentUpdateStatusReqVO reqVO) {
 | 
			
		||||
        segmentService.updateKnowledgeSegmentStatus(reqVO);
 | 
			
		||||
        return success(true);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,13 @@
 | 
			
		||||
package cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.document;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
@Schema(description = "管理后台 - AI 知识库-文档 分页 Request VO")
 | 
			
		||||
@Data
 | 
			
		||||
public class AiKnowledgeDocumentPageReqVO extends PageParam {
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "文档名称", example = "Java 开发手册")
 | 
			
		||||
    private String name;
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,37 @@
 | 
			
		||||
package cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.document;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
@Schema(description = "管理后台 - AI 知识库-文档 Response VO")
 | 
			
		||||
@Data
 | 
			
		||||
public class AiKnowledgeDocumentRespVO extends PageParam {
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "24790")
 | 
			
		||||
    private Long id;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "知识库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "24790")
 | 
			
		||||
    private Long knowledgeId;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "Java 开发手册")
 | 
			
		||||
    private String name;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "内容", example = "Java 是一门面向对象的语言.....")
 | 
			
		||||
    private String content;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "文档 url", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://doc.iocoder.cn")
 | 
			
		||||
    private String url;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "token 数量", example = "1024")
 | 
			
		||||
    private Integer tokens;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "字符数", example = "1008")
 | 
			
		||||
    private Integer wordCount;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "切片状态", example = "1")
 | 
			
		||||
    private Integer sliceStatus;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "文档状态", example = "1")
 | 
			
		||||
    private Integer status;
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,23 @@
 | 
			
		||||
package cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.document;
 | 
			
		||||
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import jakarta.validation.constraints.NotNull;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@Schema(description = "管理后台 - AI 更新 知识库-文档 Request VO")
 | 
			
		||||
@Data
 | 
			
		||||
public class AiKnowledgeDocumentUpdateReqVO {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "15583")
 | 
			
		||||
    @NotNull(message = "编号不能为空")
 | 
			
		||||
    private Long id;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "是否启用", example = "1")
 | 
			
		||||
    private Integer status;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "名称", example = "Java 开发手册")
 | 
			
		||||
    private String name;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
package cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo;
 | 
			
		||||
package cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.knowledge;
 | 
			
		||||
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import jakarta.validation.constraints.NotBlank;
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
package cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo;
 | 
			
		||||
package cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.knowledge;
 | 
			
		||||
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import jakarta.validation.constraints.NotBlank;
 | 
			
		||||
@@ -6,10 +6,8 @@ import jakarta.validation.constraints.NotNull;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import org.hibernate.validator.constraints.URL;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author xiaoxin
 | 
			
		||||
 */
 | 
			
		||||
@Schema(description = "管理后台 - AI 知识库【创建文档】 Request VO")
 | 
			
		||||
 | 
			
		||||
@Schema(description = "管理后台 - AI 知识库创建【文档】 Request VO")
 | 
			
		||||
@Data
 | 
			
		||||
public class AiKnowledgeDocumentCreateReqVO {
 | 
			
		||||
 | 
			
		||||
@@ -0,0 +1,25 @@
 | 
			
		||||
package cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.knowledge;
 | 
			
		||||
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@Schema(description = "管理后台 - AI 知识库 Response VO")
 | 
			
		||||
@Data
 | 
			
		||||
public class AiKnowledgeRespVO {
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "24790")
 | 
			
		||||
    private Long id;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "知识库名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "ruoyi-vue-pro 用户指南")
 | 
			
		||||
    private String name;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "知识库描述", example = "ruoyi-vue-pro 用户指南")
 | 
			
		||||
    private String description;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "模型编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "14")
 | 
			
		||||
    private Long modelId;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "模型标识", example = "qwen-72b-chat")
 | 
			
		||||
    private String model;
 | 
			
		||||
}
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
package cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo;
 | 
			
		||||
package cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.knowledge;
 | 
			
		||||
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import jakarta.validation.constraints.NotBlank;
 | 
			
		||||
@@ -7,7 +7,7 @@ import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
@Schema(description = "管理后台 - AI 知识库创建【我的】 Request VO")
 | 
			
		||||
@Schema(description = "管理后台 - AI 知识库更新【我的】 Request VO")
 | 
			
		||||
@Data
 | 
			
		||||
public class AiKnowledgeUpdateMyReqVO {
 | 
			
		||||
 | 
			
		||||
@@ -0,0 +1,21 @@
 | 
			
		||||
package cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.segment;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
@Schema(description = "管理后台 - AI 知识库分页 Request VO")
 | 
			
		||||
@Data
 | 
			
		||||
public class AiKnowledgeSegmentPageReqVO extends PageParam {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "分段状态", example = "1")
 | 
			
		||||
    private Integer status;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "文档编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
 | 
			
		||||
    private Integer documentId;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "分段内容关键字", example = "Java 开发")
 | 
			
		||||
    private String keyword;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,33 @@
 | 
			
		||||
package cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.segment;
 | 
			
		||||
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
@Schema(description = "管理后台 - AI 知识库-文档 Response VO")
 | 
			
		||||
@Data
 | 
			
		||||
public class AiKnowledgeSegmentRespVO {
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "24790")
 | 
			
		||||
    private Long id;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "文档编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "24790")
 | 
			
		||||
    private Long documentId;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "知识库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "24790")
 | 
			
		||||
    private Long knowledgeId;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "向量库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1858496a-1dde-4edf-a43e-0aed08f37f8c")
 | 
			
		||||
    private String vectorId;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "切片内容", requiredMode = Schema.RequiredMode.REQUIRED, example = "Java 开发手册")
 | 
			
		||||
    private String content;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "token 数量", example = "1024")
 | 
			
		||||
    private Integer tokens;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "字符数", example = "1008")
 | 
			
		||||
    private Integer wordCount;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "文档状态", example = "1")
 | 
			
		||||
    private Integer status;
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,17 @@
 | 
			
		||||
package cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.segment;
 | 
			
		||||
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@Schema(description = "管理后台 - AI 更新 知识库-段落 request VO")
 | 
			
		||||
@Data
 | 
			
		||||
public class AiKnowledgeSegmentUpdateReqVO {
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "24790")
 | 
			
		||||
    private Long id;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "切片内容", requiredMode = Schema.RequiredMode.REQUIRED, example = "Java 开发手册")
 | 
			
		||||
    private String content;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,17 @@
 | 
			
		||||
package cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.segment;
 | 
			
		||||
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@Schema(description = "管理后台 - AI 更新 知识库-段落 request VO")
 | 
			
		||||
@Data
 | 
			
		||||
public class AiKnowledgeSegmentUpdateStatusReqVO {
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "24790")
 | 
			
		||||
    private Long id;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
 | 
			
		||||
    private Integer status;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +1,9 @@
 | 
			
		||||
package cn.iocoder.yudao.module.ai.dal.mysql.knowledge;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.document.AiKnowledgeDocumentPageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.dal.dataobject.knowledge.AiKnowledgeDocumentDO;
 | 
			
		||||
import org.apache.ibatis.annotations.Mapper;
 | 
			
		||||
 | 
			
		||||
@@ -11,4 +14,11 @@ import org.apache.ibatis.annotations.Mapper;
 | 
			
		||||
 */
 | 
			
		||||
@Mapper
 | 
			
		||||
public interface AiKnowledgeDocumentMapper extends BaseMapperX<AiKnowledgeDocumentDO> {
 | 
			
		||||
 | 
			
		||||
    default PageResult<AiKnowledgeDocumentDO> selectPage(AiKnowledgeDocumentPageReqVO reqVO) {
 | 
			
		||||
        return selectPage(reqVO, new LambdaQueryWrapperX<AiKnowledgeDocumentDO>()
 | 
			
		||||
                .likeIfPresent(AiKnowledgeDocumentDO::getName, reqVO.getName())
 | 
			
		||||
                .orderByDesc(AiKnowledgeDocumentDO::getId));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,10 @@
 | 
			
		||||
package cn.iocoder.yudao.module.ai.dal.mysql.knowledge;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.dal.dataobject.knowledge.AiKnowledgeDO;
 | 
			
		||||
import org.apache.ibatis.annotations.Mapper;
 | 
			
		||||
 | 
			
		||||
@@ -11,4 +15,11 @@ import org.apache.ibatis.annotations.Mapper;
 | 
			
		||||
 */
 | 
			
		||||
@Mapper
 | 
			
		||||
public interface AiKnowledgeMapper extends BaseMapperX<AiKnowledgeDO> {
 | 
			
		||||
 | 
			
		||||
    default PageResult<AiKnowledgeDO> selectPageByMy(Long userId, PageParam pageReqVO) {
 | 
			
		||||
        return selectPage(pageReqVO, new LambdaQueryWrapperX<AiKnowledgeDO>()
 | 
			
		||||
                .eq(AiKnowledgeDO::getUserId, userId)
 | 
			
		||||
                .eq(AiKnowledgeDO::getStatus, CommonStatusEnum.ENABLE.getStatus())
 | 
			
		||||
                .orderByDesc(AiKnowledgeDO::getId));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,9 @@
 | 
			
		||||
package cn.iocoder.yudao.module.ai.dal.mysql.knowledge;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.segment.AiKnowledgeSegmentPageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.dal.dataobject.knowledge.AiKnowledgeSegmentDO;
 | 
			
		||||
import org.apache.ibatis.annotations.Mapper;
 | 
			
		||||
 | 
			
		||||
@@ -11,4 +14,12 @@ import org.apache.ibatis.annotations.Mapper;
 | 
			
		||||
 */
 | 
			
		||||
@Mapper
 | 
			
		||||
public interface AiKnowledgeSegmentMapper extends BaseMapperX<AiKnowledgeSegmentDO> {
 | 
			
		||||
 | 
			
		||||
    default PageResult<AiKnowledgeSegmentDO> selectPage(AiKnowledgeSegmentPageReqVO reqVO) {
 | 
			
		||||
        return selectPage(reqVO, new LambdaQueryWrapperX<AiKnowledgeSegmentDO>()
 | 
			
		||||
                .eq(AiKnowledgeSegmentDO::getDocumentId, reqVO.getDocumentId())
 | 
			
		||||
                .eqIfPresent(AiKnowledgeSegmentDO::getStatus, reqVO.getStatus())
 | 
			
		||||
                .likeIfPresent(AiKnowledgeSegmentDO::getContent, reqVO.getKeyword())
 | 
			
		||||
                .orderByDesc(AiKnowledgeSegmentDO::getId));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,10 @@
 | 
			
		||||
package cn.iocoder.yudao.module.ai.service.knowledge;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.AiKnowledgeDocumentCreateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.document.AiKnowledgeDocumentPageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.document.AiKnowledgeDocumentUpdateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.knowledge.AiKnowledgeDocumentCreateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.dal.dataobject.knowledge.AiKnowledgeDocumentDO;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * AI 知识库-文档 Service 接口
 | 
			
		||||
@@ -17,4 +21,19 @@ public interface AiKnowledgeDocumentService {
 | 
			
		||||
     */
 | 
			
		||||
    Long createKnowledgeDocument(AiKnowledgeDocumentCreateReqVO createReqVO);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获取文档分页
 | 
			
		||||
     *
 | 
			
		||||
     * @param pageReqVO 分页参数
 | 
			
		||||
     * @return 文档分页
 | 
			
		||||
     */
 | 
			
		||||
    PageResult<AiKnowledgeDocumentDO> getKnowledgeDocumentPage(AiKnowledgeDocumentPageReqVO pageReqVO);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 更新文档
 | 
			
		||||
     *
 | 
			
		||||
     * @param reqVO 更新信息
 | 
			
		||||
     */
 | 
			
		||||
    void updateKnowledgeDocument(AiKnowledgeDocumentUpdateReqVO reqVO);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -3,9 +3,12 @@ package cn.iocoder.yudao.module.ai.service.knowledge;
 | 
			
		||||
import cn.hutool.core.collection.CollUtil;
 | 
			
		||||
import cn.hutool.http.HttpUtil;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.AiKnowledgeDocumentCreateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.document.AiKnowledgeDocumentPageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.document.AiKnowledgeDocumentUpdateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.knowledge.AiKnowledgeDocumentCreateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.dal.dataobject.knowledge.AiKnowledgeDO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.dal.dataobject.knowledge.AiKnowledgeDocumentDO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.dal.dataobject.knowledge.AiKnowledgeSegmentDO;
 | 
			
		||||
@@ -29,6 +32,9 @@ import org.springframework.transaction.annotation.Transactional;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 | 
			
		||||
import static cn.iocoder.yudao.module.ai.enums.ErrorCodeConstants.KNOWLEDGE_DOCUMENT_NOT_EXISTS;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * AI 知识库-文档 Service 实现类
 | 
			
		||||
 *
 | 
			
		||||
@@ -104,6 +110,32 @@ public class AiKnowledgeDocumentServiceImpl implements AiKnowledgeDocumentServic
 | 
			
		||||
        return documentId;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public PageResult<AiKnowledgeDocumentDO> getKnowledgeDocumentPage(AiKnowledgeDocumentPageReqVO pageReqVO) {
 | 
			
		||||
        return documentMapper.selectPage(pageReqVO);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void updateKnowledgeDocument(AiKnowledgeDocumentUpdateReqVO reqVO) {
 | 
			
		||||
        validateKnowledgeDocumentExists(reqVO.getId());
 | 
			
		||||
        AiKnowledgeDocumentDO document = BeanUtils.toBean(reqVO, AiKnowledgeDocumentDO.class);
 | 
			
		||||
        documentMapper.updateById(document);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 校验文档是否存在
 | 
			
		||||
     *
 | 
			
		||||
     * @param id 文档编号
 | 
			
		||||
     * @return 文档信息
 | 
			
		||||
     */
 | 
			
		||||
    private AiKnowledgeDocumentDO validateKnowledgeDocumentExists(Long id) {
 | 
			
		||||
        AiKnowledgeDocumentDO knowledgeDocument = documentMapper.selectById(id);
 | 
			
		||||
        if (knowledgeDocument == null) {
 | 
			
		||||
            throw exception(KNOWLEDGE_DOCUMENT_NOT_EXISTS);
 | 
			
		||||
        }
 | 
			
		||||
        return knowledgeDocument;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private org.springframework.core.io.Resource downloadFile(String url) {
 | 
			
		||||
        try {
 | 
			
		||||
            byte[] bytes = HttpUtil.downloadBytes(url);
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,11 @@
 | 
			
		||||
package cn.iocoder.yudao.module.ai.service.knowledge;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.segment.AiKnowledgeSegmentPageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.segment.AiKnowledgeSegmentUpdateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.segment.AiKnowledgeSegmentUpdateStatusReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.dal.dataobject.knowledge.AiKnowledgeSegmentDO;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * AI 知识库分片 Service 接口
 | 
			
		||||
 *
 | 
			
		||||
@@ -7,4 +13,25 @@ package cn.iocoder.yudao.module.ai.service.knowledge;
 | 
			
		||||
 */
 | 
			
		||||
public interface AiKnowledgeSegmentService {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获取段落分页
 | 
			
		||||
     *
 | 
			
		||||
     * @param pageReqVO 分页查询
 | 
			
		||||
     * @return 文档分页
 | 
			
		||||
     */
 | 
			
		||||
    PageResult<AiKnowledgeSegmentDO> getKnowledgeSegmentPage(AiKnowledgeSegmentPageReqVO pageReqVO);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 更新段落内容
 | 
			
		||||
     *
 | 
			
		||||
     * @param reqVO 更新内容
 | 
			
		||||
     */
 | 
			
		||||
    void updateKnowledgeSegment(AiKnowledgeSegmentUpdateReqVO reqVO);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 更新状态
 | 
			
		||||
     *
 | 
			
		||||
     * @param reqVO 更新内容
 | 
			
		||||
     */
 | 
			
		||||
    void updateKnowledgeSegmentStatus(AiKnowledgeSegmentUpdateStatusReqVO reqVO);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,13 @@
 | 
			
		||||
package cn.iocoder.yudao.module.ai.service.knowledge;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.segment.AiKnowledgeSegmentPageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.segment.AiKnowledgeSegmentUpdateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.segment.AiKnowledgeSegmentUpdateStatusReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.dal.dataobject.knowledge.AiKnowledgeSegmentDO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.dal.mysql.knowledge.AiKnowledgeSegmentMapper;
 | 
			
		||||
import jakarta.annotation.Resource;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
 | 
			
		||||
@@ -12,4 +20,23 @@ import org.springframework.stereotype.Service;
 | 
			
		||||
@Slf4j
 | 
			
		||||
public class AiKnowledgeSegmentServiceImpl implements AiKnowledgeSegmentService {
 | 
			
		||||
 | 
			
		||||
    @Resource
 | 
			
		||||
    private AiKnowledgeSegmentMapper segmentMapper;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public PageResult<AiKnowledgeSegmentDO> getKnowledgeSegmentPage(AiKnowledgeSegmentPageReqVO pageReqVO) {
 | 
			
		||||
        return segmentMapper.selectPage(pageReqVO);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void updateKnowledgeSegment(AiKnowledgeSegmentUpdateReqVO reqVO) {
 | 
			
		||||
        segmentMapper.updateById(BeanUtils.toBean(reqVO, AiKnowledgeSegmentDO.class));
 | 
			
		||||
        // TODO @xin 重新向量化
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void updateKnowledgeSegmentStatus(AiKnowledgeSegmentUpdateStatusReqVO reqVO) {
 | 
			
		||||
        segmentMapper.updateById(BeanUtils.toBean(reqVO, AiKnowledgeSegmentDO.class));
 | 
			
		||||
        // TODO @xin 1.禁用删除向量 2.启用重新向量化
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,9 @@
 | 
			
		||||
package cn.iocoder.yudao.module.ai.service.knowledge;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.AiKnowledgeCreateMyReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.AiKnowledgeUpdateMyReqVO;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.knowledge.AiKnowledgeCreateMyReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.knowledge.AiKnowledgeUpdateMyReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.dal.dataobject.knowledge.AiKnowledgeDO;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -37,4 +39,12 @@ public interface AiKnowledgeService {
 | 
			
		||||
     */
 | 
			
		||||
    AiKnowledgeDO validateKnowledgeExists(Long id);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得【我的】知识库分页
 | 
			
		||||
     *
 | 
			
		||||
     * @param userId 用户编号
 | 
			
		||||
     * @param pageReqVO   分页查询
 | 
			
		||||
     * @return 知识库分页
 | 
			
		||||
     */
 | 
			
		||||
    PageResult<AiKnowledgeDO> getKnowledgePageMy(Long userId, PageParam pageReqVO);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,9 +2,11 @@ package cn.iocoder.yudao.module.ai.service.knowledge;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.util.ObjUtil;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.AiKnowledgeCreateMyReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.AiKnowledgeUpdateMyReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.knowledge.AiKnowledgeCreateMyReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.knowledge.AiKnowledgeUpdateMyReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.dal.dataobject.knowledge.AiKnowledgeDO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatModelDO;
 | 
			
		||||
import cn.iocoder.yudao.module.ai.dal.mysql.knowledge.AiKnowledgeMapper;
 | 
			
		||||
@@ -68,4 +70,9 @@ public class AiKnowledgeServiceImpl implements AiKnowledgeService {
 | 
			
		||||
        return knowledgeBase;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public PageResult<AiKnowledgeDO> getKnowledgePageMy(Long userId, PageParam pageReqVO) {
 | 
			
		||||
        return knowledgeMapper.selectPageByMy(userId, pageReqVO);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user