Some checks failed
		
		
	
	Build / build (push) Has been cancelled
				
			CodeQL / Analyze (go) (push) Has been cancelled
				
			build / Build (push) Has been cancelled
				
			GitHub Actions Mirror / mirror_to_gitee (push) Has been cancelled
				
			GitHub Actions Mirror / mirror_to_gitlab (push) Has been cancelled
				
			Issue Close Require / issue-close-require (push) Has been cancelled
				
			Issue Check Inactive / issue-check-inactive (push) Has been cancelled
				
			
		
			
				
	
	
		
			411 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			411 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package tools
 | 
						||
 | 
						||
import (
 | 
						||
	"bytes"
 | 
						||
	"fmt"
 | 
						||
	"go-admin/app/admin/service"
 | 
						||
	"go-admin/app/admin/service/dto"
 | 
						||
	"strconv"
 | 
						||
	"strings"
 | 
						||
	"text/template"
 | 
						||
	"time"
 | 
						||
 | 
						||
	"github.com/gin-gonic/gin"
 | 
						||
	"github.com/go-admin-team/go-admin-core/sdk/api"
 | 
						||
	"github.com/go-admin-team/go-admin-core/sdk/config"
 | 
						||
	"github.com/go-admin-team/go-admin-core/sdk/pkg"
 | 
						||
 | 
						||
	"go-admin/app/other/models/tools"
 | 
						||
)
 | 
						||
 | 
						||
type Gen struct {
 | 
						||
	api.Api
 | 
						||
}
 | 
						||
 | 
						||
func (e Gen) Preview(c *gin.Context) {
 | 
						||
	e.Context = c
 | 
						||
	log := e.GetLogger()
 | 
						||
	table := tools.SysTables{}
 | 
						||
	id, err := pkg.StringToInt(c.Param("tableId"))
 | 
						||
	if err != nil {
 | 
						||
		log.Error(err)
 | 
						||
		e.Error(500, err, fmt.Sprintf("tableId接收失败!错误详情:%s", err.Error()))
 | 
						||
		return
 | 
						||
	}
 | 
						||
	table.TableId = id
 | 
						||
	t1, err := template.ParseFiles("template/v4/model.go.template")
 | 
						||
	if err != nil {
 | 
						||
		log.Error(err)
 | 
						||
		e.Error(500, err, fmt.Sprintf("model模版读取失败!错误详情:%s", err.Error()))
 | 
						||
		return
 | 
						||
	}
 | 
						||
	t2, err := template.ParseFiles("template/v4/no_actions/apis.go.template")
 | 
						||
	if err != nil {
 | 
						||
		log.Error(err)
 | 
						||
		e.Error(500, err, fmt.Sprintf("api模版读取失败!错误详情:%s", err.Error()))
 | 
						||
		return
 | 
						||
	}
 | 
						||
	t3, err := template.ParseFiles("template/v4/js.go.template")
 | 
						||
	if err != nil {
 | 
						||
		log.Error(err)
 | 
						||
		e.Error(500, err, fmt.Sprintf("js模版读取失败!错误详情:%s", err.Error()))
 | 
						||
		return
 | 
						||
	}
 | 
						||
	t4, err := template.ParseFiles("template/v4/vue.go.template")
 | 
						||
	if err != nil {
 | 
						||
		log.Error(err)
 | 
						||
		e.Error(500, err, fmt.Sprintf("vue模版读取失败!错误详情:%s", err.Error()))
 | 
						||
		return
 | 
						||
	}
 | 
						||
	t5, err := template.ParseFiles("template/v4/no_actions/router_check_role.go.template")
 | 
						||
	if err != nil {
 | 
						||
		log.Error(err)
 | 
						||
		e.Error(500, err, fmt.Sprintf("路由模版读取失败!错误详情:%s", err.Error()))
 | 
						||
		return
 | 
						||
	}
 | 
						||
	t6, err := template.ParseFiles("template/v4/dto.go.template")
 | 
						||
	if err != nil {
 | 
						||
		log.Error(err)
 | 
						||
		e.Error(500, err, fmt.Sprintf("dto模版读取失败!错误详情:%s", err.Error()))
 | 
						||
		return
 | 
						||
	}
 | 
						||
	t7, err := template.ParseFiles("template/v4/no_actions/service.go.template")
 | 
						||
	if err != nil {
 | 
						||
		log.Error(err)
 | 
						||
		e.Error(500, err, fmt.Sprintf("service模版读取失败!错误详情:%s", err.Error()))
 | 
						||
		return
 | 
						||
	}
 | 
						||
 | 
						||
	db, err := pkg.GetOrm(c)
 | 
						||
	if err != nil {
 | 
						||
		log.Errorf("get db connection error, %s", err.Error())
 | 
						||
		e.Error(500, err, fmt.Sprintf("数据库链接获取失败!错误详情:%s", err.Error()))
 | 
						||
		return
 | 
						||
	}
 | 
						||
 | 
						||
	tab, _ := table.Get(db,false)
 | 
						||
	var b1 bytes.Buffer
 | 
						||
	err = t1.Execute(&b1, tab)
 | 
						||
	var b2 bytes.Buffer
 | 
						||
	err = t2.Execute(&b2, tab)
 | 
						||
	var b3 bytes.Buffer
 | 
						||
	err = t3.Execute(&b3, tab)
 | 
						||
	var b4 bytes.Buffer
 | 
						||
	err = t4.Execute(&b4, tab)
 | 
						||
	var b5 bytes.Buffer
 | 
						||
	err = t5.Execute(&b5, tab)
 | 
						||
	var b6 bytes.Buffer
 | 
						||
	err = t6.Execute(&b6, tab)
 | 
						||
	var b7 bytes.Buffer
 | 
						||
	err = t7.Execute(&b7, tab)
 | 
						||
 | 
						||
	mp := make(map[string]interface{})
 | 
						||
	mp["template/model.go.template"] = b1.String()
 | 
						||
	mp["template/api.go.template"] = b2.String()
 | 
						||
	mp["template/js.go.template"] = b3.String()
 | 
						||
	mp["template/vue.go.template"] = b4.String()
 | 
						||
	mp["template/router.go.template"] = b5.String()
 | 
						||
	mp["template/dto.go.template"] = b6.String()
 | 
						||
	mp["template/service.go.template"] = b7.String()
 | 
						||
	e.OK(mp, "")
 | 
						||
}
 | 
						||
 | 
						||
func (e Gen) GenCode(c *gin.Context) {
 | 
						||
	e.Context = c
 | 
						||
	log := e.GetLogger()
 | 
						||
	table := tools.SysTables{}
 | 
						||
	id, err := pkg.StringToInt(c.Param("tableId"))
 | 
						||
	if err != nil {
 | 
						||
		log.Error(err)
 | 
						||
		e.Error(500, err, fmt.Sprintf("tableId参数接收失败!错误详情:%s", err.Error()))
 | 
						||
		return
 | 
						||
	}
 | 
						||
 | 
						||
	db, err := pkg.GetOrm(c)
 | 
						||
	if err != nil {
 | 
						||
		log.Errorf("get db connection error, %s", err.Error())
 | 
						||
		e.Error(500, err, fmt.Sprintf("数据库链接获取失败!错误详情:%s", err.Error()))
 | 
						||
		return
 | 
						||
	}
 | 
						||
 | 
						||
	table.TableId = id
 | 
						||
	tab, _ := table.Get(db,false)
 | 
						||
 | 
						||
	e.NOActionsGen(c, tab)
 | 
						||
 | 
						||
	e.OK("", "Code generated successfully!")
 | 
						||
}
 | 
						||
 | 
						||
func (e Gen) GenApiToFile(c *gin.Context) {
 | 
						||
	e.Context = c
 | 
						||
	log := e.GetLogger()
 | 
						||
	table := tools.SysTables{}
 | 
						||
	id, err := pkg.StringToInt(c.Param("tableId"))
 | 
						||
	if err != nil {
 | 
						||
		log.Error(err)
 | 
						||
		e.Error(500, err, fmt.Sprintf("tableId参数获取失败!错误详情:%s", err.Error()))
 | 
						||
		return
 | 
						||
	}
 | 
						||
 | 
						||
	db, err := pkg.GetOrm(c)
 | 
						||
	if err != nil {
 | 
						||
		log.Errorf("get db connection error, %s", err.Error())
 | 
						||
		e.Error(500, err, fmt.Sprintf("数据库链接获取失败!错误详情:%s", err.Error()))
 | 
						||
		return
 | 
						||
	}
 | 
						||
 | 
						||
	table.TableId = id
 | 
						||
	tab, _ := table.Get(db,false)
 | 
						||
	e.genApiToFile(c, tab)
 | 
						||
 | 
						||
	e.OK("", "Code generated successfully!")
 | 
						||
}
 | 
						||
 | 
						||
func (e Gen) NOActionsGen(c *gin.Context, tab tools.SysTables) {
 | 
						||
	e.Context = c
 | 
						||
	log := e.GetLogger()
 | 
						||
	tab.MLTBName = strings.Replace(tab.TBName, "_", "-", -1)
 | 
						||
 | 
						||
	basePath := "template/v4/"
 | 
						||
	routerFile := basePath + "no_actions/router_check_role.go.template"
 | 
						||
 | 
						||
	if tab.IsAuth == 2 {
 | 
						||
		routerFile = basePath + "no_actions/router_no_check_role.go.template"
 | 
						||
	}
 | 
						||
 | 
						||
	t1, err := template.ParseFiles(basePath + "model.go.template")
 | 
						||
	if err != nil {
 | 
						||
		log.Error(err)
 | 
						||
		e.Error(500, err, fmt.Sprintf("model模版读取失败!错误详情:%s", err.Error()))
 | 
						||
		return
 | 
						||
	}
 | 
						||
	t2, err := template.ParseFiles(basePath + "no_actions/apis.go.template")
 | 
						||
	if err != nil {
 | 
						||
		log.Error(err)
 | 
						||
		e.Error(500, err, fmt.Sprintf("api模版读取失败!错误详情:%s", err.Error()))
 | 
						||
		return
 | 
						||
	}
 | 
						||
	t3, err := template.ParseFiles(routerFile)
 | 
						||
	if err != nil {
 | 
						||
		log.Error(err)
 | 
						||
		e.Error(500, err, fmt.Sprintf("路由模版失败!错误详情:%s", err.Error()))
 | 
						||
		return
 | 
						||
	}
 | 
						||
	t4, err := template.ParseFiles(basePath + "js.go.template")
 | 
						||
	if err != nil {
 | 
						||
		log.Error(err)
 | 
						||
		e.Error(500, err, fmt.Sprintf("js模版解析失败!错误详情:%s", err.Error()))
 | 
						||
		return
 | 
						||
	}
 | 
						||
	t5, err := template.ParseFiles(basePath + "vue.go.template")
 | 
						||
	if err != nil {
 | 
						||
		log.Error(err)
 | 
						||
		e.Error(500, err, fmt.Sprintf("vue模版解析失败!错误详情:%s", err.Error()))
 | 
						||
		return
 | 
						||
	}
 | 
						||
	t6, err := template.ParseFiles(basePath + "dto.go.template")
 | 
						||
	if err != nil {
 | 
						||
		log.Error(err)
 | 
						||
		e.Error(500, err, fmt.Sprintf("dto模版解析失败失败!错误详情:%s", err.Error()))
 | 
						||
		return
 | 
						||
	}
 | 
						||
	t7, err := template.ParseFiles(basePath + "no_actions/service.go.template")
 | 
						||
	if err != nil {
 | 
						||
		log.Error(err)
 | 
						||
		e.Error(500, err, fmt.Sprintf("service模版失败!错误详情:%s", err.Error()))
 | 
						||
		return
 | 
						||
	}
 | 
						||
 | 
						||
	_ = pkg.PathCreate("./app/" + tab.PackageName + "/apis/")
 | 
						||
	_ = pkg.PathCreate("./app/" + tab.PackageName + "/models/")
 | 
						||
	_ = pkg.PathCreate("./app/" + tab.PackageName + "/router/")
 | 
						||
	_ = pkg.PathCreate("./app/" + tab.PackageName + "/service/dto/")
 | 
						||
	_ = pkg.PathCreate(config.GenConfig.FrontPath + "/api/" + tab.PackageName + "/")
 | 
						||
	err = pkg.PathCreate(config.GenConfig.FrontPath + "/views/" + tab.PackageName + "/" + tab.MLTBName + "/")
 | 
						||
	if err != nil {
 | 
						||
		log.Error(err)
 | 
						||
		e.Error(500, err, fmt.Sprintf("views目录创建失败!错误详情:%s", err.Error()))
 | 
						||
		return
 | 
						||
	}
 | 
						||
 | 
						||
	var b1 bytes.Buffer
 | 
						||
	err = t1.Execute(&b1, tab)
 | 
						||
	var b2 bytes.Buffer
 | 
						||
	err = t2.Execute(&b2, tab)
 | 
						||
	var b3 bytes.Buffer
 | 
						||
	err = t3.Execute(&b3, tab)
 | 
						||
	var b4 bytes.Buffer
 | 
						||
	err = t4.Execute(&b4, tab)
 | 
						||
	var b5 bytes.Buffer
 | 
						||
	err = t5.Execute(&b5, tab)
 | 
						||
	var b6 bytes.Buffer
 | 
						||
	err = t6.Execute(&b6, tab)
 | 
						||
	var b7 bytes.Buffer
 | 
						||
	err = t7.Execute(&b7, tab)
 | 
						||
	pkg.FileCreate(b1, "./app/"+tab.PackageName+"/models/"+tab.TBName+".go")
 | 
						||
	pkg.FileCreate(b2, "./app/"+tab.PackageName+"/apis/"+tab.TBName+".go")
 | 
						||
	pkg.FileCreate(b3, "./app/"+tab.PackageName+"/router/"+tab.TBName+".go")
 | 
						||
	pkg.FileCreate(b4, config.GenConfig.FrontPath+"/api/"+tab.PackageName+"/"+tab.MLTBName+".js")
 | 
						||
	pkg.FileCreate(b5, config.GenConfig.FrontPath+"/views/"+tab.PackageName+"/"+tab.MLTBName+"/index.vue")
 | 
						||
	pkg.FileCreate(b6, "./app/"+tab.PackageName+"/service/dto/"+tab.TBName+".go")
 | 
						||
	pkg.FileCreate(b7, "./app/"+tab.PackageName+"/service/"+tab.TBName+".go")
 | 
						||
 | 
						||
}
 | 
						||
 | 
						||
func (e Gen) genApiToFile(c *gin.Context, tab tools.SysTables) {
 | 
						||
	err := e.MakeContext(c).
 | 
						||
		MakeOrm().
 | 
						||
		Errors
 | 
						||
	if err != nil {
 | 
						||
		e.Logger.Error(err)
 | 
						||
		e.Error(500, err, err.Error())
 | 
						||
		return
 | 
						||
	}
 | 
						||
 | 
						||
	basePath := "template/"
 | 
						||
 | 
						||
	t1, err := template.ParseFiles(basePath + "api_migrate.template")
 | 
						||
	if err != nil {
 | 
						||
		e.Logger.Error(err)
 | 
						||
		e.Error(500, err, fmt.Sprintf("数据迁移模版解析失败!错误详情:%s", err.Error()))
 | 
						||
		return
 | 
						||
	}
 | 
						||
	i := strconv.FormatInt(time.Now().UnixNano()/1e6, 10)
 | 
						||
	var b1 bytes.Buffer
 | 
						||
	err = t1.Execute(&b1, struct {
 | 
						||
		tools.SysTables
 | 
						||
		GenerateTime string
 | 
						||
	}{tab, i})
 | 
						||
 | 
						||
	pkg.FileCreate(b1, "./cmd/migrate/migration/version-local/"+i+"_migrate.go")
 | 
						||
 | 
						||
}
 | 
						||
 | 
						||
func (e Gen) GenMenuAndApi(c *gin.Context) {
 | 
						||
	s := service.SysMenu{}
 | 
						||
	err := e.MakeContext(c).
 | 
						||
		MakeOrm().
 | 
						||
		MakeService(&s.Service).
 | 
						||
		Errors
 | 
						||
	if err != nil {
 | 
						||
		e.Logger.Error(err)
 | 
						||
		e.Error(500, err, err.Error())
 | 
						||
		return
 | 
						||
	}
 | 
						||
 | 
						||
	table := tools.SysTables{}
 | 
						||
	id, err := pkg.StringToInt(c.Param("tableId"))
 | 
						||
	if err != nil {
 | 
						||
		e.Logger.Error(err)
 | 
						||
		e.Error(500, err, fmt.Sprintf("tableId参数解析失败!错误详情:%s", err.Error()))
 | 
						||
		return
 | 
						||
	}
 | 
						||
 | 
						||
	table.TableId = id
 | 
						||
	tab, _ := table.Get(e.Orm,true)
 | 
						||
	tab.MLTBName = strings.Replace(tab.TBName, "_", "-", -1)
 | 
						||
 | 
						||
	Mmenu := dto.SysMenuInsertReq{}
 | 
						||
	Mmenu.Title = tab.TableComment
 | 
						||
	Mmenu.Icon = "pass"
 | 
						||
	Mmenu.Path = "/" + tab.MLTBName
 | 
						||
	Mmenu.MenuType = "M"
 | 
						||
	Mmenu.Action = "无"
 | 
						||
	Mmenu.ParentId = 0
 | 
						||
	Mmenu.NoCache = false
 | 
						||
	Mmenu.Component = "Layout"
 | 
						||
	Mmenu.Sort = 0
 | 
						||
	Mmenu.Visible = "0"
 | 
						||
	Mmenu.IsFrame = "0"
 | 
						||
	Mmenu.CreateBy = 1
 | 
						||
	s.Insert(&Mmenu)
 | 
						||
 | 
						||
	Cmenu := dto.SysMenuInsertReq{}
 | 
						||
	Cmenu.MenuName = tab.ClassName + "Manage"
 | 
						||
	Cmenu.Title = tab.TableComment
 | 
						||
	Cmenu.Icon = "pass"
 | 
						||
	Cmenu.Path = "/" + tab.PackageName + "/" + tab.MLTBName
 | 
						||
	Cmenu.MenuType = "C"
 | 
						||
	Cmenu.Action = "无"
 | 
						||
	Cmenu.Permission = tab.PackageName + ":" + tab.BusinessName + ":list"
 | 
						||
	Cmenu.ParentId = Mmenu.MenuId
 | 
						||
	Cmenu.NoCache = false
 | 
						||
	Cmenu.Component = "/" + tab.PackageName + "/" + tab.MLTBName + "/index"
 | 
						||
	Cmenu.Sort = 0
 | 
						||
	Cmenu.Visible = "0"
 | 
						||
	Cmenu.IsFrame = "0"
 | 
						||
	Cmenu.CreateBy = 1
 | 
						||
	Cmenu.UpdateBy = 1
 | 
						||
	s.Insert(&Cmenu)
 | 
						||
 | 
						||
	MList := dto.SysMenuInsertReq{}
 | 
						||
	MList.MenuName = ""
 | 
						||
	MList.Title = "分页获取" + tab.TableComment
 | 
						||
	MList.Icon = ""
 | 
						||
	MList.Path = tab.TBName
 | 
						||
	MList.MenuType = "F"
 | 
						||
	MList.Action = "无"
 | 
						||
	MList.Permission = tab.PackageName + ":" + tab.BusinessName + ":query"
 | 
						||
	MList.ParentId = Cmenu.MenuId
 | 
						||
	MList.NoCache = false
 | 
						||
	MList.Sort = 0
 | 
						||
	MList.Visible = "0"
 | 
						||
	MList.IsFrame = "0"
 | 
						||
	MList.CreateBy = 1
 | 
						||
	MList.UpdateBy = 1
 | 
						||
	s.Insert(&MList)
 | 
						||
 | 
						||
	MCreate := dto.SysMenuInsertReq{}
 | 
						||
	MCreate.MenuName = ""
 | 
						||
	MCreate.Title = "创建" + tab.TableComment
 | 
						||
	MCreate.Icon = ""
 | 
						||
	MCreate.Path = tab.TBName
 | 
						||
	MCreate.MenuType = "F"
 | 
						||
	MCreate.Action = "无"
 | 
						||
	MCreate.Permission = tab.PackageName + ":" + tab.BusinessName + ":add"
 | 
						||
	MCreate.ParentId = Cmenu.MenuId
 | 
						||
	MCreate.NoCache = false
 | 
						||
	MCreate.Sort = 0
 | 
						||
	MCreate.Visible = "0"
 | 
						||
	MCreate.IsFrame = "0"
 | 
						||
	MCreate.CreateBy = 1
 | 
						||
	MCreate.UpdateBy = 1
 | 
						||
	s.Insert(&MCreate)
 | 
						||
 | 
						||
	MUpdate := dto.SysMenuInsertReq{}
 | 
						||
	MUpdate.MenuName = ""
 | 
						||
	MUpdate.Title = "修改" + tab.TableComment
 | 
						||
	MUpdate.Icon = ""
 | 
						||
	MUpdate.Path = tab.TBName
 | 
						||
	MUpdate.MenuType = "F"
 | 
						||
	MUpdate.Action = "无"
 | 
						||
	MUpdate.Permission = tab.PackageName + ":" + tab.BusinessName + ":edit"
 | 
						||
	MUpdate.ParentId = Cmenu.MenuId
 | 
						||
	MUpdate.NoCache = false
 | 
						||
	MUpdate.Sort = 0
 | 
						||
	MUpdate.Visible = "0"
 | 
						||
	MUpdate.IsFrame = "0"
 | 
						||
	MUpdate.CreateBy = 1
 | 
						||
	MUpdate.UpdateBy = 1
 | 
						||
	s.Insert(&MUpdate)
 | 
						||
 | 
						||
	MDelete := dto.SysMenuInsertReq{}
 | 
						||
	MDelete.MenuName = ""
 | 
						||
	MDelete.Title = "删除" + tab.TableComment
 | 
						||
	MDelete.Icon = ""
 | 
						||
	MDelete.Path = tab.TBName
 | 
						||
	MDelete.MenuType = "F"
 | 
						||
	MDelete.Action = "无"
 | 
						||
	MDelete.Permission = tab.PackageName + ":" + tab.BusinessName + ":remove"
 | 
						||
	MDelete.ParentId = Cmenu.MenuId
 | 
						||
	MDelete.NoCache = false
 | 
						||
	MDelete.Sort = 0
 | 
						||
	MDelete.Visible = "0"
 | 
						||
	MDelete.IsFrame = "0"
 | 
						||
	MDelete.CreateBy = 1
 | 
						||
	MDelete.UpdateBy = 1
 | 
						||
	s.Insert(&MDelete)
 | 
						||
 | 
						||
	e.OK("", "数据生成成功!")
 | 
						||
}
 |