From 793b7129c526b53e49a8ef65fa6a281e4e3c35a1 Mon Sep 17 00:00:00 2001
From: xiangheng <11675084@qq.com>
Date: Wed, 29 Nov 2023 14:54:21 +0800
Subject: [PATCH] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E7=94=9F=E6=88=90=E6=96=B9?=
=?UTF-8?q?=E5=BC=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
admin/src/views/dev_tools/code/edit.vue | 28 +-
admin/src/views/dev_tools/code/index.vue | 14 +-
server/generator/gen/gen.go | 28 +-
server/generator/gen/schema.go | 42 ++-
server/generator/gen/service.go | 25 --
.../templates/gocode/controller.go copy.tpl | 82 ------
.../templates/gocode/controller.go.tpl | 64 -----
.../generator/templates/gocode/model.go.tpl | 10 -
.../generator/templates/gocode/route.go.tpl | 42 ---
.../generator/templates/gocode/schema.go.tpl | 57 ----
.../generator/templates/gocode/service.go.tpl | 141 ----------
server/generator/templates/vue/api.ts.tpl | 26 --
server/generator/templates/vue/edit.vue.tpl | 252 ------------------
.../templates/vue/index-tree.vue.tpl | 222 ---------------
server/generator/templates/vue/index.vue.tpl | 183 -------------
server/generator/tpl_utils/tpl.go | 35 +--
server/model/gen_model/gen.go | 9 +-
17 files changed, 45 insertions(+), 1215 deletions(-)
delete mode 100644 server/generator/templates/gocode/controller.go copy.tpl
delete mode 100644 server/generator/templates/gocode/controller.go.tpl
delete mode 100644 server/generator/templates/gocode/model.go.tpl
delete mode 100644 server/generator/templates/gocode/route.go.tpl
delete mode 100644 server/generator/templates/gocode/schema.go.tpl
delete mode 100644 server/generator/templates/gocode/service.go.tpl
delete mode 100644 server/generator/templates/vue/api.ts.tpl
delete mode 100644 server/generator/templates/vue/edit.vue.tpl
delete mode 100644 server/generator/templates/vue/index-tree.vue.tpl
delete mode 100644 server/generator/templates/vue/index.vue.tpl
diff --git a/admin/src/views/dev_tools/code/edit.vue b/admin/src/views/dev_tools/code/edit.vue
index 4d4c5a9..0752649 100644
--- a/admin/src/views/dev_tools/code/edit.vue
+++ b/admin/src/views/dev_tools/code/edit.vue
@@ -217,25 +217,7 @@
/>
-
-
- 压缩包下载
- 自定义路径
-
-
-
-
-
-
-
+
{
}
const handleGenerate = async (selectData: any[]) => {
- const downloadTables = getTables(selectData, 0)
- const genTables = getTables(selectData, 1)
+ const downloadTables = getTables(selectData)
if (downloadTables) {
const file = await downloadCode({ tables: downloadTables })
streamFileDownload(file, 'code_' + downloadTables + '.zip')
}
- if (genTables) {
- await generateCode({ tables: genTables })
- feedback.msgSuccess('生成成功')
- }
}
-const getTables = (selectData: any[], type: 0 | 1) => {
- return selectData
- .filter(({ genType }) => genType == type)
- .map(({ tableName }) => tableName)
- .join()
+const getTables = (selectData: any[]) => {
+ return selectData.map(({ tableName }) => tableName).join()
}
const handleCommand = (command: any, row: any) => {
diff --git a/server/generator/gen/gen.go b/server/generator/gen/gen.go
index 67a0d2a..0ae5742 100644
--- a/server/generator/gen/gen.go
+++ b/server/generator/gen/gen.go
@@ -129,20 +129,20 @@ func (gh genHandler) previewCode(c *gin.Context) {
response.CheckAndRespWithData(c, res, err)
}
-// genCode 生成代码
-func (gh genHandler) genCode(c *gin.Context) {
- var genReq GenCodeReq
- if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &genReq)) {
- return
- }
- for _, table := range strings.Split(genReq.Tables, ",") {
- err := gh.Service.GenCode(table)
- if response.IsFailWithResp(c, err) {
- return
- }
- }
- response.Ok(c)
-}
+// // genCode 生成代码,生成到服务器自定义路径存在风险,禁止使用
+// func (gh genHandler) genCode(c *gin.Context) {
+// var genReq GenCodeReq
+// if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &genReq)) {
+// return
+// }
+// for _, table := range strings.Split(genReq.Tables, ",") {
+// err := gh.Service.GenCode(table)
+// if response.IsFailWithResp(c, err) {
+// return
+// }
+// }
+// response.Ok(c)
+// }
// downloadCode 下载代码
func (gh genHandler) downloadCode(c *gin.Context) {
diff --git a/server/generator/gen/schema.go b/server/generator/gen/schema.go
index 91f4d5c..1286c1c 100644
--- a/server/generator/gen/schema.go
+++ b/server/generator/gen/schema.go
@@ -62,23 +62,22 @@ type EditColumn struct {
// EditTableReq 编辑表结构参数
type EditTableReq struct {
- ID uint `form:"id" binding:"required,gt=0"` // 主键
- TableName string `form:"tableName" binding:"required,min=1,max=200"` // 表名称
- EntityName string `form:"entityName" binding:"required,min=1,max=200"` // 实体名称
- TableComment string `form:"tableComment" binding:"required,min=1,max=200"` // 表描述
- AuthorName string `form:"authorName" binding:"max=100"` // 作者名称
- Remarks string `form:"remarks" binding:"max=60"` // 备注信息
- GenTpl string `form:"genTpl" binding:"oneof=crud tree"` // 生成模板方式: [crud=单表, tree=树表]
- ModuleName string `form:"moduleName" binding:"required,min=1,max=60"` // 生成模块名
- FunctionName string `form:"functionName" binding:"required,min=1,max=60"` // 生成功能名
- GenType int `form:"genType" binding:"oneof=0 1"` // 生成代码方式: [0=zip压缩包, 1=自定义路径]
- GenPath string `form:"genPath,default=/" binding:"required,max=60"` // 生成路径
- TreePrimary string `form:"treePrimary"` // 树表主键
- TreeParent string `form:"treeParent"` // 树表父键
- TreeName string `form:"treeName"` // 树表名称
- SubTableName string `form:"subTableName"` // 子表名称
- SubTableFk string `form:"subTableFk"` // 子表外键
- Columns []EditColumn `form:"columns" binding:"required"` // 字段列表
+ ID uint `form:"id" binding:"required,gt=0"` // 主键
+ TableName string `form:"tableName" binding:"required,min=1,max=200"` // 表名称
+ EntityName string `form:"entityName" binding:"required,min=1,max=200"` // 实体名称
+ TableComment string `form:"tableComment" binding:"required,min=1,max=200"` // 表描述
+ AuthorName string `form:"authorName" binding:"max=100"` // 作者名称
+ Remarks string `form:"remarks" binding:"max=60"` // 备注信息
+ GenTpl string `form:"genTpl" binding:"oneof=crud tree"` // 生成模板方式: [crud=单表, tree=树表]
+ ModuleName string `form:"moduleName" binding:"required,min=1,max=60"` // 生成模块名
+ FunctionName string `form:"functionName" binding:"required,min=1,max=60"` // 生成功能名
+
+ TreePrimary string `form:"treePrimary"` // 树表主键
+ TreeParent string `form:"treeParent"` // 树表父键
+ TreeName string `form:"treeName"` // 树表名称
+ SubTableName string `form:"subTableName"` // 子表名称
+ SubTableFk string `form:"subTableFk"` // 子表外键
+ Columns []EditColumn `form:"columns" binding:"required"` // 字段列表
}
// DelTableReq 删除表结构参数
@@ -111,8 +110,8 @@ type DbTableResp struct {
// GenTableResp 生成表返回信息
type GenTableResp struct {
- ID uint `json:"id" structs:"id"` // 主键
- GenType int `json:"genType" structs:"genType"` // 生成类型
+ ID uint `json:"id" structs:"id"` // 主键
+
TableName string `json:"tableName" structs:"tableName"` // 表名称
TableComment string `json:"tableComment" structs:"tableComment"` // 表描述
CreateTime core.TsTime `json:"createTime" structs:"createTime"` // 创建时间
@@ -133,9 +132,8 @@ type GenTableBaseResp struct {
// GenTableGenResp 生成表生成返回信息
type GenTableGenResp struct {
- GenTpl string `json:"genTpl" structs:"genTpl"` // 生成模板方式: [crud=单表, tree=树表]
- GenType int `json:"genType" structs:"genType"` // 生成代码方式: [0=zip压缩包, 1=自定义路径]
- GenPath string `json:"genPath" structs:"genPath"` // 生成代码路径: [不填默认项目路径]
+ GenTpl string `json:"genTpl" structs:"genTpl"` // 生成模板方式: [crud=单表, tree=树表]
+
ModuleName string `json:"moduleName" structs:"moduleName"` // 生成模块名
FunctionName string `json:"functionName" structs:"functionName"` // 生成功能名
TreePrimary string `json:"treePrimary" structs:"treePrimary"` // 树主键字段
diff --git a/server/generator/gen/service.go b/server/generator/gen/service.go
index c55ed3a..b3550a8 100644
--- a/server/generator/gen/service.go
+++ b/server/generator/gen/service.go
@@ -383,31 +383,6 @@ func (genSrv generateService) PreviewCode(id uint) (res map[string]string, e err
return
}
-// GenCode 生成代码 (自定义路径)
-func (genSrv generateService) GenCode(tableName string) (e error) {
- var genTable gen_model.GenTable
- err := genSrv.db.Where("table_name = ?", tableName).Order("id desc").Limit(1).First(&genTable).Error
- if e = response.CheckErrDBNotRecord(err, "记录丢失!"); e != nil {
- return
- }
- if e = response.CheckErr(err, "GenCode First err"); e != nil {
- return
- }
- //获取模板内容
- tplCodeMap, err := genSrv.renderCodeByTable(genTable)
- if e = response.CheckErr(err, "GenCode renderCodeByTable err"); e != nil {
- return
- }
- //获取生成根路径
- basePath := tpl_utils.TemplateUtil.GetGenPath(genTable)
- //生成代码文件
- err = tpl_utils.TemplateUtil.GenCodeFiles(tplCodeMap, genTable.TableName, basePath)
- if e = response.CheckErr(err, "GenCode GenCodeFiles err"); e != nil {
- return
- }
- return
-}
-
// genZipCode 生成代码 (压缩包下载)
func (genSrv generateService) genZipCode(zipWriter *zip.Writer, tableName string) (e error) {
var genTable gen_model.GenTable
diff --git a/server/generator/templates/gocode/controller.go copy.tpl b/server/generator/templates/gocode/controller.go copy.tpl
deleted file mode 100644
index 45c660b..0000000
--- a/server/generator/templates/gocode/controller.go copy.tpl
+++ /dev/null
@@ -1,82 +0,0 @@
-package {{{ .TableName }}}
-
-import (
- "github.com/gin-gonic/gin"
- "x_admin/admin/schemas/req"
- "x_admin/admin/service/system"
- "x_admin/core"
- "x_admin/core/request"
- "x_admin/core/response"
- "x_admin/middleware"
- "x_admin/util"
-)
-
-
-func {{{ title (toCamelCase .ModuleName) }}}Route(rg *gin.RouterGroup) {
- db := core.GetDB()
-
- server := New{{{ title (toCamelCase .EntityName) }}}Service(db)
-
- handle := productHandler{service: server}
-
- rg = rg.Group("/", middleware.TokenAuth())
- rg.GET("/{{{ .ModuleName }}}/list", handle.List)
- rg.GET("/{{{ .ModuleName }}}/detail", handle.Detail)
- rg.POST("/{{{ .ModuleName }}}/add", handle.Add)
- rg.POST("/{{{ .ModuleName }}}/edit", handle.Edit)
- rg.POST("/{{{ .ModuleName }}}/del", handle.Del)
-}
-type {{{ toCamelCase .ModuleName }}}Handler struct {
- service I{{{ title (toCamelCase .EntityName) }}}Service
-}
-
-//list {{{ .ModuleName }}}列表
-func (hd {{{ toCamelCase .ModuleName }}}Handler) List(c *gin.Context) {
- var page request.PageReq
- var listReq {{{ title (toCamelCase .EntityName) }}}ListReq
- if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &page)) {
- return
- }
- if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &listReq)) {
- return
- }
- res, err := hd.service.List(page, listReq)
- response.CheckAndRespWithData(c, res, err)
-}
-
-//detail {{{ .ModuleName }}}详情
-func (hd {{{ toCamelCase .ModuleName }}}Handler) Detail(c *gin.Context) {
- var detailReq {{{ title (toCamelCase .EntityName) }}}DetailReq
- if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &detailReq)) {
- return
- }
- res, err := hd.service.Detail(detailReq.{{{ title (toCamelCase .PrimaryKey) }}})
- response.CheckAndRespWithData(c, res, err)
-}
-
-//add {{{ .ModuleName }}}新增
-func (hd {{{ toCamelCase .ModuleName }}}Handler) Add(c *gin.Context) {
- var addReq {{{ title (toCamelCase .EntityName) }}}AddReq
- if response.IsFailWithResp(c, util.VerifyUtil.VerifyBody(c, &addReq)) {
- return
- }
- response.CheckAndResp(c, hd.service.Add(addReq))
-}
-
-//edit {{{ .ModuleName }}}编辑
-func (hd {{{ toCamelCase .ModuleName }}}Handler) Edit(c *gin.Context) {
- var editReq {{{ title (toCamelCase .EntityName) }}}EditReq
- if response.IsFailWithResp(c, util.VerifyUtil.VerifyBody(c, &editReq)) {
- return
- }
- response.CheckAndResp(c, hd.service.Edit(editReq))
-}
-
-//del {{{ .ModuleName }}}删除
-func (hd {{{ toCamelCase .ModuleName }}}Handler) Del(c *gin.Context) {
- var delReq {{{ title (toCamelCase .EntityName) }}}DelReq
- if response.IsFailWithResp(c, util.VerifyUtil.VerifyBody(c, &delReq)) {
- return
- }
- response.CheckAndResp(c, hd.service.Del(delReq.{{{ title (toCamelCase .PrimaryKey) }}}))
-}
diff --git a/server/generator/templates/gocode/controller.go.tpl b/server/generator/templates/gocode/controller.go.tpl
deleted file mode 100644
index 706b3e3..0000000
--- a/server/generator/templates/gocode/controller.go.tpl
+++ /dev/null
@@ -1,64 +0,0 @@
-package {{{ .ModuleName }}}
-
-import (
- "github.com/gin-gonic/gin"
- "x_admin/core/request"
- "x_admin/core/response"
- "x_admin/util"
-)
-
-
-type {{{ title (toCamelCase .ModuleName) }}}Handler struct {
- Service I{{{ title (toCamelCase .EntityName) }}}Service
-}
-
-//list {{{ .ModuleName }}}列表
-func (hd {{{ title (toCamelCase .ModuleName) }}}Handler) List(c *gin.Context) {
- var page request.PageReq
- var listReq {{{ title (toCamelCase .EntityName) }}}ListReq
- if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &page)) {
- return
- }
- if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &listReq)) {
- return
- }
- res, err := hd.Service.List(page, listReq)
- response.CheckAndRespWithData(c, res, err)
-}
-
-//detail {{{ .ModuleName }}}详情
-func (hd {{{ title (toCamelCase .ModuleName) }}}Handler) Detail(c *gin.Context) {
- var detailReq {{{ title (toCamelCase .EntityName) }}}DetailReq
- if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &detailReq)) {
- return
- }
- res, err := hd.Service.Detail(detailReq.{{{ title (toCamelCase .PrimaryKey) }}})
- response.CheckAndRespWithData(c, res, err)
-}
-
-//add {{{ .ModuleName }}}新增
-func (hd {{{ title (toCamelCase .ModuleName) }}}Handler) Add(c *gin.Context) {
- var addReq {{{ title (toCamelCase .EntityName) }}}AddReq
- if response.IsFailWithResp(c, util.VerifyUtil.VerifyBody(c, &addReq)) {
- return
- }
- response.CheckAndResp(c, hd.Service.Add(addReq))
-}
-
-//edit {{{ .ModuleName }}}编辑
-func (hd {{{ title (toCamelCase .ModuleName) }}}Handler) Edit(c *gin.Context) {
- var editReq {{{ title (toCamelCase .EntityName) }}}EditReq
- if response.IsFailWithResp(c, util.VerifyUtil.VerifyBody(c, &editReq)) {
- return
- }
- response.CheckAndResp(c, hd.Service.Edit(editReq))
-}
-
-//del {{{ .ModuleName }}}删除
-func (hd {{{ title (toCamelCase .ModuleName) }}}Handler) Del(c *gin.Context) {
- var delReq {{{ title (toCamelCase .EntityName) }}}DelReq
- if response.IsFailWithResp(c, util.VerifyUtil.VerifyBody(c, &delReq)) {
- return
- }
- response.CheckAndResp(c, hd.Service.Del(delReq.{{{ title (toCamelCase .PrimaryKey) }}}))
-}
diff --git a/server/generator/templates/gocode/model.go.tpl b/server/generator/templates/gocode/model.go.tpl
deleted file mode 100644
index f3b8434..0000000
--- a/server/generator/templates/gocode/model.go.tpl
+++ /dev/null
@@ -1,10 +0,0 @@
-package model
-
-//{{{ title (toCamelCase .EntityName) }}} {{{ .FunctionName }}}实体
-type {{{ title (toCamelCase .EntityName) }}} struct {
- {{{- range .Columns }}}
- {{{- if not (contains $.SubTableFields .ColumnName) }}}
- {{{ title (toCamelCase .GoField) }}} {{{ if eq .GoType "core.TsTime" }}} int64 {{{ else }}} {{{ .GoType }}} {{{ end }}} `gorm:"{{{ if .IsPk }}}primarykey;{{{ end }}}comment:'{{{ .ColumnComment }}}'"` // {{{ .ColumnComment }}}
- {{{- end }}}
- {{{- end }}}
-}
diff --git a/server/generator/templates/gocode/route.go.tpl b/server/generator/templates/gocode/route.go.tpl
deleted file mode 100644
index 339bb2a..0000000
--- a/server/generator/templates/gocode/route.go.tpl
+++ /dev/null
@@ -1,42 +0,0 @@
-package admin
-
-import (
- "github.com/gin-gonic/gin"
- "x_admin/core"
- "x_admin/middleware"
- "x_admin/admin/{{{ .ModuleName }}}"
-)
-
-/**
-集成
-1. 导入
-- 请先提交git避免文件覆盖!!!
-- 下载并解压压缩包后,直接复制server、admin文件夹到项目根目录即可
-
-2. 注册路由
-请在 admin/entry.go 文件引入{{{ title (toCamelCase .ModuleName) }}}Route注册路由
-
-3. 后台手动添加菜单和按钮
-{{{ .ModuleName }}}:add
-{{{.ModuleName }}}:edit
-{{{.ModuleName }}}:del
-{{{.ModuleName }}}:list
-{{{.ModuleName }}}:detail
-*/
-
-
-// {{{ title (toCamelCase .ModuleName) }}}Route(rg)
-func {{{ title (toCamelCase .ModuleName) }}}Route(rg *gin.RouterGroup) {
- db := core.GetDB()
-
- server := {{{ .ModuleName }}}.New{{{ title (toCamelCase .EntityName) }}}Service(db)
-
- handle := {{{ .ModuleName}}}.{{{ title (toCamelCase .EntityName) }}}Handler{Service: server}
-
- rg = rg.Group("/", middleware.TokenAuth())
- rg.GET("/{{{ .ModuleName }}}/list", handle.List)
- rg.GET("/{{{ .ModuleName }}}/detail", handle.Detail)
- rg.POST("/{{{ .ModuleName }}}/add", handle.Add)
- rg.POST("/{{{ .ModuleName }}}/edit", handle.Edit)
- rg.POST("/{{{ .ModuleName }}}/del", handle.Del)
-}
\ No newline at end of file
diff --git a/server/generator/templates/gocode/schema.go.tpl b/server/generator/templates/gocode/schema.go.tpl
deleted file mode 100644
index 6e22027..0000000
--- a/server/generator/templates/gocode/schema.go.tpl
+++ /dev/null
@@ -1,57 +0,0 @@
-package {{{ .ModuleName }}}
-
-import "x_admin/core"
-
-//{{{ title (toCamelCase .EntityName) }}}ListReq {{{ .FunctionName }}}列表参数
-type {{{ title (toCamelCase .EntityName) }}}ListReq struct {
- {{{- range .Columns }}}
- {{{- if .IsQuery }}}
- {{{ title (toCamelCase .GoField) }}} {{{ .GoType }}} `form:"{{{ toCamelCase .GoField }}}"` // {{{ .ColumnComment }}}
- {{{- end }}}
- {{{- end }}}
-}
-
-//{{{ title (toCamelCase .EntityName) }}}DetailReq {{{ .FunctionName }}}详情参数
-type {{{ title (toCamelCase .EntityName) }}}DetailReq struct {
- {{{- range .Columns }}}
- {{{- if .IsPk }}}
- {{{ title (toCamelCase .GoField) }}} {{{ .GoType }}} `form:"{{{ toCamelCase .GoField }}}"` // {{{ .ColumnComment }}}
- {{{- end }}}
- {{{- end }}}
-}
-
-//{{{ title (toCamelCase .EntityName) }}}AddReq {{{ .FunctionName }}}新增参数
-type {{{ title (toCamelCase .EntityName) }}}AddReq struct {
- {{{- range .Columns }}}
- {{{- if .IsInsert }}}
- {{{ title (toCamelCase .GoField) }}} {{{ .GoType }}} `form:"{{{ toCamelCase .GoField }}}"` // {{{ .ColumnComment }}}
- {{{- end }}}
- {{{- end }}}
-}
-
-//{{{ title (toCamelCase .EntityName) }}}EditReq {{{ .FunctionName }}}新增参数
-type {{{ title (toCamelCase .EntityName) }}}EditReq struct {
- {{{- range .Columns }}}
- {{{- if .IsEdit }}}
- {{{ title (toCamelCase .GoField) }}} {{{ .GoType }}} `form:"{{{ toCamelCase .GoField }}}"` // {{{ .ColumnComment }}}
- {{{- end }}}
- {{{- end }}}
-}
-
-//{{{ title (toCamelCase .EntityName) }}}DelReq {{{ .FunctionName }}}新增参数
-type {{{ title (toCamelCase .EntityName) }}}DelReq struct {
- {{{- range .Columns }}}
- {{{- if .IsPk }}}
- {{{ title (toCamelCase .GoField) }}} {{{ .GoType }}} `form:"{{{ toCamelCase .GoField }}}"` // {{{ .ColumnComment }}}
- {{{- end }}}
- {{{- end }}}
-}
-
-//{{{ title (toCamelCase .EntityName) }}}Resp {{{ .FunctionName }}}返回信息
-type {{{ title (toCamelCase .EntityName) }}}Resp struct {
- {{{- range .Columns }}}
- {{{- if or .IsList .IsPk }}}
- {{{ title (toCamelCase .GoField) }}} {{{ .GoType }}} `json:"{{{ toCamelCase .GoField }}}" structs:"{{{ toCamelCase .GoField }}}"` // {{{ .ColumnComment }}}
- {{{- end }}}
- {{{- end }}}
-}
diff --git a/server/generator/templates/gocode/service.go.tpl b/server/generator/templates/gocode/service.go.tpl
deleted file mode 100644
index 1141574..0000000
--- a/server/generator/templates/gocode/service.go.tpl
+++ /dev/null
@@ -1,141 +0,0 @@
-package {{{ .ModuleName }}}
-
-import (
- "x_admin/core/request"
- "x_admin/core/response"
- "x_admin/model"
- "gorm.io/gorm"
-)
-
-type I{{{ title (toCamelCase .EntityName) }}}Service interface {
- List(page request.PageReq, listReq {{{ title (toCamelCase .EntityName) }}}ListReq) (res response.PageResp, e error)
- Detail(id int) (res {{{ title (toCamelCase .EntityName) }}}Resp, e error)
- Add(addReq {{{ title (toCamelCase .EntityName) }}}AddReq) (e error)
- Edit(editReq {{{ title (toCamelCase .EntityName) }}}EditReq) (e error)
- Del(id int) (e error)
-}
-
-//New{{{ title (toCamelCase .EntityName) }}}Service 初始化
-func New{{{ title (toCamelCase .EntityName) }}}Service(db *gorm.DB) I{{{ title (toCamelCase .EntityName) }}}Service {
- return &{{{ toCamelCase .EntityName }}}Service{db: db}
-}
-
-//{{{ toCamelCase .EntityName }}}Service {{{ .FunctionName }}}服务实现类
-type {{{ toCamelCase .EntityName }}}Service struct {
- db *gorm.DB
-}
-
-//List {{{ .FunctionName }}}列表
-func (Service {{{ toCamelCase .EntityName }}}Service) List(page request.PageReq, listReq {{{ title (toCamelCase .EntityName) }}}ListReq) (res response.PageResp, e error) {
- // 分页信息
- limit := page.PageSize
- offset := page.PageSize * (page.PageNo - 1)
- // 查询
- dbModel := Service.db.Model(&model.{{{ title (toCamelCase .EntityName) }}}{})
- {{{- range .Columns }}}
- {{{- if .IsQuery }}}
- {{{- $queryOpr := index $.ModelOprMap .QueryType }}}
- {{{- if and (eq .GoType "string") (eq $queryOpr "like") }}}
- if listReq.{{{ title (toCamelCase .ColumnName) }}} != "" {
- dbModel = dbModel.Where("{{{ .ColumnName }}} like ?", "%"+listReq.{{{ title (toCamelCase .ColumnName) }}}+"%")
- }
- {{{- else }}}
- if listReq.{{{ title (toCamelCase .ColumnName) }}} {{{ if eq .GoType "string" }}}!= ""{{{ else }}}> 0{{{ end }}} {
- dbModel = dbModel.Where("{{{ .ColumnName }}} = ?", listReq.{{{ title (toCamelCase .ColumnName) }}})
- }
- {{{- end }}}
- {{{- end }}}
- {{{- end }}}
- {{{- if contains .AllFields "is_delete" }}}
- dbModel = dbModel.Where("is_delete = ?", 0)
- {{{- end }}}
- // 总数
- var count int64
- err := dbModel.Count(&count).Error
- if e = response.CheckErr(err, "List Count err"); e != nil {
- return
- }
- // 数据
- var objs []model.{{{ title (toCamelCase .EntityName) }}}
- err = dbModel.Limit(limit).Offset(offset).Order("id desc").Find(&objs).Error
- if e = response.CheckErr(err, "List Find err"); e != nil {
- return
- }
- resps := []{{{ title (toCamelCase .EntityName) }}}Resp{}
- response.Copy(&resps, objs)
- return response.PageResp{
- PageNo: page.PageNo,
- PageSize: page.PageSize,
- Count: count,
- Lists: resps,
- }, nil
-}
-
-//Detail {{{ .FunctionName }}}详情
-func (Service {{{ toCamelCase .EntityName }}}Service) Detail(id int) (res {{{ title (toCamelCase .EntityName) }}}Resp, e error) {
- var obj model.{{{ title (toCamelCase .EntityName) }}}
- err := Service.db.Where("{{{ $.PrimaryKey }}} = ?{{{ if contains .AllFields "is_delete" }}} AND is_delete = ?{{{ end }}}", id{{{ if contains .AllFields "is_delete" }}}, 0{{{ end }}}).Limit(1).First(&obj).Error
- if e = response.CheckErrDBNotRecord(err, "数据不存在!"); e != nil {
- return
- }
- if e = response.CheckErr(err, "Detail First err"); e != nil {
- return
- }
- response.Copy(&res, obj)
- {{{- range .Columns }}}
- {{{- if and .IsEdit (contains (slice "image" "avatar" "logo" "img") .GoField) }}}
- res.Avatar = util.UrlUtil.ToAbsoluteUrl(res.Avatar)
- {{{- end }}}
- {{{- end }}}
- return
-}
-
-//Add {{{ .FunctionName }}}新增
-func (Service {{{ toCamelCase .EntityName }}}Service) Add(addReq {{{ title (toCamelCase .EntityName) }}}AddReq) (e error) {
- var obj model.{{{ title (toCamelCase .EntityName) }}}
- response.Copy(&obj, addReq)
- err := Service.db.Create(&obj).Error
- e = response.CheckErr(err, "Add Create err")
- return
-}
-
-//Edit {{{ .FunctionName }}}编辑
-func (Service {{{ toCamelCase .EntityName }}}Service) Edit(editReq {{{ title (toCamelCase .EntityName) }}}EditReq) (e error) {
- var obj model.{{{ title (toCamelCase .EntityName) }}}
- err := Service.db.Where("{{{ $.PrimaryKey }}} = ?{{{ if contains .AllFields "is_delete" }}} AND is_delete = ?{{{ end }}}", editReq.Id{{{ if contains .AllFields "is_delete" }}}, 0{{{ end }}}).Limit(1).First(&obj).Error
- // 校验
- if e = response.CheckErrDBNotRecord(err, "数据不存在!"); e != nil {
- return
- }
- if e = response.CheckErr(err, "Edit First err"); e != nil {
- return
- }
- // 更新
- response.Copy(&obj, editReq)
- err = Service.db.Model(&obj).Updates(obj).Error
- e = response.CheckErr(err, "Edit Updates err")
- return
-}
-
-//Del {{{ .FunctionName }}}删除
-func (Service {{{ toCamelCase .EntityName }}}Service) Del(id int) (e error) {
- var obj model.{{{ title (toCamelCase .EntityName) }}}
- err := Service.db.Where("{{{ $.PrimaryKey }}} = ?{{{ if contains .AllFields "is_delete" }}} AND is_delete = ?{{{ end }}}", id{{{ if contains .AllFields "is_delete" }}}, 0{{{ end }}}).Limit(1).First(&obj).Error
- // 校验
- if e = response.CheckErrDBNotRecord(err, "数据不存在!"); e != nil {
- return
- }
- if e = response.CheckErr(err, "Del First err"); e != nil {
- return
- }
- // 删除
- {{{- if contains .AllFields "is_delete" }}}
- obj.IsDelete = 1
- err = Service.db.Save(&obj).Error
- e = response.CheckErr(err, "Del Save err")
- {{{- else }}}
- err = Service.db.Delete(&obj).Error
- e = response.CheckErr(err, "Del Delete err")
- {{{- end }}}
- return
-}
diff --git a/server/generator/templates/vue/api.ts.tpl b/server/generator/templates/vue/api.ts.tpl
deleted file mode 100644
index 9617572..0000000
--- a/server/generator/templates/vue/api.ts.tpl
+++ /dev/null
@@ -1,26 +0,0 @@
-import request from '@/utils/request'
-
-// {{{.FunctionName}}}列表
-export function {{{.ModuleName}}}_lists(params?: Record) {
- return request.get({ url: '/{{{.ModuleName}}}/list', params })
-}
-
-// {{{.FunctionName}}}详情
-export function {{{.ModuleName}}}_detail(params: Record) {
- return request.get({ url: '/{{{.ModuleName}}}/detail', params })
-}
-
-// {{{.FunctionName}}}新增
-export function {{{.ModuleName}}}_add(params: Record) {
- return request.post({ url: '/{{{.ModuleName}}}/add', params })
-}
-
-// {{{.FunctionName}}}编辑
-export function {{{.ModuleName}}}_edit(params: Record) {
- return request.post({ url: '/{{{.ModuleName}}}/edit', params })
-}
-
-// {{{.FunctionName}}}删除
-export function {{{.ModuleName}}}_delete(params: Record) {
- return request.post({ url: '/{{{.ModuleName}}}/del', params })
-}
diff --git a/server/generator/templates/vue/edit.vue.tpl b/server/generator/templates/vue/edit.vue.tpl
deleted file mode 100644
index a79cad0..0000000
--- a/server/generator/templates/vue/edit.vue.tpl
+++ /dev/null
@@ -1,252 +0,0 @@
-
-
-
-
diff --git a/server/generator/templates/vue/index-tree.vue.tpl b/server/generator/templates/vue/index-tree.vue.tpl
deleted file mode 100644
index a401d5d..0000000
--- a/server/generator/templates/vue/index-tree.vue.tpl
+++ /dev/null
@@ -1,222 +0,0 @@
-
-
-
-
- {{{- range .Columns }}}
- {{{- if eq .IsQuery 1 }}}
- {{{- if eq .HtmlType "datetime" }}}
-
-
-
- {{{- else if or (eq .HtmlType "select") (eq .HtmlType "radio") }}}
-
-
- {{{- if eq .DictType "" }}}
-
- {{{- else }}}
-
-
- {{{- end }}}
-
-
- {{{- else if eq .HtmlType "input" }}}
-
-
-
- {{{- end }}}
- {{{- end }}}
- {{{- end }}}
-
- 查询
- 重置
-
-
-
-
-
-
-
-
-
- 新增
-
- 展开/折叠
-
-
- {{{- range .Columns }}}
- {{{- if .IsList }}}
- {{{- if and (ne .DictType "") (or (eq .HtmlType "select") (eq .HtmlType "radio") (eq .HtmlType "checkbox")) }}}
-
-
-
-
-
- {{{- else if eq .HtmlType "imageUpload" }}}
-
-
-
-
-
- {{{- else }}}
-
- {{{- end }}}
- {{{- end }}}
- {{{- end }}}
-
-
-
- 新增
-
-
- 编辑
-
-
- 删除
-
-
-
-
-
-
-
-
-
diff --git a/server/generator/templates/vue/index.vue.tpl b/server/generator/templates/vue/index.vue.tpl
deleted file mode 100644
index 65261fa..0000000
--- a/server/generator/templates/vue/index.vue.tpl
+++ /dev/null
@@ -1,183 +0,0 @@
-
-
-
-
- {{{- range .Columns }}}
- {{{- if eq .IsQuery 1 }}}
- {{{- if eq .HtmlType "datetime" }}}
-
-
-
- {{{- else if or (eq .HtmlType "select") (eq .HtmlType "radio") }}}
-
-
- {{{- if eq .DictType "" }}}
-
- {{{- else }}}
-
-
- {{{- end }}}
-
-
- {{{- else if eq .HtmlType "input" }}}
-
-
-
- {{{- end }}}
- {{{- end }}}
- {{{- end }}}
-
- 查询
- 重置
-
-
-
-
-
-
-
-
-
- 新增
-
-
-
- {{{- range .Columns }}}
- {{{- if .IsList }}}
- {{{- if and (ne .DictType "") (or (eq .HtmlType "select") (eq .HtmlType "radio") (eq .HtmlType "checkbox")) }}}
-
-
-
-
-
- {{{- else if eq .HtmlType "imageUpload" }}}
-
-
-
-
-
- {{{- else }}}
-
- {{{- end }}}
- {{{- end }}}
- {{{- end }}}
-
-
-
- 编辑
-
-
- 删除
-
-
-
-
-
-
-
-
-
-
diff --git a/server/generator/tpl_utils/tpl.go b/server/generator/tpl_utils/tpl.go
index 95091d8..afa1190 100644
--- a/server/generator/tpl_utils/tpl.go
+++ b/server/generator/tpl_utils/tpl.go
@@ -5,11 +5,9 @@ import (
"bytes"
"embed"
"io"
- "os"
"path"
"strings"
"text/template"
- "x_admin/config"
"x_admin/core/response"
"x_admin/model/gen_model"
"x_admin/util"
@@ -194,23 +192,14 @@ func (tu templateUtil) Render(tplPath string, tplVars TplVars) (res string, e er
return "", e
}
buf := &bytes.Buffer{}
- basePath := path.Base(tplPath)
- err = tpl.ExecuteTemplate(buf, basePath, tplVars)
+ fileName := path.Base(tplPath)
+ err = tpl.ExecuteTemplate(buf, fileName, tplVars)
if e = response.CheckErr(err, "TemplateUtil.Render Execute err"); e != nil {
return "", e
}
return buf.String(), nil
}
-// GetGenPath 获取生成路径
-func (tu templateUtil) GetGenPath(table gen_model.GenTable) string {
- if table.GenPath == "/" {
- //return path.Join(config.Config.RootPath, config.GenConfig.GenRootPath)
- return config.GenConfig.GenRootPath
- }
- return table.GenPath
-}
-
// GetFilePaths 获取生成文件相对路径
func (tu templateUtil) GetFilePaths(tplCodeMap map[string]string, TableName string) map[string]string {
//模板文件对应的输出文件
@@ -235,26 +224,6 @@ func (tu templateUtil) GetFilePaths(tplCodeMap map[string]string, TableName stri
return filePath
}
-// GenCodeFiles 生成代码文件
-func (tu templateUtil) GenCodeFiles(tplCodeMap map[string]string, TableName string, basePath string) error {
- filePaths := tu.GetFilePaths(tplCodeMap, TableName)
- for file, tplCode := range filePaths {
- filePath := path.Join(basePath, file)
- dir := path.Dir(filePath)
- if !util.ToolsUtil.IsFileExist(dir) {
- err := os.MkdirAll(dir, 0755)
- if err != nil {
- return response.CheckErr(err, "TemplateUtil.GenCodeFiles MkdirAll err")
- }
- }
- err := os.WriteFile(filePath, []byte(tplCode), 0644)
- if err != nil {
- return response.CheckErr(err, "TemplateUtil.GenCodeFiles WriteFile err")
- }
- }
- return nil
-}
-
func addFileToZip(zipWriter *zip.Writer, file zFile) error {
header := &zip.FileHeader{
Name: file.Name,
diff --git a/server/model/gen_model/gen.go b/server/model/gen_model/gen.go
index 7c6f92c..8a46493 100644
--- a/server/model/gen_model/gen.go
+++ b/server/model/gen_model/gen.go
@@ -15,11 +15,10 @@ type GenTable struct {
TreeParent string `gorm:"not null;default:'';comment:'树父级字段'"`
TreeName string `gorm:"not null;default:'';comment:'树显示字段'"`
GenTpl string `gorm:"not null;default:'crud';comment:'生成模板方式: [crud=单表, tree=树表]'"`
- GenType int `gorm:"not null;default:0;comment:'生成代码方式: [0=zip压缩包, 1=自定义路径]'"`
- GenPath string `gorm:"not null;default:'/';comment:'生成代码路径: [不填默认项目路径]'"`
- Remarks string `gorm:"not null;default:'';comment:'备注信息'"`
- CreateTime int64 `gorm:"autoCreateTime;not null;comment:'创建时间'"`
- UpdateTime int64 `gorm:"autoUpdateTime;not null;comment:'更新时间'"`
+
+ Remarks string `gorm:"not null;default:'';comment:'备注信息'"`
+ CreateTime int64 `gorm:"autoCreateTime;not null;comment:'创建时间'"`
+ UpdateTime int64 `gorm:"autoUpdateTime;not null;comment:'更新时间'"`
}
//GenTableColumn 代码生成表列实体