diff --git a/app/system/service/tools_gen_table.go b/app/system/service/tools_gen_table.go index 1e711b5..ddc294c 100644 --- a/app/system/service/tools_gen_table.go +++ b/app/system/service/tools_gen_table.go @@ -11,6 +11,7 @@ import ( "bufio" "context" "database/sql" + "fmt" "gfast/app/common/global" comModel "gfast/app/common/model" comService "gfast/app/common/service" @@ -467,12 +468,20 @@ func (s *toolsGenTable) GenCode(ids []int, ctx context.Context) (err error) { case "vue": path := strings.Join([]string{frontDir, "/src/views/", extendData.ModuleName, "/", businessName, "/list/index.vue"}, "") + if gstr.ContainsI(extendData.PackageName, "plugins") { + path = strings.Join([]string{frontDir, "/src/views/plugins/", extendData.ModuleName, "/", businessName, "/list/index.vue"}, "") + } err = s.createFile(path, code, false) case "jsApi": path := strings.Join([]string{frontDir, "/src/api/", extendData.ModuleName, "/", businessName, ".js"}, "") + if gstr.ContainsI(extendData.PackageName, "plugins") { + path = strings.Join([]string{frontDir, "/src/api/plugins/", extendData.ModuleName, "/", businessName, ".js"}, "") + } err = s.createFile(path, code, false) } } + //生成对应的模块路由 + err = s.genModuleRouter(curDir, extendData.ModuleName, extendData.PackageName) } return } @@ -516,6 +525,7 @@ func (s *toolsGenTable) GenData(tableId int64, ctx context.Context) (data g.MapS "CaseCamelLower": gstr.CaseCamelLower, //首字母小写驼峰 "CaseCamel": gstr.CaseCamel, //首字母大写驼峰 "HasSuffix": gstr.HasSuffix, //是否存在后缀 + "ContainsI": gstr.ContainsI, //是否包含子字符串 "VueTag": func(t string) string { return t }, @@ -711,3 +721,16 @@ func (s *toolsGenTable) writeDb(path string, ctx context.Context) (err error) { tx.Commit() return } + +// GenModuleRouter 生成模块路由 +func (s *toolsGenTable) genModuleRouter(curDir, moduleName, packageName string) (err error) { + routerFilePath := strings.Join([]string{curDir, "/router/", gstr.CaseSnake(moduleName), ".go"}, "") + if gstr.ContainsI(packageName, "plugins") { + routerFilePath = strings.Join([]string{curDir, "/plugins/router/", gstr.CaseSnake(moduleName), ".go"}, "") + } + if gstr.CaseSnake(moduleName) != "system" { + code := fmt.Sprintf(`package router%simport _ "%s/router"`, "\n", packageName) + s.createFile(routerFilePath, code, false) + } + return +} diff --git a/template/vm/go/router.template b/template/vm/go/router.template index c977eaa..a6621ea 100644 --- a/template/vm/go/router.template +++ b/template/vm/go/router.template @@ -17,11 +17,17 @@ import ( {{end}} ) +{{$plugin:=""}} +{{if ContainsI $.table.PackageName "plugins"}} +{{$plugin = "plugins/"}} +{{end}} + + //加载路由 func init() { s := g.Server() s.Group("/", func(group *ghttp.RouterGroup) { - group.Group("/{{.table.ModuleName}}", func(group *ghttp.RouterGroup) { + group.Group("/{{$plugin}}{{.table.ModuleName}}", func(group *ghttp.RouterGroup) { group.Group("/{{.table.BusinessName | CaseCamelLower}}", func(group *ghttp.RouterGroup) { //gToken拦截器 {{if ne $.table.ModuleName "system"}} diff --git a/template/vm/js/api.template b/template/vm/js/api.template index 35aa87c..8b8a99e 100644 --- a/template/vm/js/api.template +++ b/template/vm/js/api.template @@ -2,10 +2,16 @@ import request from '@/utils/request' {{$businessName := .table.BusinessName | CaseCamelLower}} +{{$plugin:=""}} +{{if ContainsI $.table.PackageName "plugins"}} +{{$plugin = "plugins/"}} +{{end}} + + // 查询{{.table.FunctionName}}列表 export function list{{.table.ClassName}}(query) { return request({ - url: '/{{.table.ModuleName}}/{{$businessName}}/list', + url: '/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}/list', method: 'get', params: query }) @@ -14,7 +20,7 @@ export function list{{.table.ClassName}}(query) { // 查询{{.table.FunctionName}}详细 export function get{{.table.ClassName}}({{.table.PkColumn.HtmlField}}) { return request({ - url: '/{{.table.ModuleName}}/{{$businessName}}/get', + url: '/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}/get', method: 'get', params: { id: {{.table.PkColumn.HtmlField}}.toString() @@ -25,7 +31,7 @@ export function get{{.table.ClassName}}({{.table.PkColumn.HtmlField}}) { // 新增{{.table.FunctionName}} export function add{{.table.ClassName}}(data) { return request({ - url: '/{{.table.ModuleName}}/{{$businessName}}/add', + url: '/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}/add', method: 'post', data: data }) @@ -34,7 +40,7 @@ export function add{{.table.ClassName}}(data) { // 修改{{.table.FunctionName}} export function update{{.table.ClassName}}(data) { return request({ - url: '/{{.table.ModuleName}}/{{$businessName}}/edit', + url: '/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}/edit', method: 'put', data: data }) @@ -43,7 +49,7 @@ export function update{{.table.ClassName}}(data) { // 删除{{.table.FunctionName}} export function del{{.table.ClassName}}({{.table.PkColumn.HtmlField}}s) { return request({ - url: '/{{.table.ModuleName}}/{{$businessName}}/delete', + url: '/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}/delete', method: 'delete', data:{ ids:{{.table.PkColumn.HtmlField}}s @@ -63,7 +69,7 @@ export function change{{$.table.ClassName}}{{$column.GoField}}({{$.table.PkColum {{$column.HtmlField}} } return request({ - url: '/{{$.table.ModuleName}}/{{$businessName}}/change{{$column.GoField}}', + url: '/{{$plugin}}{{$.table.ModuleName}}/{{$businessName}}/change{{$column.GoField}}', method: 'put', data:data }) @@ -73,7 +79,7 @@ export function change{{$.table.ClassName}}{{$column.GoField}}({{$.table.PkColum // 关联{{$column.LinkTableName}}表选项 export function list{{$column.LinkTableClass}}(query){ return request({ - url: '/{{$.table.ModuleName}}/{{$column.LinkTableName | CaseCamelLower}}/list', + url: '/{{$plugin}}{{$.table.ModuleName}}/{{$column.LinkTableName | CaseCamelLower}}/list', method: 'get', params: query }) diff --git a/template/vm/sql/sql.template b/template/vm/sql/sql.template index 0e619aa..947cbcc 100644 --- a/template/vm/sql/sql.template +++ b/template/vm/sql/sql.template @@ -6,39 +6,45 @@ GFast自动生成菜单SQL,只生成一次,按需修改. 生成人:{{.table.FunctionAuthor}} ========================================================================== */ + +{{$plugin:=""}} +{{if ContainsI $.table.PackageName "plugins"}} +{{$plugin = "plugins/"}} +{{end}} + -- 当前日期 select @now := now(); -- 目录 SQL INSERT INTO `sys_auth_rule` (`pid`,`name`,`title`,`icon`,`condition`,`remark`,`menu_type`,`weigh`,`status`,`always_show`,`path`,`jump_path`,`component`,`is_frame`,`module_type`,`model_id`,`created_at`,`updated_at`,`deleted_at` ) -VALUES(0,'{{.table.ModuleName}}/{{.table.BusinessName | CaseCamelLower}}','{{.table.FunctionName}}管理','form','','{{.table.FunctionName}}管理',0,0,1,1,'{{.table.BusinessName | CaseCamelLower}}','','',0,'sys_admin',0,@now,@now,NULL ); +VALUES(0,'{{$plugin}}{{.table.ModuleName}}/{{.table.BusinessName | CaseCamelLower}}','{{.table.FunctionName}}管理','form','','{{.table.FunctionName}}管理',0,0,1,1,'{{$plugin}}{{.table.BusinessName | CaseCamelLower}}','','',0,'sys_admin',0,@now,@now,NULL ); -- 菜单父目录ID SELECT @parentId := LAST_INSERT_ID(); -- 菜单 SQL INSERT INTO `sys_auth_rule` (`pid`,`name`,`title`,`icon`,`condition`,`remark`,`menu_type`,`weigh`,`status`,`always_show`,`path`,`jump_path`,`component`,`is_frame`,`module_type`,`model_id`,`created_at`,`updated_at`,`deleted_at` ) -VALUES(@parentId,'{{.table.ModuleName}}/{{.table.BusinessName | CaseCamelLower}}/list','{{.table.FunctionName}}列表','list','','{{.table.FunctionName}}列表',1,0,1,1,'{{.table.BusinessName | CaseCamelLower}}List','','{{.table.ModuleName}}/{{.table.BusinessName | CaseCamelLower}}/list',0,'sys_admin',0,@now,@now,NULL ); +VALUES(@parentId,'{{$plugin}}{{.table.ModuleName}}/{{.table.BusinessName | CaseCamelLower}}/list','{{.table.FunctionName}}列表','list','','{{.table.FunctionName}}列表',1,0,1,1,'{{.table.BusinessName | CaseCamelLower}}List','','{{$plugin}}{{.table.ModuleName}}/{{.table.BusinessName | CaseCamelLower}}/list',0,'sys_admin',0,@now,@now,NULL ); -- 按钮父目录ID SELECT @parentId := LAST_INSERT_ID(); -- 按钮 SQL INSERT INTO `sys_auth_rule` (`pid`,`name`,`title`,`icon`,`condition`,`remark`,`menu_type`,`weigh`,`status`,`always_show`,`path`,`jump_path`,`component`,`is_frame`,`module_type`,`model_id`,`created_at`,`updated_at`,`deleted_at` ) -VALUES(@parentId,'{{.table.ModuleName}}/{{.table.BusinessName | CaseCamelLower}}/get','{{.table.FunctionName}}查询','','','{{.table.FunctionName}}查询',2,0,1,1,'','','',0,'sys_admin',0,@now,@now,NULL ); +VALUES(@parentId,'{{$plugin}}{{.table.ModuleName}}/{{.table.BusinessName | CaseCamelLower}}/get','{{.table.FunctionName}}查询','','','{{.table.FunctionName}}查询',2,0,1,1,'','','',0,'sys_admin',0,@now,@now,NULL ); INSERT INTO `sys_auth_rule` (`pid`,`name`,`title`,`icon`,`condition`,`remark`,`menu_type`,`weigh`,`status`,`always_show`,`path`,`jump_path`,`component`,`is_frame`,`module_type`,`model_id`,`created_at`,`updated_at`,`deleted_at` ) -VALUES(@parentId,'{{.table.ModuleName}}/{{.table.BusinessName | CaseCamelLower}}/add','{{.table.FunctionName}}添加','','','{{.table.FunctionName}}添加',2,0,1,1,'','','',0,'sys_admin',0,@now,@now,NULL ); +VALUES(@parentId,'{{$plugin}}{{.table.ModuleName}}/{{.table.BusinessName | CaseCamelLower}}/add','{{.table.FunctionName}}添加','','','{{.table.FunctionName}}添加',2,0,1,1,'','','',0,'sys_admin',0,@now,@now,NULL ); INSERT INTO `sys_auth_rule` (`pid`,`name`,`title`,`icon`,`condition`,`remark`,`menu_type`,`weigh`,`status`,`always_show`,`path`,`jump_path`,`component`,`is_frame`,`module_type`,`model_id`,`created_at`,`updated_at`,`deleted_at` ) -VALUES(@parentId,'{{.table.ModuleName}}/{{.table.BusinessName | CaseCamelLower}}/edit','{{.table.FunctionName}}修改','','','{{.table.FunctionName}}修改',2,0,1,1,'','','',0,'sys_admin',0,@now,@now,NULL ); +VALUES(@parentId,'{{$plugin}}{{.table.ModuleName}}/{{.table.BusinessName | CaseCamelLower}}/edit','{{.table.FunctionName}}修改','','','{{.table.FunctionName}}修改',2,0,1,1,'','','',0,'sys_admin',0,@now,@now,NULL ); INSERT INTO `sys_auth_rule` (`pid`,`name`,`title`,`icon`,`condition`,`remark`,`menu_type`,`weigh`,`status`,`always_show`,`path`,`jump_path`,`component`,`is_frame`,`module_type`,`model_id`,`created_at`,`updated_at`,`deleted_at` ) -VALUES(@parentId,'{{.table.ModuleName}}/{{.table.BusinessName | CaseCamelLower}}/delete','{{.table.FunctionName}}删除','','','{{.table.FunctionName}}删除',2,0,1,1,'','','',0,'sys_admin',0,@now,@now,NULL ); +VALUES(@parentId,'{{$plugin}}{{.table.ModuleName}}/{{.table.BusinessName | CaseCamelLower}}/delete','{{.table.FunctionName}}删除','','','{{.table.FunctionName}}删除',2,0,1,1,'','','',0,'sys_admin',0,@now,@now,NULL ); {{range $index,$column:= .table.Columns}} {{if and (HasSuffix $column.ColumnName "status") (eq $column.IsList "1") }} INSERT INTO `sys_auth_rule` (`pid`,`name`,`title`,`icon`,`condition`,`remark`,`menu_type`,`weigh`,`status`,`always_show`,`path`,`jump_path`,`component`,`is_frame`,`module_type`,`model_id`,`created_at`,`updated_at`,`deleted_at` ) -VALUES(@parentId,'{{$.table.ModuleName}}/{{$.table.BusinessName | CaseCamelLower}}/change{{$column.GoField}}','{{$.table.FunctionName}}{{$column.ColumnComment}}修改','','','{{$.table.FunctionName}}{{$column.ColumnComment}}修改',2,0,1,1,'','','',0,'sys_admin',0,@now,@now,NULL ); +VALUES(@parentId,'{{$plugin}}{{$.table.ModuleName}}/{{$.table.BusinessName | CaseCamelLower}}/change{{$column.GoField}}','{{$.table.FunctionName}}{{$column.ColumnComment}}修改','','','{{$.table.FunctionName}}{{$column.ColumnComment}}修改',2,0,1,1,'','','',0,'sys_admin',0,@now,@now,NULL ); {{end}} {{end}} diff --git a/template/vm/vue/list-vue.template b/template/vm/vue/list-vue.template index 0ede179..d1a7be8 100644 --- a/template/vm/vue/list-vue.template +++ b/template/vm/vue/list-vue.template @@ -318,6 +318,12 @@ {{end}} {{end}} +{{$plugin:=""}} +{{if ContainsI $.table.PackageName "plugins"}} +{{$plugin = "plugins/"}} +{{end}} + + import { list{{.table.ClassName}}, get{{.table.ClassName}}, @@ -335,7 +341,7 @@ import { {{if $getUserList}} getUserList, {{end}} -} from "@/api/{{.table.ModuleName}}/{{$businessName}}"; +} from "@/api/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}"; {{if $editImp}} import Editor from "@/components/CKeditor"; diff --git a/template/vm/vue/tree-vue.template b/template/vm/vue/tree-vue.template index e098e11..bf4c5fb 100644 --- a/template/vm/vue/tree-vue.template +++ b/template/vm/vue/tree-vue.template @@ -322,6 +322,12 @@ {{end}} {{end}} +{{$plugin:=""}} +{{if ContainsI $.table.PackageName "plugins"}} +{{$plugin = "plugins/"}} +{{end}} + + import { list{{.table.ClassName}}, get{{.table.ClassName}}, @@ -339,7 +345,7 @@ import { {{if $getUserList}} getUserList, {{end}} -} from "@/api/{{.table.ModuleName}}/{{$businessName}}"; +} from "@/api/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}"; import Treeselect from "@riophae/vue-treeselect"; import "@riophae/vue-treeselect/dist/vue-treeselect.css";