2026-06-10 14:23:55 +08:00
|
|
|
|
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"
|
|
|
|
|
|
|
2026-06-11 09:16:53 +08:00
|
|
|
|
"gitea.redpowerfuture.com/red-future/common/utils"
|
2026-06-10 14:23:55 +08:00
|
|
|
|
"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
|
|
|
|
|
|
}
|