feat(valid): 添加参数验证并返回map功能

- 新增ValidAndMap函数用于验证参数并返回map类型
- 修改ValidAndStruct函数优化对象绑定逻辑
- 添加gconv包导入支持map转换功能
- 更新IDE缓存配置添加新的验证类型映射
main v1.0.00021
black1552 2026-02-04 14:59:26 +08:00
parent a1a2785c71
commit 0ad7304eca
2 changed files with 54 additions and 5 deletions

View File

@ -87,6 +87,20 @@
</set> </set>
</value> </value>
</entry> </entry>
<entry key="NewsOne">
<value>
<set>
<option value="file://$PROJECT_DIR$/../gin_test/req/new.go" />
</set>
</value>
</entry>
<entry key="NewsSave">
<value>
<set>
<option value="file://$PROJECT_DIR$/../gin_test/req/new.go" />
</set>
</value>
</entry>
<entry key="Paginate"> <entry key="Paginate">
<value> <value>
<set> <set>
@ -326,7 +340,7 @@
<entry key="file://$PROJECT_DIR$/valid/valid.go"> <entry key="file://$PROJECT_DIR$/valid/valid.go">
<value> <value>
<ScannedPath> <ScannedPath>
<option name="lastModified" value="1770185876649" /> <option name="lastModified" value="1770188345045" />
</ScannedPath> </ScannedPath>
</value> </value>
</entry> </entry>
@ -352,6 +366,26 @@
</ScannedPath> </ScannedPath>
</value> </value>
</entry> </entry>
<entry key="file://$PROJECT_DIR$/../gin_test/req/new.go">
<value>
<ScannedPath>
<option name="lastModified" value="1770186504009" />
<option name="schema">
<list>
<option value="NewsOne" />
<option value="NewsSave" />
</list>
</option>
</ScannedPath>
</value>
</entry>
<entry key="file://$PROJECT_DIR$/../gin_test/router/router.go">
<value>
<ScannedPath>
<option name="lastModified" value="1770187001756" />
</ScannedPath>
</value>
</entry>
</map> </map>
</option> </option>
<option name="tableStructMapping"> <option name="tableStructMapping">
@ -368,6 +402,8 @@
<entry key="jwt_config" value="JwtConfig" /> <entry key="jwt_config" value="JwtConfig" />
<entry key="manager" value="Manager" /> <entry key="manager" value="Manager" />
<entry key="msg" value="Msg" /> <entry key="msg" value="Msg" />
<entry key="news_one" value="NewsOne" />
<entry key="news_save" value="NewsSave" />
<entry key="paginate" value="Paginate" /> <entry key="paginate" value="Paginate" />
<entry key="response" value="response" /> <entry key="response" value="response" />
<entry key="server_config" value="ServerConfig" /> <entry key="server_config" value="ServerConfig" />

View File

@ -4,16 +4,29 @@ import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/gogf/gf/v2/errors/gerror" "github.com/gogf/gf/v2/errors/gerror"
"github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/util/gconv"
) )
// ValidAndStruct 验证参数并返回结构体 // ValidAndStruct 验证参数并返回结构体
func ValidAndStruct[T any](c *gin.Context) (object *T) { func ValidAndStruct[T any](c *gin.Context) (object *T) {
object = new(T) obj := new(T)
if err := c.BindJSON(object); err != nil { if err := c.BindJSON(obj); err != nil {
panic(err) panic(err)
} }
if err := g.Validator().Data(object).Run(c); err != nil { if err := g.Validator().Data(obj).Run(c); err != nil {
panic(gerror.Current(err).Error()) panic(gerror.Current(err).Error())
} }
return return obj
}
// ValidAndMap 验证参数并返回map
func ValidAndMap[T any](c *gin.Context) (object map[string]any) {
obj := new(T)
if err := c.BindJSON(obj); err != nil {
panic(err)
}
if err := g.Validator().Data(obj).Run(c); err != nil {
panic(gerror.Current(err).Error())
}
return gconv.Map(obj)
} }