@{ ModelData modelData = Model; NamespaceObject namespaceObject = modelData.NamespaceObject; SysTableSchemaViewEntity[] sysTableSchemas = modelData.sysTableSchemas; ClassInfo classInfo= modelData.ClassInfos.FirstOrDefault(); //ClassInfo classInfo= modelData.ClassInfos.Where(x=>x.ClassName=="SecurityUserService").FirstOrDefault(); } using CloudBuilder.Core.DependencyInjection.Request; using CloudBuilder.Core.Request; using CloudBuilder.Core.Service; using Microsoft.Extensions.DependencyInjection; @{ if(classInfo.Usings!=null && classInfo.Usings.Length>0) { for (var i = 0; i < classInfo.Usings.Length; i++) { if(classInfo.Usings[i]=="CloudBuilder.Core.Service") continue; using @classInfo.Usings[i]; } } } namespace @namespaceObject.Namespace { public class @{@classInfo.ClassName.Replace("Service", "")}Request : IRequest { private readonly IServiceRequest serviceRequest; public @{@classInfo.ClassName.Replace("Service", "")}Request(IServiceRequest serviceRequest) { this.serviceRequest = serviceRequest; } @{ if(classInfo.ClassMethodInfos!=null && classInfo.ClassMethodInfos.Length>0 && classInfo.ClassMethodInfos[0].Parameters!=null) { for (var j= 0; j< classInfo.ClassMethodInfos.Length; j++) { string methodReturnName="void "; if(classInfo.ClassMethodInfos[j].MethodReturnName!="Void") { methodReturnName=" "+classInfo.ClassMethodInfos[j].MethodReturnName.Replace("String", "string").Replace("Boolean", "bool")+" "; } //没有参数的情况======================================= if(classInfo.ClassMethodInfos[j].Parameters.Length==0) { //文本开始================================================================================================================= public @{ @methodReturnName @classInfo.ClassMethodInfos[j].MethodName }() { @{ //[HttpGet]一定要有返回值,否则使用[HttpPost] if(classInfo.ClassMethodInfos[j].HttpName=="[HttpGet]"){ return Task.Run(() => serviceRequest.GetAsync<@{@classInfo.ClassMethodInfos[j].MethodReturnName.Replace("String", "string").Replace("Boolean", "bool")}>("/@{@classInfo.ClassName.Replace("Service", "")}/@{@classInfo.ClassMethodInfos[j].MethodName}")).GetAwaiter().GetResult(); } else{ //[HttpPost]可以有无返回值 if(classInfo.ClassMethodInfos[j].MethodReturnName!="Void"){return } Task.Run(() => serviceRequest.@{if(classInfo.ClassMethodInfos[j].MethodReturnName!="Void"){PostAsJsonAsync<@{@classInfo.ClassMethodInfos[j].MethodReturnName.Replace("String", "string").Replace("Boolean", "bool")}> }else{PostAsync}}("/@{@classInfo.ClassName.Replace("Service", "")}/@{@classInfo.ClassMethodInfos[j].MethodName}")).GetAwaiter().GetResult(); } } } //文本结束================================================================================================================= } //只有1个参数的情况============================================ if(classInfo.ClassMethodInfos[j].Parameters.Length>0) { //超过1个参数的情况,如果是get,不能用组合对象,如果是post,要重新组合一个类======================================== if(classInfo.ClassMethodInfos[j].Parameters.Length>1 && classInfo.ClassMethodInfos[j].HttpName!="[HttpGet]") { public class @{@classInfo.ClassMethodInfos[j].MethodName}CompositionData@{@classInfo.ClassMethodInfos[j].Parameters.Length} { for (var ik = 0; ik < classInfo.ClassMethodInfos[j].Parameters.Length; ik++){ string parameterTypeName=classInfo.ClassMethodInfos[j].Parameters[ik].ParameterTypeName; if(classInfo.ClassMethodInfos[j].Parameters[ik].IsValueType) { if(classInfo.ClassMethodInfos[j].Parameters[ik].ParameterTypeName=="String") parameterTypeName="string"; if(classInfo.ClassMethodInfos[j].Parameters[ik].ParameterTypeName=="Boolean") parameterTypeName="bool"; } public @parameterTypeName @classInfo.ClassMethodInfos[j].Parameters[ik].ParameterName { get; set; } } } } string parametersName=@classInfo.ClassMethodInfos[j].Parameters[0].ParameterTypeName.Replace("String", "string").Replace("Boolean", "bool")+" "+@classInfo.ClassMethodInfos[j].Parameters[0].ParameterName; string content=string.Empty; //如果是[HttpGet],一定是值参数,统一使用组合参数 if(classInfo.ClassMethodInfos[j].Parameters.Length>0 && classInfo.ClassMethodInfos[j].HttpName=="[HttpGet]") { content += "var compositionData = new Dictionary();\t\r"; for (var iac = 0; iac < classInfo.ClassMethodInfos[j].Parameters.Length; iac++) { content += "compositionData.Add(\"" + @classInfo.ClassMethodInfos[j].Parameters[iac].ParameterName + "\", " + @classInfo.ClassMethodInfos[j].Parameters[iac].ParameterName + ".ToString());\t\r"; } content += "return Task.Run(() => serviceRequest.GetWithQueryAsync<"+@classInfo.ClassMethodInfos[j].MethodReturnName.Replace("String", "string").Replace("Boolean", "bool")+">(\"/"+@classInfo.ClassName.Replace("Service", "")+"/"+@classInfo.ClassMethodInfos[j].MethodName+"\", compositionData)).GetAwaiter().GetResult();"; } else if(classInfo.ClassMethodInfos[j].Parameters.Length>0 && classInfo.ClassMethodInfos[j].HttpName!="[HttpGet]") { string returnValue=string.Empty; if(classInfo.ClassMethodInfos[j].MethodReturnName!="Void")returnValue="return"; if(classInfo.ClassMethodInfos[j].Parameters.Length>1) { string CompositionData=classInfo.ClassMethodInfos[j].MethodName+"CompositionData"+classInfo.ClassMethodInfos[j].Parameters.Length; content += "var compositionData = new "+CompositionData+"{\t\r"; for (var ikp = 0; ikp < classInfo.ClassMethodInfos[j].Parameters.Length; ikp++) { if(ikp>0) content += ",\t\r"; content += @classInfo.ClassMethodInfos[j].Parameters[ikp].ParameterName+" = "+@classInfo.ClassMethodInfos[j].Parameters[ikp].ParameterName; } content += " };\t\r"; string rv=classInfo.ClassMethodInfos[j].MethodReturnName.Replace("String", "string").Replace("Boolean", "bool").Replace("Void", "dynamic"); content += returnValue+" Task.Run(() => serviceRequest.PostAsJsonAsync<"+CompositionData+", "+rv+">(\"/"+@classInfo.ClassName.Replace("Service", "")+"/"+@classInfo.ClassMethodInfos[j].MethodName+"\", compositionData)).GetAwaiter().GetResult();"; } else { string post="PostAsync"; if(classInfo.ClassMethodInfos[j].MethodReturnName!="Void")post="PostAsJsonAsync"+string.Format("<{1},{0}>",classInfo.ClassMethodInfos[j].MethodReturnName.Replace("String", "string").Replace("Boolean", "bool"),@classInfo.ClassMethodInfos[j].Parameters[0].ParameterTypeName.Replace("String", "string").Replace("Boolean", "bool")); if(!classInfo.ClassMethodInfos[j].Parameters[0].IsValueType && classInfo.ClassMethodInfos[j].MethodReturnName=="Void")post="PostAsJsonAsync"+string.Format("<{0},dynamic>",@classInfo.ClassMethodInfos[j].Parameters[0].ParameterTypeName.Replace("String", "string").Replace("Boolean", "bool")); if(classInfo.ClassMethodInfos[j].Parameters[0].IsValueType) { if(classInfo.ClassMethodInfos[j].MethodReturnName!="Void"){post="PostAsJsonAsync"+string.Format("<{0}>",classInfo.ClassMethodInfos[j].MethodReturnName.Replace("String", "string").Replace("Boolean", "bool"));} content += returnValue+" Task.Run(() => serviceRequest."+post+"(\"/"+@classInfo.ClassName.Replace("Service", "")+"/"+@classInfo.ClassMethodInfos[j].MethodName+"?"+@classInfo.ClassMethodInfos[j].Parameters[0].ParameterName+"=\" + "+@classInfo.ClassMethodInfos[j].Parameters[0].ParameterName+".ToString())).GetAwaiter().GetResult();"; } else{ content += returnValue+" Task.Run(() => serviceRequest."+post+"(\"/"+@classInfo.ClassName.Replace("Service", "")+"/"+@classInfo.ClassMethodInfos[j].MethodName+"\" , "+@classInfo.ClassMethodInfos[j].Parameters[0].ParameterName+")).GetAwaiter().GetResult();"; } } } parametersName=string.Empty; for (var ikb = 0; ikb < classInfo.ClassMethodInfos[j].Parameters.Length; ikb++){ if(ikb>0)parametersName+=", "; parametersName+=@classInfo.ClassMethodInfos[j].Parameters[ikb].ParameterTypeName.Replace("String", "string").Replace("Boolean", "bool")+" "+@classInfo.ClassMethodInfos[j].Parameters[ikb].ParameterName; } //文本开始================================================ public @{@methodReturnName @classInfo.ClassMethodInfos[j].MethodName}(@{@parametersName}) { @{@content.ToString()} } //文本结束=================================================== } } } //下面}为代码段结束================================================================================================================= } } }