resolveKnowledgeBaseIDs 解析知识库ID,支持 "all" 参数和加密的hashID
(eid int64, libraryHashIDs []string)
| 494 | |
| 495 | // resolveKnowledgeBaseIDs 解析知识库ID,支持 "all" 参数和加密的hashID |
| 496 | func resolveKnowledgeBaseIDs(eid int64, libraryHashIDs []string) ([]int64, error) { |
| 497 | // 检查是否包含 "all" 标识 |
| 498 | for _, hashID := range libraryHashIDs { |
| 499 | if hashID == "all" || hashID == "-1" { |
| 500 | // 获取所有活跃状态的知识库 |
| 501 | libraries, err := model.GetLibrariesByEid(eid, nil) |
| 502 | if err != nil { |
| 503 | return nil, fmt.Errorf("获取知识库列表失败: %v", err) |
| 504 | } |
| 505 | var allIDs []int64 |
| 506 | for _, lib := range libraries { |
| 507 | allIDs = append(allIDs, lib.ID) |
| 508 | } |
| 509 | return allIDs, nil |
| 510 | } |
| 511 | } |
| 512 | |
| 513 | // 解析加密的hashID |
| 514 | var resolvedIDs []int64 |
| 515 | for _, hashID := range libraryHashIDs { |
| 516 | // 尝试从hashID解码获取原始ID |
| 517 | if originalID, err := hashids.Decode(hashID); err == nil { |
| 518 | resolvedIDs = append(resolvedIDs, originalID) |
| 519 | } else { |
| 520 | // 如果解码失败,尝试直接解析为数字(向后兼容) |
| 521 | if id, err := strconv.ParseInt(hashID, 10, 64); err == nil { |
| 522 | resolvedIDs = append(resolvedIDs, id) |
| 523 | } else { |
| 524 | return nil, fmt.Errorf("无法解析知识库ID: %s", hashID) |
| 525 | } |
| 526 | } |
| 527 | } |
| 528 | |
| 529 | return resolvedIDs, nil |
| 530 | } |
| 531 | |
| 532 | // resolveFileIDs 解析文件ID,支持加密的hashID |
| 533 | func resolveFileIDs(eid int64, fileHashIDs []string) ([]int64, error) { |
no test coverage detected