diff --git a/go.mod b/go.mod index 781c65b..fca4588 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/go-sql-driver/mysql v1.7.0 // indirect github.com/gogf/gf/contrib/drivers/mysql/v2 v2.2.5 github.com/gogf/gf/contrib/nosql/redis/v2 v2.3.0 - github.com/gogf/gf/v2 v2.3.1 + github.com/gogf/gf/v2 v2.3.2 github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-runewidth v0.0.14 // indirect github.com/mojocn/base64Captcha v1.3.5 diff --git a/go.sum b/go.sum index d9cd7e8..c149037 100644 --- a/go.sum +++ b/go.sum @@ -58,8 +58,8 @@ github.com/gogf/gf/contrib/nosql/redis/v2 v2.3.0 h1:r2q8MLwF6yUIEm6Hhwsfo/ixaJTK github.com/gogf/gf/contrib/nosql/redis/v2 v2.3.0/go.mod h1:V9o2BF9ovJnaZhHImHAanqUgjX4kI51lgU45u5rPqvw= github.com/gogf/gf/v2 v2.0.0/go.mod h1:apktt6TleWtCIwpz63vBqUnw8MX8gWKoZyxgDpXFtgM= github.com/gogf/gf/v2 v2.3.0/go.mod h1:tsbmtwcAl2chcYoq/fP9W2FZf06aw4i89X34nbSHo9Y= -github.com/gogf/gf/v2 v2.3.1 h1:uptCJK47N6KSRwTBnFAqBWYnYa/OXBkZ0OlhO9CK7bQ= -github.com/gogf/gf/v2 v2.3.1/go.mod h1:tsbmtwcAl2chcYoq/fP9W2FZf06aw4i89X34nbSHo9Y= +github.com/gogf/gf/v2 v2.3.2 h1:nlJ0zuDWqFb93/faZmr7V+GADx/lzz5Unz/9x6OJ2u8= +github.com/gogf/gf/v2 v2.3.2/go.mod h1:tsbmtwcAl2chcYoq/fP9W2FZf06aw4i89X34nbSHo9Y= github.com/golang-jwt/jwt/v4 v4.4.2 h1:rcc4lwaZgFMCZ5jxF9ABolDcIHdBytAFgqFPbSJQAYs= github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g= diff --git a/internal/app/system/logic/toolsGenTable/tools_gen_table.go b/internal/app/system/logic/toolsGenTable/tools_gen_table.go index 1af6f81..60b46f7 100644 --- a/internal/app/system/logic/toolsGenTable/tools_gen_table.go +++ b/internal/app/system/logic/toolsGenTable/tools_gen_table.go @@ -1052,7 +1052,13 @@ func (s *sToolsGenTable) GenCode(ctx context.Context, ids []int) (err error) { liberr.ErrIsNil(ctx, err) } } - //生成对应模块的logic + //生成模块路由 + err = s.genModuleRouter(curDir, goModName, extendData.ModuleName) + liberr.ErrIsNil(ctx, err) + //生成模块boot logic + err = s.genModuleBootLogic(curDir, extendData.ModuleName) + liberr.ErrIsNil(ctx, err) + //生成对应模块的业务logic err = s.genModuleLogic(curDir, goModName, extendData.PackageName) liberr.ErrIsNil(ctx, err) } @@ -1169,7 +1175,7 @@ func (s *sToolsGenTable) trimBreak(str string) (rStr string, err error) { return } -// GenModuleRouter 生成模块路由 +// GenModuleRouter 生成模块logic func (s *sToolsGenTable) genModuleLogic(curDir, goModName, packageName string) (err error) { var ( packages []string @@ -1196,3 +1202,37 @@ func (s *sToolsGenTable) genModuleLogic(curDir, goModName, packageName string) ( err = s.createFile(path+"/logic.go", code, true) return } + +func (s *sToolsGenTable) genModuleRouter(curDir, goModName, moduleName string) (err error) { + path := strings.Join([]string{curDir, "/internal/router/" + moduleName + ".go"}, "") + if gfile.IsFile(path) || moduleName == "system" { + return + } + moduleNameUpper := gstr.CaseCamel(moduleName) + code := fmt.Sprintf(`package router +import ( + "context" + "github.com/gogf/gf/v2/net/ghttp" + %sRouter "%s/internal/app/%s/router" +) + +func (router *Router) Bind%sModuleController(ctx context.Context, group *ghttp.RouterGroup) { + %sRouter.R.BindController(ctx, group) +}`, moduleName, goModName, moduleName, moduleNameUpper, moduleName) + err = s.createFile(path, code, true) + return +} + +func (s *sToolsGenTable) genModuleBootLogic(curDir, moduleName string) (err error) { + path := strings.Join([]string{curDir, "/internal/app/boot/" + moduleName + ".go"}, "") + if gfile.IsFile(path) || moduleName == "system" { + return + } + code := fmt.Sprintf(`package boot +import ( + _ "github.com/tiger1103/gfast/v3/internal/app/%s/logic" +) +`, moduleName) + err = s.createFile(path, code, true) + return +} diff --git a/internal/app/system/router/router.go b/internal/app/system/router/router.go index e5da03e..5fb539e 100644 --- a/internal/app/system/router/router.go +++ b/internal/app/system/router/router.go @@ -53,7 +53,7 @@ func (router *Router) BindController(ctx context.Context, group *ghttp.RouterGro controller.UEditor, //编辑器 ) //自动绑定定义的控制器 - if err := libRouter.RouterAutoBind(router, ctx, group); err != nil { + if err := libRouter.RouterAutoBind(ctx, router, group); err != nil { panic(err) } }) diff --git a/internal/router/router.go b/internal/router/router.go index 1677108..6f1f316 100644 --- a/internal/router/router.go +++ b/internal/router/router.go @@ -13,6 +13,7 @@ import ( commonRouter "github.com/tiger1103/gfast/v3/internal/app/common/router" commonService "github.com/tiger1103/gfast/v3/internal/app/common/service" systemRouter "github.com/tiger1103/gfast/v3/internal/app/system/router" + "github.com/tiger1103/gfast/v3/library/libRouter" ) var R = new(Router) @@ -28,5 +29,9 @@ func (router *Router) BindController(ctx context.Context, group *ghttp.RouterGro systemRouter.R.BindController(ctx, group) // 绑定公共路由 commonRouter.R.BindController(ctx, group) + //自动绑定定义的模块 + if err := libRouter.RouterAutoBind(ctx, router, group); err != nil { + panic(err) + } }) } diff --git a/library/libRouter/router.go b/library/libRouter/router.go index 4ee7d83..77963ab 100644 --- a/library/libRouter/router.go +++ b/library/libRouter/router.go @@ -17,7 +17,7 @@ import ( // RouterAutoBind 收集需要被绑定的控制器,自动绑定 // 路由的方法命名规则必须为:BindXXXController -func RouterAutoBind(R interface{}, ctx context.Context, group *ghttp.RouterGroup) (err error) { +func RouterAutoBind(ctx context.Context, R interface{}, group *ghttp.RouterGroup) (err error) { //TypeOf会返回目标数据的类型,比如int/float/struct/指针等 typ := reflect.TypeOf(R) //ValueOf返回目标数据的的值 diff --git a/resource/template/vm/go/router.template b/resource/template/vm/go/router.template index 232b66e..c4a7d7e 100644 --- a/resource/template/vm/go/router.template +++ b/resource/template/vm/go/router.template @@ -31,7 +31,7 @@ func (router *Router) BindController(ctx context.Context, group *ghttp.RouterGro //后台操作日志记录 group.Hook("/*", ghttp.HookAfterOutput, service.OperateLog().OperationLog) //自动绑定定义的控制器 - if err := libRouter.RouterAutoBind(router, ctx, group); err != nil { + if err := libRouter.RouterAutoBind(ctx, router, group); err != nil { panic(err) } })