fix 完善代码生成自动注册模块路由,升级gf版本至2.3.2

This commit is contained in:
yxh 2023-02-15 16:02:16 +08:00
parent 10ed960475
commit 8c29d30580
7 changed files with 53 additions and 8 deletions

2
go.mod
View File

@ -7,7 +7,7 @@ require (
github.com/go-sql-driver/mysql v1.7.0 // indirect 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/drivers/mysql/v2 v2.2.5
github.com/gogf/gf/contrib/nosql/redis/v2 v2.3.0 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-colorable v0.1.13 // indirect
github.com/mattn/go-runewidth v0.0.14 // indirect github.com/mattn/go-runewidth v0.0.14 // indirect
github.com/mojocn/base64Captcha v1.3.5 github.com/mojocn/base64Captcha v1.3.5

4
go.sum
View File

@ -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/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.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.0/go.mod h1:tsbmtwcAl2chcYoq/fP9W2FZf06aw4i89X34nbSHo9Y=
github.com/gogf/gf/v2 v2.3.1 h1:uptCJK47N6KSRwTBnFAqBWYnYa/OXBkZ0OlhO9CK7bQ= github.com/gogf/gf/v2 v2.3.2 h1:nlJ0zuDWqFb93/faZmr7V+GADx/lzz5Unz/9x6OJ2u8=
github.com/gogf/gf/v2 v2.3.1/go.mod h1:tsbmtwcAl2chcYoq/fP9W2FZf06aw4i89X34nbSHo9Y= 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 h1:rcc4lwaZgFMCZ5jxF9ABolDcIHdBytAFgqFPbSJQAYs=
github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= 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= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g=

View File

@ -1052,7 +1052,13 @@ func (s *sToolsGenTable) GenCode(ctx context.Context, ids []int) (err error) {
liberr.ErrIsNil(ctx, err) 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) err = s.genModuleLogic(curDir, goModName, extendData.PackageName)
liberr.ErrIsNil(ctx, err) liberr.ErrIsNil(ctx, err)
} }
@ -1169,7 +1175,7 @@ func (s *sToolsGenTable) trimBreak(str string) (rStr string, err error) {
return return
} }
// GenModuleRouter 生成模块路由 // GenModuleRouter 生成模块logic
func (s *sToolsGenTable) genModuleLogic(curDir, goModName, packageName string) (err error) { func (s *sToolsGenTable) genModuleLogic(curDir, goModName, packageName string) (err error) {
var ( var (
packages []string packages []string
@ -1196,3 +1202,37 @@ func (s *sToolsGenTable) genModuleLogic(curDir, goModName, packageName string) (
err = s.createFile(path+"/logic.go", code, true) err = s.createFile(path+"/logic.go", code, true)
return 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
}

View File

@ -53,7 +53,7 @@ func (router *Router) BindController(ctx context.Context, group *ghttp.RouterGro
controller.UEditor, //编辑器 controller.UEditor, //编辑器
) )
//自动绑定定义的控制器 //自动绑定定义的控制器
if err := libRouter.RouterAutoBind(router, ctx, group); err != nil { if err := libRouter.RouterAutoBind(ctx, router, group); err != nil {
panic(err) panic(err)
} }
}) })

View File

@ -13,6 +13,7 @@ import (
commonRouter "github.com/tiger1103/gfast/v3/internal/app/common/router" commonRouter "github.com/tiger1103/gfast/v3/internal/app/common/router"
commonService "github.com/tiger1103/gfast/v3/internal/app/common/service" commonService "github.com/tiger1103/gfast/v3/internal/app/common/service"
systemRouter "github.com/tiger1103/gfast/v3/internal/app/system/router" systemRouter "github.com/tiger1103/gfast/v3/internal/app/system/router"
"github.com/tiger1103/gfast/v3/library/libRouter"
) )
var R = new(Router) var R = new(Router)
@ -28,5 +29,9 @@ func (router *Router) BindController(ctx context.Context, group *ghttp.RouterGro
systemRouter.R.BindController(ctx, group) systemRouter.R.BindController(ctx, group)
// 绑定公共路由 // 绑定公共路由
commonRouter.R.BindController(ctx, group) commonRouter.R.BindController(ctx, group)
//自动绑定定义的模块
if err := libRouter.RouterAutoBind(ctx, router, group); err != nil {
panic(err)
}
}) })
} }

View File

@ -17,7 +17,7 @@ import (
// RouterAutoBind 收集需要被绑定的控制器,自动绑定 // RouterAutoBind 收集需要被绑定的控制器,自动绑定
// 路由的方法命名规则必须为BindXXXController // 路由的方法命名规则必须为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/指针等 //TypeOf会返回目标数据的类型比如int/float/struct/指针等
typ := reflect.TypeOf(R) typ := reflect.TypeOf(R)
//ValueOf返回目标数据的的值 //ValueOf返回目标数据的的值

View File

@ -31,7 +31,7 @@ func (router *Router) BindController(ctx context.Context, group *ghttp.RouterGro
//后台操作日志记录 //后台操作日志记录
group.Hook("/*", ghttp.HookAfterOutput, service.OperateLog().OperationLog) 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) panic(err)
} }
}) })