From 009866ee31e5256e9d315deb932c3958944bb284 Mon Sep 17 00:00:00 2001 From: wenjianzhang Date: Fri, 7 May 2021 17:56:15 +0800 Subject: [PATCH] =?UTF-8?q?feat=E2=9C=A8=20=EF=BC=9A=E6=9B=B4=E6=96=B0api?= =?UTF-8?q?=E5=86=99=E6=B3=95=EF=BC=8C=E5=90=8C=E6=AD=A5=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E6=A8=A1=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sys_china_area_data.go | 12 ++++---- app/admin/apis/sys_file/sys_file_dir.go | 8 ++--- common/apis/api.go | 27 +++++++++++++++-- common/apis/request_logger.go | 22 +++++--------- go.mod | 2 +- template/v4/dto.go.template | 17 ++--------- template/v4/no_actions/apis.go.template | 29 +++++++++++-------- 7 files changed, 62 insertions(+), 55 deletions(-) diff --git a/app/admin/apis/sys_china_area_data/sys_china_area_data.go b/app/admin/apis/sys_china_area_data/sys_china_area_data.go index 80599aa4..bdf82982 100644 --- a/app/admin/apis/sys_china_area_data/sys_china_area_data.go +++ b/app/admin/apis/sys_china_area_data/sys_china_area_data.go @@ -18,7 +18,7 @@ type SysChinaAreaData struct { } func (e SysChinaAreaData) GetSysChinaAreaDataList(c *gin.Context) { - e.Context = c + e.SetContext(c) log := e.GetLogger() d := new(dto.SysChinaAreaDataSearch) db, err := e.GetOrm() @@ -52,7 +52,7 @@ func (e SysChinaAreaData) GetSysChinaAreaDataList(c *gin.Context) { } func (e SysChinaAreaData) GetSysChinaAreaData(c *gin.Context) { - e.Context = c + e.SetContext(c) log := e.GetLogger() control := new(dto.SysChinaAreaDataById) db, err := e.GetOrm() @@ -85,7 +85,7 @@ func (e SysChinaAreaData) GetSysChinaAreaData(c *gin.Context) { } func (e SysChinaAreaData) InsertSysChinaAreaData(c *gin.Context) { - e.Context = c + e.SetContext(c) log := e.GetLogger() control := new(dto.SysChinaAreaDataControl) db, err := e.GetOrm() @@ -122,7 +122,7 @@ func (e SysChinaAreaData) InsertSysChinaAreaData(c *gin.Context) { } func (e SysChinaAreaData) UpdateSysChinaAreaData(c *gin.Context) { - e.Context = c + e.SetContext(c) log := e.GetLogger() control := new(dto.SysChinaAreaDataControl) db, err := e.GetOrm() @@ -159,7 +159,7 @@ func (e SysChinaAreaData) UpdateSysChinaAreaData(c *gin.Context) { } func (e SysChinaAreaData) DeleteSysChinaAreaData(c *gin.Context) { - e.Context = c + e.SetContext(c) log := e.GetLogger() control := new(dto.SysChinaAreaDataById) db, err := e.GetOrm() @@ -192,4 +192,4 @@ func (e SysChinaAreaData) DeleteSysChinaAreaData(c *gin.Context) { return } e.OK(control.GetId(), "删除成功") -} +} \ No newline at end of file diff --git a/app/admin/apis/sys_file/sys_file_dir.go b/app/admin/apis/sys_file/sys_file_dir.go index d275638c..8d8f349a 100644 --- a/app/admin/apis/sys_file/sys_file_dir.go +++ b/app/admin/apis/sys_file/sys_file_dir.go @@ -19,7 +19,7 @@ type SysFileDir struct { } func (e SysFileDir) GetSysFileDirList(c *gin.Context) { - e.Context = c + e.SetContext(c) log := e.GetLogger() search := new(dto.SysFileDirSearch) db, err := e.GetOrm() @@ -49,7 +49,7 @@ func (e SysFileDir) GetSysFileDirList(c *gin.Context) { func (e SysFileDir) GetSysFileDir(c *gin.Context) { control := new(dto.SysFileDirById) - e.Context = c + e.SetContext(c) log := e.GetLogger() db, err := e.GetOrm() if err != nil { @@ -81,7 +81,7 @@ func (e SysFileDir) GetSysFileDir(c *gin.Context) { func (e SysFileDir) InsertSysFileDir(c *gin.Context) { control := new(dto.SysFileDirControl) - e.Context = c + e.SetContext(c) log := e.GetLogger() db, err := e.GetOrm() if err != nil { @@ -195,4 +195,4 @@ func (e SysFileDir) DeleteSysFileDir(c *gin.Context) { return } e.OK(control.Id, "删除成功") -} +} \ No newline at end of file diff --git a/common/apis/api.go b/common/apis/api.go index 3c14fb73..c85ef686 100644 --- a/common/apis/api.go +++ b/common/apis/api.go @@ -1,6 +1,7 @@ package apis import ( + "github.com/gin-gonic/gin/binding" "net/http" "github.com/gin-gonic/gin" @@ -13,11 +14,33 @@ import ( type Api struct { Context *gin.Context + Logger *logger.Logger +} + +func (e Api) SetContext(c *gin.Context) { + e.Context = c + e.Logger = api.GetRequestLogger(c) } // GetLogger 获取上下文提供的日志 func (e Api) GetLogger() *logger.Logger { - return api.GetRequestLogger(e.Context) + return e.Logger +} + +func (e Api) Bind(d interface{}, bindings ...binding.Binding) error { + var err error + for i := range bindings { + switch bindings[i] { + case binding.JSON: + err = e.Context.ShouldBindWith(d, binding.JSON) + default: + err = e.Context.ShouldBindUri(d) + } + if err != nil { + return err + } + } + return nil } // GetOrm 获取Orm DB @@ -48,4 +71,4 @@ func (e Api) PageOK(result interface{}, count int, pageIndex int, pageSize int, // Custom 兼容函数 func (e Api) Custom(data gin.H) { response.Custum(e.Context, data) -} +} \ No newline at end of file diff --git a/common/apis/request_logger.go b/common/apis/request_logger.go index 71f7a7ef..d3df51c4 100644 --- a/common/apis/request_logger.go +++ b/common/apis/request_logger.go @@ -1,18 +1,10 @@ package apis -import ( - "github.com/gin-gonic/gin" - "github.com/go-admin-team/go-admin-core/sdk" - "github.com/go-admin-team/go-admin-core/sdk/pkg" - "github.com/go-admin-team/go-admin-core/sdk/pkg/logger" - "strings" -) - // GetRequestLogger 获取上下文提供的日志 -func GetRequestLogger(c *gin.Context) *logger.Logger { - requestId := pkg.GenerateMsgIDFromContext(c) - log := sdk.Runtime.GetLogger().Fields(map[string]interface{}{ - strings.ToLower(pkg.TrafficKey): requestId, - }) - return &logger.Logger{Logger: log} -} +//func GetRequestLogger(c *gin.Context) *logger.Logger { +// requestId := pkg.GenerateMsgIDFromContext(c) +// log := sdk.Runtime.GetLogger().Fields(map[string]interface{}{ +// strings.ToLower(pkg.TrafficKey): requestId, +// }) +// return &logger.Logger{Logger: log} +//} \ No newline at end of file diff --git a/go.mod b/go.mod index 2adfaa40..d1c744e1 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/bytedance/go-tagexpr/v2 v2.7.10 github.com/casbin/casbin/v2 v2.25.1 github.com/gin-gonic/gin v1.6.3 - github.com/go-admin-team/go-admin-core v1.3.5-rc.0 + github.com/go-admin-team/go-admin-core v1.3.5-rc.0.0.20210423072631-e3580b68ee26 github.com/go-admin-team/go-admin-core/sdk v1.3.0-rc.3.0.20210427015751-b42693c49c6c github.com/google/uuid v1.2.0 github.com/mssola/user_agent v0.5.2 diff --git a/template/v4/dto.go.template b/template/v4/dto.go.template index 5b9ce208..d53c432a 100644 --- a/template/v4/dto.go.template +++ b/template/v4/dto.go.template @@ -2,7 +2,6 @@ package dto import ( "errors" - vd "github.com/bytedance/go-tagexpr/v2/validator" "github.com/gin-gonic/gin" "github.com/go-admin-team/go-admin-core/sdk/api" @@ -12,12 +11,12 @@ import ( ) type {{.ClassName}}Search struct { - dto.Pagination `search:"-" vd:"-"` + dto.Pagination `search:"-"` {{ $tablename := .TBName -}} {{ range .Columns -}} {{$z := .IsQuery}} {{- if ($z) -}} - {{.GoField}} {{.GoType}} `form:"{{.JsonField}}" vd:"?" search:"type:{{if eq .QueryType "EQ"}}exact{{ else if eq .QueryType "NE"}}iexact{{ else if eq .QueryType "LIKE"}}contains{{ else if eq .QueryType "GT"}}gt{{ else if eq .QueryType "GTE"}}gte{{ else if eq .QueryType "LT"}}lt{{ else if eq .QueryType "LTE"}}lte{{- end }};column:{{.ColumnName}};table:{{$tablename}}" comment:"{{.ColumnComment}}"` + {{.GoField}} {{.GoType}} `form:"{{.JsonField}}" search:"type:{{if eq .QueryType "EQ"}}exact{{ else if eq .QueryType "NE"}}iexact{{ else if eq .QueryType "LIKE"}}contains{{ else if eq .QueryType "GT"}}gt{{ else if eq .QueryType "GTE"}}gte{{ else if eq .QueryType "LT"}}lt{{ else if eq .QueryType "LTE"}}lte{{- end }};column:{{.ColumnName}};table:{{$tablename}}" comment:"{{.ColumnComment}}"` {{ end -}} {{- end }} } @@ -37,10 +36,6 @@ func (m *{{.ClassName}}Search) Bind(ctx *gin.Context) error { if err != nil { log.Errorf("ShouldBind error: %s", err.Error()) } - if err1 := vd.Validate(s); err != nil { - log.Errorf("Validate error: %s", err1.Error()) - return err1 - } return err } @@ -77,10 +72,6 @@ func (s *{{.ClassName}}Control) Bind(ctx *gin.Context) error { log.Errorf("ShouldBind error: %s", err.Error()) err = errors.New("数据绑定出错") } - if err1 := vd.Validate(s); err != nil { - log.Errorf("Validate error: %s", err1.Error()) - return err1 - } return err } @@ -130,10 +121,6 @@ func (s *{{.ClassName}}ById) Bind(ctx *gin.Context) error { log.Errorf("ShouldBind error: %s", err.Error()) err = errors.New("数据绑定出错") } - if err1 := vd.Validate(s); err != nil { - log.Errorf("Validate error: %s", err1.Error()) - return err1 - } return err } diff --git a/template/v4/no_actions/apis.go.template b/template/v4/no_actions/apis.go.template index 4af74e22..7c025523 100644 --- a/template/v4/no_actions/apis.go.template +++ b/template/v4/no_actions/apis.go.template @@ -31,8 +31,9 @@ type {{.ClassName}} struct { // @Router /api/v1/{{.ModuleName}} [get] // @Security Bearer // Get{{.ClassName}}List 获取{{.TableComment}}列表 -func (e *{{.ClassName}}) Get{{.ClassName}}List(c *gin.Context) { - log := e.GetLogger(c) +func (e {{.ClassName}}) Get{{.ClassName}}List(c *gin.Context) { + e.SetContext(c) + log := e.GetLogger() db, err := e.GetOrm(c) if err != nil { log.Error(err) @@ -74,8 +75,9 @@ func (e *{{.ClassName}}) Get{{.ClassName}}List(c *gin.Context) { // @Router /api/v1/{{.ModuleName}}/{id} [get] // @Security Bearer // Get{{.ClassName}} 获取{{.TableComment}} -func (e *{{.ClassName}}) Get{{.ClassName}}(c *gin.Context) { - log := e.GetLogger(c) +func (e {{.ClassName}}) Get{{.ClassName}}(c *gin.Context) { + e.SetContext(c) + log := e.GetLogger() db, err := e.GetOrm(c) if err != nil { log.Error(err) @@ -118,8 +120,9 @@ func (e *{{.ClassName}}) Get{{.ClassName}}(c *gin.Context) { // @Success 200 {object} response.Response "{"code": 200, "message": "添加成功"}" // @Router /api/v1/{{.ModuleName}} [post] // Insert{{.ClassName}} 创建{{.TableComment}} -func (e *{{.ClassName}}) Insert{{.ClassName}}(c *gin.Context) { - log := e.GetLogger(c) +func (e {{.ClassName}}) Insert{{.ClassName}}(c *gin.Context) { + e.SetContext(c) + log := e.GetLogger() db, err := e.GetOrm(c) if err != nil { log.Error(err) @@ -164,10 +167,11 @@ func (e *{{.ClassName}}) Insert{{.ClassName}}(c *gin.Context) { // @Product application/json // @Param data body dto.{{.ClassName}}Control true "body" // @Success 200 {object} response.Response "{"code": 200, "message": "修改成功"}" -// @Router /api/v1/{{.ModuleName}} [put] +// @Router /api/v1/{{.ModuleName}}/{id} [put] // Update{{.ClassName}} 修改{{.TableComment}} -func (e *{{.ClassName}}) Update{{.ClassName}}(c *gin.Context) { - log := e.GetLogger(c) +func (e {{.ClassName}}) Update{{.ClassName}}(c *gin.Context) { + e.SetContext(c) + log := e.GetLogger() db, err := e.GetOrm(c) if err != nil { log.Error(err) @@ -213,8 +217,9 @@ func (e *{{.ClassName}}) Update{{.ClassName}}(c *gin.Context) { // @Success 200 {object} response.Response "{"code": 200, "message": "删除成功"}" // @Router /api/v1/{{.ModuleName}} [delete] // Delete{{.ClassName}} 删除{{.TableComment}} -func (e *{{.ClassName}}) Delete{{.ClassName}}(c *gin.Context) { - log := e.GetLogger(c) +func (e {{.ClassName}}) Delete{{.ClassName}}(c *gin.Context) { + e.SetContext(c) + log := e.GetLogger() db, err := e.GetOrm(c) if err != nil { log.Error(err) @@ -247,4 +252,4 @@ func (e *{{.ClassName}}) Delete{{.ClassName}}(c *gin.Context) { return } e.OK(c, control.GetId(), "删除成功") -} +} \ No newline at end of file