AdminUpdateSkillLibraryStatus godoc @Summary 后台更新技能状态 @Description 更新草稿/驳回/启停状态(发布请走 publish 接口) @Tags 技能库-后台 @Accept json @Produce json @Security BearerAuth @Param id path int true "技能ID" @Param request body AdminUpdateSkillStatusRequest true "状态参数" @Success 200 {object} model.CommonResponse @Route
(c *gin.Context)
| 455 | // @Success 200 {object} model.CommonResponse |
| 456 | // @Router /api/admin/skill-library/{id}/status [patch] |
| 457 | func AdminUpdateSkillLibraryStatus(c *gin.Context) { |
| 458 | skillID, err := strconv.ParseInt(c.Param("id"), 10, 64) |
| 459 | if err != nil || skillID <= 0 { |
| 460 | c.JSON(http.StatusBadRequest, model.ParamError.ToResponse(nil)) |
| 461 | return |
| 462 | } |
| 463 | |
| 464 | var req AdminUpdateSkillStatusRequest |
| 465 | if err := c.ShouldBindJSON(&req); err != nil { |
| 466 | c.JSON(http.StatusBadRequest, model.ParamError.ToErrorResponse(err)) |
| 467 | return |
| 468 | } |
| 469 | |
| 470 | eid := config.GetEID(c) |
| 471 | svc := service.NewSkillLibraryService() |
| 472 | currentSkill, _, err := svc.GetSkillByIDForAdmin(c.Request.Context(), eid, skillID) |
| 473 | if err != nil { |
| 474 | toSkillAdminErrorResponse(c, err) |
| 475 | return |
| 476 | } |
| 477 | |
| 478 | targetPublish := currentSkill.PublishStatus |
| 479 | targetAdmin := currentSkill.AdminStatus |
| 480 | reqPublishStatus := strings.TrimSpace(req.PublishStatus) |
| 481 | reqAdminStatus := strings.TrimSpace(req.AdminStatus) |
| 482 | if reqPublishStatus != "" { |
| 483 | if reqPublishStatus == model.SkillPublishStatusPublished { |
| 484 | c.JSON(http.StatusBadRequest, model.ParamError.ToErrorResponse(errors.New("published 状态请使用 publish 接口"))) |
| 485 | return |
| 486 | } |
| 487 | targetPublish = reqPublishStatus |
| 488 | } |
| 489 | if reqAdminStatus != "" { |
| 490 | targetAdmin = reqAdminStatus |
| 491 | } |
| 492 | if reqPublishStatus == "" && reqAdminStatus == "" { |
| 493 | c.JSON(http.StatusBadRequest, model.ParamError.ToErrorResponse(errors.New("publish_status/admin_status 不能同时为空"))) |
| 494 | return |
| 495 | } |
| 496 | if err := svc.ValidateSkillStatusCombination(targetPublish, targetAdmin); err != nil { |
| 497 | toSkillAdminErrorResponse(c, err) |
| 498 | return |
| 499 | } |
| 500 | |
| 501 | if err := svc.UpdateSkillStatusDirect(c.Request.Context(), eid, skillID, targetPublish, targetAdmin); err != nil { |
| 502 | toSkillAdminErrorResponse(c, err) |
| 503 | return |
| 504 | } |
| 505 | c.JSON(http.StatusOK, model.Success.ToResponse(nil)) |
| 506 | } |
| 507 | |
| 508 | // AdminDeleteSkillLibrary godoc |
| 509 | // @Summary 后台删除技能 |
nothing calls this directly
no test coverage detected