Files
easygoadmin/app/controller/generate.go
yaoyilin dbd3c3c247 feat: 封装为包
封装为包
2022-10-31 23:55:00 +08:00

120 lines
2.5 KiB
Go

/**
* 代码生成器-控制器
* @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) + "】个模块文件",
})
}