diff --git a/go.mod b/go.mod index 157dcf3..7c474ad 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module git.zhangdeman.cn/gateway/api-doc go 1.22.2 require ( - git.zhangdeman.cn/zhangdeman/consts v0.0.0-20240425085343-09fdf2f01e4f + git.zhangdeman.cn/zhangdeman/consts v0.0.0-20240425091616-00e0a924efcd git.zhangdeman.cn/zhangdeman/wrapper v0.0.0-20240422034417-8c922be06d95 ) diff --git a/go.sum b/go.sum index 7fb8a1a..91960cd 100644 --- a/go.sum +++ b/go.sum @@ -6,6 +6,8 @@ git.zhangdeman.cn/zhangdeman/consts v0.0.0-20240425083843-f40760f6ee22 h1:98cFHV git.zhangdeman.cn/zhangdeman/consts v0.0.0-20240425083843-f40760f6ee22/go.mod h1:IXXaZkb7vGzGnGM5RRWrASAuwrVSNxuoe0DmeXx5g6k= git.zhangdeman.cn/zhangdeman/consts v0.0.0-20240425085343-09fdf2f01e4f h1:bbn19GoW7ScVB6BybUthRqsc4hxc0EqmGyCICXlXkr8= git.zhangdeman.cn/zhangdeman/consts v0.0.0-20240425085343-09fdf2f01e4f/go.mod h1:IXXaZkb7vGzGnGM5RRWrASAuwrVSNxuoe0DmeXx5g6k= +git.zhangdeman.cn/zhangdeman/consts v0.0.0-20240425091616-00e0a924efcd h1:RBFDiEMI97fuzpyb5HBN4lu3UXTAGYo6nlGhV2gWq5U= +git.zhangdeman.cn/zhangdeman/consts v0.0.0-20240425091616-00e0a924efcd/go.mod h1:IXXaZkb7vGzGnGM5RRWrASAuwrVSNxuoe0DmeXx5g6k= git.zhangdeman.cn/zhangdeman/easymap v0.0.0-20240311030808-e2a2e6a3c211 h1:I/wOsRpCSRkU9vo1u703slQsmK0wnNeZzsWQOGtIAG0= git.zhangdeman.cn/zhangdeman/easymap v0.0.0-20240311030808-e2a2e6a3c211/go.mod h1:SrtvrQRdzt+8KfYzvosH++gWxo2ShPTzR1m3VQ6uX7U= git.zhangdeman.cn/zhangdeman/serialize v0.0.0-20240325080031-1f58204e8687 h1:uQcGqdzi4UdpZlp4f4FUPeBqoygP58pEKJkmN3ROsE0= diff --git a/swagger/run.go b/swagger/run.go index 554ecb4..33acd2d 100644 --- a/swagger/run.go +++ b/swagger/run.go @@ -302,6 +302,18 @@ func handleOneLevelSubPath(swaggerInfo *define.Swagger, uri string, parentPath s // 长度为1, 还不在 body, 无需生成结构体 return } + if isGlobalMapType(paramConfig.Type) { + swaggerInfo.Definitions[parentPath].Properties[subPath] = &define.SwaggerDefinitionProperty{ + Description: paramConfig.Description, + Type: consts.SwaggerDataTypeObject, + AllOf: []map[string]string{ + { + consts.SwaggerRefKey: getRefValue(consts.SwaggerBaseObjectDefinitionName), + }, + }, + } + return + } initAnyDefinition(swaggerInfo, parentPath) if paramConfig.Required { swaggerInfo.Definitions[parentPath].Required = append(swaggerInfo.Definitions[parentPath].Required, subPath) @@ -325,14 +337,14 @@ func setGlobalMapDefinition(swaggerInfo *define.Swagger, dataType string) { if !isGlobalMapType(dataType) { return } - // 只要最终类型存在mao, 就一定会用到 global_map + // 只要最终类型存在mao, 就一定会用到 consts.SwaggerBaseObjectDefinitionName if nil == swaggerInfo.Definitions { swaggerInfo.Definitions = map[string]*define.SwaggerDefinition{} } - if _, exist := swaggerInfo.Definitions["global_map"]; exist { + if _, exist := swaggerInfo.Definitions[consts.SwaggerBaseObjectDefinitionName]; exist { return } - swaggerInfo.Definitions["global_map"] = &define.SwaggerDefinition{ + swaggerInfo.Definitions[consts.SwaggerBaseObjectDefinitionName] = &define.SwaggerDefinition{ Type: consts.SwaggerDataTypeObject, Required: make([]string, 0), Properties: make(map[string]*define.SwaggerDefinitionProperty), diff --git a/swagger/run_test.go b/swagger/run_test.go index 4b3e43d..e82c023 100644 --- a/swagger/run_test.go +++ b/swagger/run_test.go @@ -109,6 +109,14 @@ func TestGenerate(t *testing.T) { Required: true, EnumList: nil, }, + &define.SwaggerParameterInput{ + Type: consts.DataTypeMapAnyAny, + Description: "测试global_map", + Name: "obj", + In: "body", + Required: true, + EnumList: nil, + }, }, ResponseList: []*define.SwaggerResponseInput{ &define.SwaggerResponseInput{