diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/GenerateProxyCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/GenerateProxyCommand.cs index efde5b1074..17fe2d3781 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/GenerateProxyCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/GenerateProxyCommand.cs @@ -121,7 +121,7 @@ namespace Volo.Abp.Cli.Commands actionName = (char.ToLower(actionName[0]) + actionName.Substring(1)).Replace("Async", "").Replace("Controller", ""); - var returnValueType = (string)action["returnValue"]["type"]; + var returnValueType = (string)action["returnValue"]["type"]; var parameters = action["parameters"]; var parametersText = new StringBuilder(); @@ -136,10 +136,10 @@ namespace Volo.Abp.Cli.Commands var bindingSourceId = (string)parameter["bindingSourceId"]; bindingSourceId = char.ToLower(bindingSourceId[0]) + bindingSourceId.Substring(1); - var name = (string)parameter["name"]; + var name = (string)parameter["name"]; var typeSimple = (string)parameter["typeSimple"]; var typeArray = ((string)parameter["type"]).Split("."); - var type = typeArray[typeArray.Length - 1]; + var type = (typeArray[typeArray.Length - 1]).TrimEnd('>'); var isOptional = (bool)parameter["isOptional"]; var defaultValue = (string)parameter["defaultValue"]; @@ -209,6 +209,13 @@ namespace Volo.Abp.Cli.Commands { foreach (var parameterItem in parameterModel.OrderBy(p => p.DisplayOrder)) { + var parameterItemModelName = parameterItem.Type.PascalToKebabCase() + ".ts"; + var parameterItemModelPath = $"src/app/{rootPath}/shared/models/{parameterItemModelName}"; + if (parameterItem.BindingSourceId == "body" && !File.Exists(parameterItemModelPath)) + { + parameterItem.Type = "any"; + } + parametersIndex++; if (parametersIndex > 1) @@ -222,7 +229,7 @@ namespace Volo.Abp.Cli.Commands { modelBindingExtraList.Add(parameterItem.Name); } - else if (parameterItem.BindingSourceId == "body") + else if (parameterItem.BindingSourceId == "body" && File.Exists(parameterItemModelPath)) { secondTypeList.Add(parameterItem.Type); } @@ -237,7 +244,14 @@ namespace Volo.Abp.Cli.Commands var firstType = firstTypeArray[firstTypeArray.Length - 1]; var secondTypeArray = returnValueType.Split("<")[1].Split("."); - var secondType = secondTypeArray[secondTypeArray.Length - 1].TrimEnd('>'); + var secondType = secondTypeArray[secondTypeArray.Length - 1].TrimEnd('>'); + + var secondTypeModelName = secondType.PascalToKebabCase() + ".ts"; + var secondTypeModelPath = $"src/app/{rootPath}/shared/models/{secondTypeModelName}"; + if (firstType == "List" && !File.Exists(secondTypeModelPath)) + { + secondType = "any"; + } serviceFileText.AppendLine( firstType == "List" @@ -248,7 +262,11 @@ namespace Volo.Abp.Cli.Commands { firstTypeList.Add(firstType); } - secondTypeList.Add(secondType); + + if (secondType != "any") + { + secondTypeList.Add(secondType); + } } else { @@ -286,7 +304,7 @@ namespace Volo.Abp.Cli.Commands modelBindingExtra = ", params: { " + string.Join(", ", modelBindingExtraList.ToArray()) + " }"; } - var url = (((string)action["url"]).Replace("/{", "/${")).ToLower(); + var url = ((string)action["url"]).Replace("/{", "/${"); var httpMethod = (string)action["httpMethod"]; serviceFileText.AppendLine( @@ -347,6 +365,8 @@ namespace Volo.Abp.Cli.Commands File.WriteAllText($"src/app/{rootPath}/shared/models/index.ts", modelIndexFileText.ToString()); } + + Logger.LogInformation("Completed!"); } private Dictionary GetCombinedModules(JToken data, string module) @@ -378,7 +398,7 @@ namespace Volo.Abp.Cli.Commands } private static string CreateType(JObject data, string returnValueType, string rootPath, List modelIndexList) - { + { var type = data["types"][returnValueType]; if (type == null) @@ -390,6 +410,7 @@ namespace Volo.Abp.Cli.Commands || returnValueType.StartsWith("System.Collections") || returnValueType == "System.String" || returnValueType == "System.Void" + || returnValueType.Contains("System.Net.HttpStatusCode?") || returnValueType.Contains("IActionResult") || returnValueType.Contains("ActionResult") || returnValueType.Contains("IStringValueType") @@ -402,7 +423,12 @@ namespace Volo.Abp.Cli.Commands var typeNameSplit = returnValueType.Split("."); var typeName = typeNameSplit[typeNameSplit.Length - 1]; - var typeModelName = typeName.Replace("<", "").Replace(">", "").PascalToKebabCase() + ".ts"; + if (typeName.Contains("HttpStatusCode")) + { + + } + + var typeModelName = typeName.Replace("<", "").Replace(">", "").Replace("?","").PascalToKebabCase() + ".ts"; var path = $"src/app/{rootPath}/shared/models/{typeModelName}"; @@ -503,7 +529,7 @@ namespace Volo.Abp.Cli.Commands ) { var typeSimpleModelName = typeSimple.PascalToKebabCase() + ".ts"; - var modelPath = $"src/app/{rootPath}/shared/models/{typeSimpleModelName}"; + var modelPath = $"src/app/{rootPath}/shared/models/{typeSimpleModelName}"; if (!File.Exists(modelPath)) { typeSimple = "any" + (typeSimple.Contains("[]") ? "[]" : ""); diff --git a/framework/src/Volo.Abp.Cli/Properties/launchSettings.json b/framework/src/Volo.Abp.Cli/Properties/launchSettings.json index b089ad5d59..e7f99eea04 100644 --- a/framework/src/Volo.Abp.Cli/Properties/launchSettings.json +++ b/framework/src/Volo.Abp.Cli/Properties/launchSettings.json @@ -1,8 +1,7 @@ { "profiles": { "Volo.Abp.Cli": { - "commandName": "Project", - "commandLineArgs": "generate-proxy -u angular -m all" + "commandName": "Project" } } } \ No newline at end of file