Files
ai-agent/workflow/service/node/node_prompt_service.go

124 lines
3.2 KiB
Go
Raw Normal View History

package node
import (
"ai-agent/workflow/consts/node"
nodeDao "ai-agent/workflow/dao/node"
nodeDto "ai-agent/workflow/model/dto/node"
"ai-agent/workflow/service"
"context"
"gitea.redpowerfuture.com/red-future/common/utils"
"github.com/gogf/gf/v2/frame/g"
)
var NodePromptService = &nodePromptService{}
type nodePromptService struct{}
// Create 创建节点提示词
func (s *nodePromptService) Create(ctx context.Context, req *nodeDto.CreateNodePromptReq) (res *nodeDto.CreateNodePromptRes, err error) {
user, err := utils.GetUserInfo(ctx)
if err != nil {
return nil, err
}
get, err := nodeDao.NodePromptDao.Get(ctx, &nodeDto.GetNodePromptReq{Prompt: req.Prompt, Creator: user.UserName})
if err != nil {
return
}
if g.IsEmpty(get) {
var isAdmin bool
isAdmin, err = service.UtilService.IsAdmin(ctx)
if err != nil {
return
}
if isAdmin {
req.SourceType = node.SourceTypeSystem.Code()
} else {
req.SourceType = node.SourceTypeUser.Code()
}
var id int64
id, err = nodeDao.NodePromptDao.Insert(ctx, req)
if err != nil {
return
}
return &nodeDto.CreateNodePromptRes{Id: id}, err
}
return
}
// Update 更新节点提示词
func (s *nodePromptService) Update(ctx context.Context, req *nodeDto.UpdateNodePromptReq) (err error) {
get, err := nodeDao.NodePromptDao.Get(ctx, &nodeDto.GetNodePromptReq{Id: req.Id})
if err != nil {
return
}
isAdmin, err := service.UtilService.IsAdmin(ctx)
if err != nil {
return
}
if !isAdmin && get.SourceType == node.SourceTypeSystem.Code() {
_, err = s.Create(ctx, &nodeDto.CreateNodePromptReq{
NodeType: req.NodeType,
Prompt: req.Prompt,
})
} else {
_, err = nodeDao.NodePromptDao.Update(ctx, req)
}
return
}
// Delete 删除节点提示词
func (s *nodePromptService) Delete(ctx context.Context, req *nodeDto.DeleteNodePromptReq) (err error) {
_, err = nodeDao.NodePromptDao.Delete(ctx, req)
return
}
// GetById 根据ID查询节点提示词
func (s *nodePromptService) GetById(ctx context.Context, req *nodeDto.GetNodePromptReq) (res *nodeDto.NodePromptResp, err error) {
r, err := nodeDao.NodePromptDao.Get(ctx, req)
if err != nil {
return nil, err
}
res = &nodeDto.NodePromptResp{
NodePrompt: r,
}
return
}
// ListMy 查询当前创建人自己创建的提示词列表
func (s *nodePromptService) ListMy(ctx context.Context, req *nodeDto.ListMyNodePromptReq) (*nodeDto.ListNodePromptResp, error) {
user, err := utils.GetUserInfo(ctx)
if err != nil {
return nil, err
}
req.Creator = user.UserName
list, total, err := nodeDao.NodePromptDao.ListByOnlyCreator(ctx, req)
if err != nil {
return nil, err
}
return &nodeDto.ListNodePromptResp{
List: list,
Total: total,
}, nil
}
// ListWithSystem 查询当前创建人+系统的提示词列表
func (s *nodePromptService) ListWithSystem(ctx context.Context, req *nodeDto.ListNodePromptReq) (*nodeDto.ListNodePromptResp, error) {
user, err := utils.GetUserInfo(ctx)
if err != nil {
return nil, err
}
// 如果请求中没有传creator使用当前用户
if g.IsEmpty(req.Creator) {
req.Creator = user.UserName
}
list, total, err := nodeDao.NodePromptDao.ListByCreator(ctx, req)
if err != nil {
return nil, err
}
return &nodeDto.ListNodePromptResp{
List: list,
Total: total,
}, nil
}