feat: 百科知识库存入向量
This commit is contained in:
+17
-2
@@ -11,13 +11,15 @@ import (
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
var aiRagService = AiRagService{}
|
||||
|
||||
type WikiService struct{}
|
||||
|
||||
var WikiServiceApp = new(WikiClassService)
|
||||
|
||||
// CreateWiki 创建百科
|
||||
func (s *WikiService) CreateWiki(req plantReq.CreateWiki) error {
|
||||
return global.DB.Transaction(func(tx *gorm.DB) error {
|
||||
err := global.DB.Transaction(func(tx *gorm.DB) error {
|
||||
//1.先模糊查询name是否存在 如果存在 则返回错误
|
||||
if !errors.Is(tx.Where("name like ?", "%"+req.Name+"%").First(&plant.Wiki{}).Error, gorm.ErrRecordNotFound) {
|
||||
return errors.New("植物已经存在")
|
||||
@@ -117,6 +119,14 @@ func (s *WikiService) CreateWiki(req plantReq.CreateWiki) error {
|
||||
|
||||
return nil
|
||||
})
|
||||
if err == nil {
|
||||
// 异步同步到 Qdrant(事务提交后,wiki.Id 已可用)
|
||||
var created plant.Wiki
|
||||
if dbErr := global.DB.Where("name = ?", req.Name).First(&created).Error; dbErr == nil {
|
||||
aiRagService.SyncSingleWikiAsync(created.Id)
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
// UpdateWiki 修改百科
|
||||
@@ -288,7 +298,7 @@ func (s *WikiService) UploadImg(req common.UploadOss) error {
|
||||
|
||||
// DeleteWiki 删除百科
|
||||
func (s *WikiService) DeleteWiki(req common.IdsReq) error {
|
||||
return global.DB.Transaction(func(tx *gorm.DB) error {
|
||||
err := global.DB.Transaction(func(tx *gorm.DB) error {
|
||||
var imgIds []string
|
||||
tx.Table("sundynix_wiki_oss").Where("wiki_id IN ?", req.Ids).Pluck("oss_id", &imgIds)
|
||||
// 3. 物理删除图片记录本身
|
||||
@@ -311,4 +321,9 @@ func (s *WikiService) DeleteWiki(req common.IdsReq) error {
|
||||
//删除百科本身
|
||||
return tx.Unscoped().Where("id IN ?", req.Ids).Delete(&plant.Wiki{}).Error
|
||||
})
|
||||
if err == nil {
|
||||
// 异步清理 Qdrant 向量点位
|
||||
aiRagService.DeleteFromQdrantBatch(req.Ids)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user