Skip to content
This repository was archived by the owner on Apr 10, 2024. It is now read-only.

Commit 9d82ec7

Browse files
committed
opt: 传参模型支持List
1 parent 05247a6 commit 9d82ec7

File tree

2 files changed

+31
-13
lines changed

2 files changed

+31
-13
lines changed

Plugin/src/com/ciy/plugin/utils/ApiServiceGenerate.kt

+9-4
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,18 @@ object ApiServiceGenerate {
3939
}
4040
}
4141
// 传参模型
42-
val requestBodyFile = RequestBodyModelGenerate.createRequestBodyModel(ResponseModelGenerate.captureName("${urlName}ReqModel")
42+
val (requestBodyFile, isList) = RequestBodyModelGenerate.createRequestBodyModel(ResponseModelGenerate.captureName("${urlName}ReqModel")
4343
, rootDir, modelPackName, it)
4444
if (requestBodyFile != null) {
45-
val requestBodyType = ClassName(requestBodyFile.packageName, requestBodyFile.name)
45+
var requestBodyType = ClassName(requestBodyFile.packageName, requestBodyFile.name)
4646
val bodyAnnotationType = ClassName("retrofit2.http", "Body")
47-
funSpecBuilder.addParameter(ParameterSpec.builder("parameter",requestBodyType.copy(true))
48-
.defaultValue("null").addAnnotation(bodyAnnotationType).build())
47+
if (!isList) {
48+
funSpecBuilder.addParameter(ParameterSpec.builder("parameter",requestBodyType.copy(true))
49+
.defaultValue("null").addAnnotation(bodyAnnotationType).build())
50+
} else {
51+
funSpecBuilder.addParameter(ParameterSpec.builder("parameter",LIST.parameterizedBy(requestBodyType).copy(true))
52+
.defaultValue("null").addAnnotation(bodyAnnotationType).build())
53+
}
4954
}
5055
apiServiceBuilder.addFunction(funSpecBuilder.build())
5156
}

Plugin/src/com/ciy/plugin/utils/RequestBodyModelGenerate.kt

+22-9
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,38 @@ import java.io.File
88

99
object RequestBodyModelGenerate {
1010

11-
fun createRequestBodyModel(className: String, rootDir: File, packName: String, apiInfo: ApiInfoBean): FileSpec? {
11+
/**
12+
* @return Boolean 是否是List
13+
*/
14+
fun createRequestBodyModel(className: String, rootDir: File, packName: String, apiInfo: ApiInfoBean): Pair<FileSpec?, Boolean> {
1215
if (apiInfo.req_body_is_json_schema) {
1316
val cacheTypeList = ArrayList<TypeSpec>()
1417
val jsonSchema = Gson().fromJson(apiInfo.req_body_other, JsonSchemaBean::class.java)
15-
val req = ResponseModelGenerate.analysisJsonSchema(jsonSchema, className, cacheTypeList)
16-
val requestBodyFileBuilder = FileSpec.builder(packName, className)
17-
if (req is TypeSpec) {
18+
if (jsonSchema.type == "object") {
19+
ResponseModelGenerate.analysisJsonSchema(jsonSchema, className, cacheTypeList)
20+
val requestBodyFileBuilder = FileSpec.builder(packName, className)
1821
// 普通类
1922
cacheTypeList.forEach {
2023
requestBodyFileBuilder.addType(it)
2124
}
22-
return requestBodyFileBuilder.build().apply {
25+
return Pair(requestBodyFileBuilder.build().apply {
2326
ResponseModelGenerate.writeTo(this, rootDir, cacheTypeList)
27+
}, false)
28+
} else if (jsonSchema.type == "array") {
29+
// 不支持List套List
30+
if (jsonSchema.items.type == "object") {
31+
ResponseModelGenerate.analysisJsonSchema(jsonSchema.items, className, cacheTypeList)
32+
val requestBodyFileBuilder = FileSpec.builder(packName, className)
33+
// 普通类
34+
cacheTypeList.forEach {
35+
requestBodyFileBuilder.addType(it)
36+
}
37+
return Pair(requestBodyFileBuilder.build().apply {
38+
ResponseModelGenerate.writeTo(this, rootDir, cacheTypeList)
39+
}, true)
2440
}
25-
} else if (req is PropertySpec && req.type.toString() == LIST.toString()) {
26-
// List
27-
println(1)
2841
}
2942
}
30-
return null
43+
return Pair(null, false)
3144
}
3245
}

0 commit comments

Comments
 (0)