package system import ( "strings" "kra/internal/biz/system" "kra/pkg/response" "kra/pkg/utils" "github.com/gin-gonic/gin" ) // Create 创建package // @Tags AutoCodePackage // @Summary 创建package // @Security ApiKeyAuth // @accept application/json // @Produce application/json // @Param data body system.SysAutoCodePackage true "创建package" // @Success 200 {object} response.Response{msg=string} "创建package成功" // @Router /autoCode/createPackage [post] func (a *AutoCodePackageApi) Create(c *gin.Context) { var info system.SysAutoCodePackage if err := c.ShouldBindJSON(&info); err != nil { response.FailWithMessage(err.Error(), c) return } if err := utils.Verify(info, utils.AutoPackageVerify); err != nil { response.FailWithMessage(err.Error(), c) return } // PackageName可能导致路径穿越的问题 / 和 \ 都要防止 if strings.Contains(info.PackageName, "\\") || strings.Contains(info.PackageName, "/") || strings.Contains(info.PackageName, "..") { response.FailWithMessage("包名不合法", c) return } if err := autoCodePackageUsecase.Create(c.Request.Context(), &info); err != nil { response.FailWithMessage("创建失败: "+err.Error(), c) return } response.OkWithMessage("创建成功", c) } // Delete 删除package // @Tags AutoCodePackage // @Summary 删除package // @Security ApiKeyAuth // @accept application/json // @Produce application/json // @Param data body map[string]uint true "删除package" // @Success 200 {object} response.Response{msg=string} "删除package成功" // @Router /autoCode/delPackage [post] func (a *AutoCodePackageApi) Delete(c *gin.Context) { var req struct { ID uint `json:"id"` } if err := c.ShouldBindJSON(&req); err != nil { response.FailWithMessage(err.Error(), c) return } if err := autoCodePackageUsecase.Delete(c.Request.Context(), req.ID); err != nil { response.FailWithMessage("删除失败: "+err.Error(), c) return } response.OkWithMessage("删除成功", c) } // All 获取所有package // @Tags AutoCodePackage // @Summary 获取package // @Security ApiKeyAuth // @accept application/json // @Produce application/json // @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "获取package成功" // @Router /autoCode/getPackage [post] func (a *AutoCodePackageApi) All(c *gin.Context) { data, err := autoCodePackageUsecase.All(c.Request.Context()) if err != nil { response.FailWithMessage("获取失败: "+err.Error(), c) return } response.OkWithDetailed(gin.H{"pkgs": data}, "获取成功", c) } // Templates 获取所有模版 // @Tags AutoCodePackage // @Summary 获取所有模版 // @Security ApiKeyAuth // @accept application/json // @Produce application/json // @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "获取模版成功" // @Router /autoCode/getTemplates [get] func (a *AutoCodePackageApi) Templates(c *gin.Context) { data, err := autoCodePackageUsecase.GetTemplateNames(c.Request.Context()) if err != nil { response.FailWithMessage("获取失败: "+err.Error(), c) return } response.OkWithDetailed(data, "获取成功", c) }