/** * 代码生成器-控制器 * @author * @since 2021/11/15 * @File : generate */ package controller import ( "github.com/gin-gonic/gin" "gitlab.52pay.top/go/easygoadmin/app/dto" "gitlab.52pay.top/go/easygoadmin/app/service" "gitlab.52pay.top/go/easygoadmin/utils/common" "gitlab.52pay.top/go/easygoadmin/utils/gconv" "gitlab.52pay.top/go/easygoadmin/utils/response" "net/http" "strconv" "strings" ) // 控制器管理对象 var Generate = new(generateCtl) type generateCtl struct{} func (c *generateCtl) Index(ctx *gin.Context) { // 渲染模板 response.BuildTpl(ctx, "generate_index.html").WriteTpl() } func (c *generateCtl) List(ctx *gin.Context) { // 参数验证 var req *dto.GeneratePageReq if err := ctx.ShouldBind(&req); err != nil { ctx.JSON(http.StatusOK, common.JsonResult{ Code: -1, Msg: err.Error(), }) return } // 调用查询列表方法 list, err := service.Generate.GetList(req) if err != nil { ctx.JSON(http.StatusOK, common.JsonResult{ Code: -1, Msg: err.Error(), }) return } // 返回结果 ctx.JSON(http.StatusOK, common.JsonResult{ Code: 0, Msg: "查询成功", Data: list, Count: gconv.Int64(len(list)), }) } func (c *generateCtl) Generate(ctx *gin.Context) { // 参数验证 var req dto.GenerateFileReq if err := ctx.ShouldBind(&req); err != nil { ctx.JSON(http.StatusOK, common.JsonResult{ Code: -1, Msg: err.Error(), }) return } // 调用生成方法 err := service.Generate.Generate(req, ctx) if err != nil { ctx.JSON(http.StatusOK, common.JsonResult{ Code: -1, Msg: err.Error(), }) return } // 返回结果 ctx.JSON(http.StatusOK, common.JsonResult{ Code: 0, Msg: "模块生成成功", }) } func (c *generateCtl) BatchGenerate(ctx *gin.Context) { // 生成对象 var req *dto.BatchGenerateFileReq if err := ctx.ShouldBind(&req); err != nil { ctx.JSON(http.StatusOK, common.JsonResult{ Code: -1, Msg: err.Error(), }) return } // 参数分析 tableList := strings.Split(req.Tables, ",") count := 0 for _, item := range tableList { itemList := strings.Split(item, "|") // 组装参数对象 var param dto.GenerateFileReq param.Name = itemList[0] param.Comment = itemList[1] // 调用生成方法 err := service.Generate.Generate(param, ctx) if err != nil { continue } count++ } // 返回结果 ctx.JSON(http.StatusOK, common.JsonResult{ Code: 0, Msg: "本次共生成【" + strconv.Itoa(count) + "】个模块文件", }) }