Files
ai-agent/workflow/service/skill/skill_user_service.go
qhd 7c26914353 feat: 新增工作流执行模块
新增流程执行记录的实体、DTO、DAO、控制器和服务层,支持工作流的执行、回调及结果树状列表查询;同时更新服务名称为 ai-agent。
2026-05-12 13:34:28 +08:00

131 lines
3.1 KiB
Go

package skill
import (
skillDao "ai-agent/workflow/dao/skill"
skillDto "ai-agent/workflow/model/dto/skill"
"ai-agent/workflow/model/entity"
"context"
commonHttp "gitea.com/red-future/common/http"
"gitea.com/red-future/common/utils"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/util/gconv"
)
var SkillUserService = &skillUserService{}
type skillUserService struct{}
// IsAdmin 调用admin-go服务检查是否是管理员
func IsAdmin(ctx context.Context) (res bool, err error) {
headers := make(map[string]string)
if r := g.RequestFromCtx(ctx); r != nil {
for k, v := range r.Request.Header {
if len(v) > 0 {
headers[k] = v[0]
}
}
}
var r = make(map[string]bool)
if err = commonHttp.Get(ctx, "admin-go/api/v1/system/user/checkIsSuperAdmin", headers, &r); err != nil {
return false, err
}
return r["isSuperAdmin"], err
}
func (s *skillUserService) Create(ctx context.Context, req *skillDto.CreateSkillUserReq) (res *skillDto.CreateSkillUserRes, err error) {
admin, err := IsAdmin(ctx)
if err != nil {
return
}
var id int64
if admin {
id, err = skillDao.SkillTemplateDao.Insert(ctx, &skillDto.CreateSkillTemplateReq{
Name: req.Name,
Description: req.Description,
Category: req.Category,
FileName: req.FileName,
FileUrl: req.FileUrl,
})
} else {
id, err = skillDao.SkillUserDao.Insert(ctx, req)
}
return &skillDto.CreateSkillUserRes{Id: id}, err
}
func (s *skillUserService) Delete(ctx context.Context, req *skillDto.DeleteSkillUserReq) (err error) {
admin, err := IsAdmin(ctx)
if err != nil {
return
}
if admin {
_, err = skillDao.SkillTemplateDao.Delete(ctx, &skillDto.DeleteSkillTemplateReq{
Id: req.Id,
})
} else {
_, err = skillDao.SkillUserDao.Delete(ctx, req)
}
return
}
func (s *skillUserService) List(ctx context.Context, req *skillDto.ListSkillReq) (res *skillDto.ListSkillUserRes, err error) {
admin, err := IsAdmin(ctx)
if err != nil {
return
}
if admin {
var total int
var list []*entity.SkillTemplate
list, total, err = skillDao.SkillTemplateDao.List(ctx, &skillDto.ListSkillTemplateReq{
Keyword: req.Keyword,
Page: req.Page,
})
if err != nil {
return nil, err
}
res = &skillDto.ListSkillUserRes{
Total: total,
}
err = gconv.Struct(list, &res.List)
return
}
user, err := utils.GetUserInfo(ctx)
if err != nil {
return
}
req.Creator = user.UserName
list, total, err := skillDao.SkillUserDao.List(ctx, &skillDto.ListSkillUserReq{
Keyword: req.Keyword,
Creator: req.Creator,
Page: req.Page,
})
if err != nil {
return nil, err
}
res = &skillDto.ListSkillUserRes{
Total: total,
}
err = gconv.Struct(list, &res.List)
return
}
func (s *skillUserService) ListUser(ctx context.Context, req *skillDto.ListSkillUserReq) (res *skillDto.ListSkillUserRes, err error) {
user, err := utils.GetUserInfo(ctx)
if err != nil {
return
}
req.Creator = user.UserName
list, total, err := skillDao.SkillUserDao.List(ctx, req)
if err != nil {
return nil, err
}
res = &skillDto.ListSkillUserRes{
Total: total,
}
err = gconv.Struct(list, &res.List)
return
}