From 258112d38e2263de9d9e6b1021a9bd4eff964d88 Mon Sep 17 00:00:00 2001 From: black1552 Date: Wed, 4 Feb 2026 16:19:36 +0800 Subject: [PATCH] =?UTF-8?q?feat(valid):=20=E6=9B=B4=E6=96=B0=E9=AA=8C?= =?UTF-8?q?=E8=AF=81=E5=8A=9F=E8=83=BD=E6=94=AF=E6=8C=81=E5=A4=9A=E7=A7=8D?= =?UTF-8?q?=E7=BB=91=E5=AE=9A=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改 ValidToStruct 函数使用 c.Bind 替代 c.BindJSON - 新增 ValidToMap 函数支持将参数验证后转换为 map 类型 - 更新 ValidToStructAndMap 函数使用 c.Bind 进行参数绑定 - 添加相应的错误处理和类型转换逻辑 - 更新项目缓存配置文件中的文件扫描路径信息 --- .idea/GOHCache.xml | 47 ++++++++++++++++++++++++++++++++++++++++++++-- valid/valid.go | 16 ++++++++++++++-- 2 files changed, 59 insertions(+), 4 deletions(-) diff --git a/.idea/GOHCache.xml b/.idea/GOHCache.xml index 829d21b..c9c824c 100644 --- a/.idea/GOHCache.xml +++ b/.idea/GOHCache.xml @@ -90,6 +90,7 @@ + @@ -97,6 +98,7 @@ + @@ -340,7 +342,7 @@ - @@ -366,6 +368,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -382,7 +425,7 @@ - diff --git a/valid/valid.go b/valid/valid.go index b0f4c68..1278f49 100644 --- a/valid/valid.go +++ b/valid/valid.go @@ -10,7 +10,7 @@ import ( // ValidToStruct 验证参数并返回结构体 func ValidToStruct[T any](c *gin.Context) (object *T) { obj := new(T) - if err := c.BindJSON(obj); err != nil { + if err := c.Bind(obj); err != nil { panic(err) } if err := g.Validator().Data(obj).Run(c); err != nil { @@ -19,10 +19,22 @@ func ValidToStruct[T any](c *gin.Context) (object *T) { return obj } +// ValidToMap 验证参数并返回结构体 +func ValidToMap[T any](c *gin.Context) (object map[string]any) { + obj := new(T) + if err := c.Bind(obj); err != nil { + panic(err) + } + if err := g.Validator().Data(obj).Run(c); err != nil { + panic(gerror.Current(err).Error()) + } + return gconv.Map(obj) +} + // ValidToStructAndMap 验证参数并返回map func ValidToStructAndMap[T any](c *gin.Context) (stru *T, object map[string]any) { obj := new(T) - if err := c.BindJSON(obj); err != nil { + if err := c.Bind(obj); err != nil { panic(err) } if err := g.Validator().Data(obj).Run(c); err != nil {