🎨 新增AI客服相关接口

This commit is contained in:
2023-11-10 09:30:29 +08:00
parent 8c5386cb2c
commit 1cf8afb7ba
25 changed files with 803 additions and 15 deletions

32
service/app/ai_kefu.go Normal file
View File

@@ -0,0 +1,32 @@
package app
import (
"go.uber.org/zap"
"miniapp/global"
"miniapp/model/app/request"
"miniapp/model/system"
)
type AiKefuService struct{}
// MatchKeywordReplyContent 匹配关键词回复内容
func (a *AiKefuService) MatchKeywordReplyContent(msg request.Msg) (kf system.Aikefu, err error) {
math := global.GVA_Kp.ExtractKeywords(msg.Msg)
if len(math) == 0 {
return
}
err = global.GVA_DB.Where("key_word like ? ", "%"+math[0].MatchString()+"%").First(&kf).Error
return
}
func (a *AiKefuService) AddKeyWord() {
var keyWords []system.Aikefu
err := global.GVA_DB.Find(&keyWords).Error
if err != nil {
global.GVA_LOG.Error("初始化分词器时查询关键词失败:", zap.Error(err))
}
for _, keyWord := range keyWords {
global.GVA_Kp.AddKeyWord(keyWord.KeyWord)
global.GVA_LOG.Info("初始化分词器时添加关键词", zap.String("keyWord", keyWord.KeyWord))
}
}

View File

@@ -6,4 +6,5 @@ type ServiceGroup struct {
FavoriteService
VisionService
TodesService
AiKefuService
}

View File

@@ -20,4 +20,5 @@ type ServiceGroup struct {
HospitalService
BannerService
ArticleService
AiKefuService
}

View File

@@ -0,0 +1,47 @@
package system
import (
"miniapp/global"
"miniapp/model/common/request"
"miniapp/model/system"
)
type AiKefuService struct{}
// CreateAiKefu 创建
func (a *AiKefuService) CreateAiKefu(p *system.Aikefu) (err error) {
err = global.GVA_DB.Create(p).Error
if err == nil {
global.GVA_Kp.AddKeyWord(p.KeyWord)
}
return
}
// UpdateAiKefu 更新
func (a *AiKefuService) UpdateAiKefu(p *system.Aikefu) (err error) {
err = global.GVA_DB.Save(p).Error
return
}
// DeleteAiKefu 删除
func (a *AiKefuService) DeleteAiKefu(p *system.Aikefu) (err error) {
err = global.GVA_DB.Delete(p).Error
return
}
// GetAiKefuList 获取列表
func (a *AiKefuService) GetAiKefuList(info request.PageInfo) (list []system.Aikefu, total int64, err error) {
db := global.GVA_DB.Model(&system.Aikefu{})
err = db.Count(&total).Error
if err != nil {
return
}
err = db.Offset((info.Page - 1) * info.PageSize).Limit(info.PageSize).Find(&list).Error
return
}
// GetAiKefuById 根据id获取
func (a *AiKefuService) GetAiKefuById(id string) (p system.Aikefu, err error) {
err = global.GVA_DB.Where("id = ?", id).First(&p).Error
return
}