Просмотр исходного кода

代码生成自动注册模块路由,插件模块代码生成支持

yxh 4 лет назад
Родитель
Сommit
dc4ee212c9

+ 23 - 0
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
+}

+ 7 - 1
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"}}

+ 13 - 7
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
    })

+ 13 - 7
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}}

+ 7 - 1
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";

+ 7 - 1
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";