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 }