UpdatePrompt 更新提示词 @Summary 更新提示词 @Description 更新提示词信息,包括提示词的名称、内容、描述、用途类型、排序、自定义配置、状态,以及分组关联和网站配置的增删改。 @Tags Prompt @Accept json @Produce json @Security BearerAuth @Param pid path int true "提示词ID" @Param request body PromptRequest true "提示词信息,包括分组关联和网站配置的增删改"{ "name": "智能写作助手", "logo": "https
(c *gin.Context)
| 407 | // @Failure 500 {object} model.CommonResponse "服务器内部错误" |
| 408 | // @Router /api/prompts/{pid} [put] |
| 409 | func UpdatePrompt(c *gin.Context) { |
| 410 | promptID, err := strconv.Atoi(c.Param("pid")) |
| 411 | if err != nil { |
| 412 | c.JSON(http.StatusBadRequest, model.ParamError.ToResponse(nil)) |
| 413 | return |
| 414 | } |
| 415 | |
| 416 | var promptReq PromptRequest |
| 417 | if err = c.ShouldBindJSON(&promptReq); err != nil { |
| 418 | c.JSON(http.StatusBadRequest, model.ParamError.ToResponse(err)) |
| 419 | return |
| 420 | } |
| 421 | |
| 422 | eid := config.GetEID(c) |
| 423 | prompt, err := model.GetPromptByID(promptID) |
| 424 | if err != nil { |
| 425 | c.JSON(http.StatusNotFound, model.NotFound.ToResponse(nil)) |
| 426 | return |
| 427 | } |
| 428 | |
| 429 | if prompt.Type == model.PromptTypeSystem && !common.IsAdmin(c) { |
| 430 | c.JSON(http.StatusForbidden, model.AuthFailed.ToResponse(nil)) |
| 431 | return |
| 432 | } |
| 433 | |
| 434 | // 检查提示词是否属于当前企业 |
| 435 | if prompt.Eid != eid { |
| 436 | c.JSON(http.StatusNotFound, model.NotFound.ToResponse(nil)) |
| 437 | return |
| 438 | } |
| 439 | |
| 440 | // 开始事务 |
| 441 | tx := model.DB.Begin() |
| 442 | if tx.Error != nil { |
| 443 | c.JSON(http.StatusInternalServerError, model.DBError.ToResponse(nil)) |
| 444 | return |
| 445 | } |
| 446 | |
| 447 | // 更新提示词字段 |
| 448 | prompt.Name = promptReq.Name |
| 449 | prompt.Logo = promptReq.Logo |
| 450 | prompt.Content = promptReq.Content |
| 451 | prompt.Description = promptReq.Description |
| 452 | prompt.Sort = promptReq.Sort |
| 453 | prompt.CustomConfig = promptReq.CustomConfig |
| 454 | if promptReq.Status != nil { |
| 455 | prompt.Status = *promptReq.Status |
| 456 | } |
| 457 | |
| 458 | links := buildPromptAILinks(nil, promptReq.AILinks) |
| 459 | |
| 460 | // 序列化更新后的 AILinks 为 JSON 字符串 |
| 461 | linksJSON, err := json.Marshal(links) |
| 462 | if err != nil { |
| 463 | tx.Rollback() |
| 464 | c.JSON(http.StatusInternalServerError, model.ParamError.ToResponse(err)) |
| 465 | return |
| 466 | } |
nothing calls this directly
no test coverage detected