package app import ( "git.echol.cn/loser/st/server/global" "git.echol.cn/loser/st/server/model/app/request" "git.echol.cn/loser/st/server/model/common/response" "git.echol.cn/loser/st/server/service" "git.echol.cn/loser/st/server/utils" "github.com/gin-gonic/gin" "go.uber.org/zap" "strconv" ) type AIPresetApi struct{} var aiPresetService = service.ServiceGroupApp.AppServiceGroup.AIPresetService // CreateAIPreset 创建预设 // @Tags AIPreset // @Summary 创建AI预设 // @Security ApiKeyAuth // @accept application/json // @Produce application/json // @Param data body request.CreateAIPresetRequest true "预设信息" // @Success 200 {object} response.Response{data=app.AIPreset,msg=string} "创建成功" // @Router /app/preset/create [post] func (a *AIPresetApi) CreateAIPreset(c *gin.Context) { var req request.CreateAIPresetRequest if err := c.ShouldBindJSON(&req); err != nil { response.FailWithMessage(err.Error(), c) return } // 获取用户ID userID := utils.GetUserID(c) if userID == 0 { response.FailWithMessage("获取用户信息失败", c) return } preset, err := aiPresetService.CreateAIPreset(userID, &req) if err != nil { global.GVA_LOG.Error("创建预设失败", zap.Error(err)) response.FailWithMessage("创建预设失败: "+err.Error(), c) return } response.OkWithData(preset, c) } // UpdateAIPreset 更新预设 // @Tags AIPreset // @Summary 更新AI预设 // @Security ApiKeyAuth // @accept application/json // @Produce application/json // @Param id path int true "预设ID" // @Param data body request.UpdateAIPresetRequest true "预设信息" // @Success 200 {object} response.Response{msg=string} "更新成功" // @Router /app/preset/update/{id} [put] func (a *AIPresetApi) UpdateAIPreset(c *gin.Context) { presetID, err := strconv.ParseUint(c.Param("id"), 10, 32) if err != nil { response.FailWithMessage("无效的预设ID", c) return } var req request.UpdateAIPresetRequest if err := c.ShouldBindJSON(&req); err != nil { response.FailWithMessage(err.Error(), c) return } // 获取用户ID userID := utils.GetUserID(c) if userID == 0 { response.FailWithMessage("获取用户信息失败", c) return } if err := aiPresetService.UpdateAIPreset(userID, uint(presetID), &req); err != nil { global.GVA_LOG.Error("更新预设失败", zap.Error(err)) response.FailWithMessage("更新预设失败: "+err.Error(), c) return } response.OkWithMessage("更新成功", c) } // DeleteAIPreset 删除预设 // @Tags AIPreset // @Summary 删除AI预设 // @Security ApiKeyAuth // @accept application/json // @Produce application/json // @Param id path int true "预设ID" // @Success 200 {object} response.Response{msg=string} "删除成功" // @Router /app/preset/delete/{id} [delete] func (a *AIPresetApi) DeleteAIPreset(c *gin.Context) { presetID, err := strconv.ParseUint(c.Param("id"), 10, 32) if err != nil { response.FailWithMessage("无效的预设ID", c) return } // 获取用户ID userID := utils.GetUserID(c) if userID == 0 { response.FailWithMessage("获取用户信息失败", c) return } if err := aiPresetService.DeleteAIPreset(userID, uint(presetID)); err != nil { global.GVA_LOG.Error("删除预设失败", zap.Error(err)) response.FailWithMessage("删除预设失败: "+err.Error(), c) return } response.OkWithMessage("删除成功", c) } // GetAIPreset 获取预设详情 // @Tags AIPreset // @Summary 获取AI预设详情 // @Security ApiKeyAuth // @accept application/json // @Produce application/json // @Param id path int true "预设ID" // @Success 200 {object} response.Response{data=response.AIPresetResponse,msg=string} "获取成功" // @Router /app/preset/get/{id} [get] func (a *AIPresetApi) GetAIPreset(c *gin.Context) { presetID, err := strconv.ParseUint(c.Param("id"), 10, 32) if err != nil { response.FailWithMessage("无效的预设ID", c) return } // 获取用户ID userID := utils.GetUserID(c) if userID == 0 { response.FailWithMessage("获取用户信息失败", c) return } preset, err := aiPresetService.GetAIPreset(userID, uint(presetID)) if err != nil { global.GVA_LOG.Error("获取预设失败", zap.Error(err)) response.FailWithMessage("获取预设失败: "+err.Error(), c) return } response.OkWithData(preset, c) } // GetAIPresetList 获取预设列表 // @Tags AIPreset // @Summary 获取AI预设列表 // @Security ApiKeyAuth // @accept application/json // @Produce application/json // @Param data body request.AIPresetSearch true "搜索条件" // @Success 200 {object} response.Response{data=response.PageResult,msg=string} "获取成功" // @Router /app/preset/list [post] func (a *AIPresetApi) GetAIPresetList(c *gin.Context) { var req request.AIPresetSearch if err := c.ShouldBindJSON(&req); err != nil { response.FailWithMessage(err.Error(), c) return } // 获取用户ID userID := utils.GetUserID(c) if userID == 0 { response.FailWithMessage("获取用户信息失败", c) return } list, total, err := aiPresetService.GetAIPresetList(userID, &req) if err != nil { global.GVA_LOG.Error("获取预设列表失败", zap.Error(err)) response.FailWithMessage("获取预设列表失败: "+err.Error(), c) return } response.OkWithDetailed(response.PageResult{ List: list, Total: total, Page: req.Page, PageSize: req.PageSize, }, "获取成功", c) } // DuplicateAIPreset 复制预设 // @Tags AIPreset // @Summary 复制AI预设 // @Security ApiKeyAuth // @accept application/json // @Produce application/json // @Param id path int true "预设ID" // @Success 200 {object} response.Response{data=app.AIPreset,msg=string} "复制成功" // @Router /app/preset/duplicate/{id} [post] func (a *AIPresetApi) DuplicateAIPreset(c *gin.Context) { presetID, err := strconv.ParseUint(c.Param("id"), 10, 32) if err != nil { response.FailWithMessage("无效的预设ID", c) return } // 获取用户ID userID := utils.GetUserID(c) if userID == 0 { response.FailWithMessage("获取用户信息失败", c) return } preset, err := aiPresetService.DuplicateAIPreset(userID, uint(presetID)) if err != nil { global.GVA_LOG.Error("复制预设失败", zap.Error(err)) response.FailWithMessage("复制预设失败: "+err.Error(), c) return } response.OkWithData(preset, c) } // SetDefaultPreset 设置默认预设 // @Tags AIPreset // @Summary 设置默认AI预设 // @Security ApiKeyAuth // @accept application/json // @Produce application/json // @Param id path int true "预设ID" // @Success 200 {object} response.Response{msg=string} "设置成功" // @Router /app/preset/setDefault/{id} [post] func (a *AIPresetApi) SetDefaultPreset(c *gin.Context) { presetID, err := strconv.ParseUint(c.Param("id"), 10, 32) if err != nil { response.FailWithMessage("无效的预设ID", c) return } // 获取用户ID userID := utils.GetUserID(c) if userID == 0 { response.FailWithMessage("获取用户信息失败", c) return } if err := aiPresetService.SetDefaultPreset(userID, uint(presetID)); err != nil { global.GVA_LOG.Error("设置默认预设失败", zap.Error(err)) response.FailWithMessage("设置默认预设失败: "+err.Error(), c) return } response.OkWithMessage("设置成功", c) }