AdminUpdateSkillLibrary godoc @Summary 后台更新技能信息 @Description 更新技能基础信息、排序、启停状态、权限分组配置及环境变量 @Tags 技能库-后台 @Accept json @Produce json @Security BearerAuth @Param id path int true "技能ID" @Param request body AdminUpdateSkillRequest true "更新参数" @Success 200 {object} model.CommonResponse @Router /api/admin/
(c *gin.Context)
| 398 | // @Success 200 {object} model.CommonResponse |
| 399 | // @Router /api/admin/skill-library/{id} [put] |
| 400 | func AdminUpdateSkillLibrary(c *gin.Context) { |
| 401 | skillID, err := strconv.ParseInt(c.Param("id"), 10, 64) |
| 402 | if err != nil || skillID <= 0 { |
| 403 | c.JSON(http.StatusBadRequest, model.ParamError.ToResponse(nil)) |
| 404 | return |
| 405 | } |
| 406 | |
| 407 | var req AdminUpdateSkillRequest |
| 408 | if err := c.ShouldBindJSON(&req); err != nil { |
| 409 | c.JSON(http.StatusBadRequest, model.ParamError.ToErrorResponse(err)) |
| 410 | return |
| 411 | } |
| 412 | |
| 413 | eid := config.GetEID(c) |
| 414 | svc := service.NewSkillLibraryService() |
| 415 | // 只有当至少有一个分组字段不为空时,才更新权限分组 |
| 416 | // 否则传 nil,表示不更新权限分组(避免误清空) |
| 417 | var allGroupIDs []int64 |
| 418 | if len(req.GroupIDs) > 0 || len(req.SubscriptionGroupIDs) > 0 || len(req.UserGroupIDs) > 0 { |
| 419 | allGroupIDs = make([]int64, 0, len(req.GroupIDs)+len(req.SubscriptionGroupIDs)+len(req.UserGroupIDs)) |
| 420 | allGroupIDs = append(allGroupIDs, req.GroupIDs...) |
| 421 | allGroupIDs = append(allGroupIDs, req.SubscriptionGroupIDs...) |
| 422 | allGroupIDs = append(allGroupIDs, req.UserGroupIDs...) |
| 423 | } |
| 424 | err = svc.UpdateSkillMeta(c.Request.Context(), eid, skillID, &service.UpdateSkillMetaRequest{ |
| 425 | Sort: req.Sort, |
| 426 | DisplayName: req.DisplayName, |
| 427 | Description: req.Description, |
| 428 | UsageGuide: req.UsageGuide, |
| 429 | Logo: req.Logo, |
| 430 | Version: req.Version, |
| 431 | AdminStatus: req.AdminStatus, |
| 432 | PermissionGroupIDs: allGroupIDs, |
| 433 | }) |
| 434 | if err != nil { |
| 435 | toSkillAdminErrorResponse(c, err) |
| 436 | return |
| 437 | } |
| 438 | updatedSkill, _, err := svc.GetSkillByIDForAdmin(c.Request.Context(), eid, skillID) |
| 439 | if err != nil { |
| 440 | toSkillAdminErrorResponse(c, err) |
| 441 | return |
| 442 | } |
| 443 | c.JSON(http.StatusOK, model.Success.ToResponse(updatedSkill)) |
| 444 | } |
| 445 | |
| 446 | // AdminUpdateSkillLibraryStatus godoc |
| 447 | // @Summary 后台更新技能状态 |
nothing calls this directly
no test coverage detected