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 }