mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-10-31 18:28:43 +08:00 
			
		
		
		
	【新增】AI 知识库: 增加部分管理类接口
This commit is contained in:
		| @@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.common.exception.ErrorCode; | ||||
|  | ||||
| /** | ||||
|  * AI 错误码枚举类 | ||||
|  * | ||||
|  * <p> | ||||
|  * ai 系统,使用 1-040-000-000 段 | ||||
|  */ | ||||
| public interface ErrorCodeConstants { | ||||
| @@ -55,5 +55,7 @@ public interface ErrorCodeConstants { | ||||
|  | ||||
|     // ========== API 知识库 1-022-008-000 ========== | ||||
|     ErrorCode KNOWLEDGE_NOT_EXISTS = new ErrorCode(1_022_008_000, "知识库不存在!"); | ||||
|     ErrorCode KNOWLEDGE_DOCUMENT_NOT_EXISTS = new ErrorCode(1_022_008_001, "文档不存在!"); | ||||
|     ErrorCode KNOWLEDGE_SEGMENT_NOT_EXISTS = new ErrorCode(1_022_008_002, "段落不存在!"); | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -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
	 xiaoxin
					xiaoxin