* 新增 tools 包:统一工具定义、注册表与 Server 接口,对齐 MCP 规范 * 新增 websocket 包:泛化连接管理、心跳、并发写锁与优雅关闭 * 新增参数读取工具函数,避免类型断言静默失败 * 新增 OSS 路径识别与 JSON 扁平映射还原工具 * 修复租户 SQL 条件插入位置,正确处理 GROUP BY 与 ORDER BY 同时出现的场景
48 lines
1.3 KiB
Go
48 lines
1.3 KiB
Go
package tools
|
|
|
|
import "github.com/gogf/gf/v2/util/gconv"
|
|
|
|
// 标准入参读取。LLM/外部传入的 map[string]any 中数值可能是 float64、int 或字符串,
|
|
// 直接类型断言极易静默失败,统一走 gconv 强转。
|
|
|
|
// HasArg 判断参数是否存在且非 nil
|
|
func HasArg(args map[string]any, key string) bool {
|
|
v, ok := args[key]
|
|
return ok && v != nil
|
|
}
|
|
|
|
// ArgString 读取字符串参数
|
|
func ArgString(args map[string]any, key string) string {
|
|
return gconv.String(args[key])
|
|
}
|
|
|
|
// ArgInt 读取整数参数(自动兼容 float64/int/字符串)
|
|
func ArgInt(args map[string]any, key string) int {
|
|
return gconv.Int(args[key])
|
|
}
|
|
|
|
// ArgFloat64 读取浮点参数
|
|
func ArgFloat64(args map[string]any, key string) float64 {
|
|
return gconv.Float64(args[key])
|
|
}
|
|
|
|
// ArgBool 读取布尔参数
|
|
func ArgBool(args map[string]any, key string) bool {
|
|
return gconv.Bool(args[key])
|
|
}
|
|
|
|
// ArgSlice 读取切片参数
|
|
func ArgSlice(args map[string]any, key string) []any {
|
|
return gconv.SliceAny(args[key])
|
|
}
|
|
|
|
// ArgStrings 读取字符串切片参数
|
|
func ArgStrings(args map[string]any, key string) []string {
|
|
return gconv.Strings(args[key])
|
|
}
|
|
|
|
// ArgMap 读取对象参数
|
|
func ArgMap(args map[string]any, key string) map[string]any {
|
|
return gconv.Map(args[key])
|
|
}
|