sunpengfei
2025-08-13 83214e82d039e3935b15828e9076e16401395d67
FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs
@@ -38,22 +38,6 @@
    public static class ResourceUtils
    {
        /// <summary>
        /// 发送HTTP请求
        /// </summary>
        /// <typeparam name="TRequest"></typeparam>
        /// <typeparam name="TResponse"></typeparam>
        /// <param name="request"></param>
        /// <param name="provider"></param>
        /// <returns></returns>
        public static Task<TResponse> SendHttpAsync<TRequest, TResponse>(
            TRequest request,
            IResourceHttpProvider provider = null)
            where TRequest : class, new()
        {
            return App.GetRequiredService<ResourceHttpUtils>().SendHttpAsync<TRequest, TResponse>(request, provider);
        }
        /// <summary>
        /// 生成动态控制器
        /// </summary>
        public static async Task BuildDynamicControllersAsync()
@@ -173,8 +157,7 @@
            var expiredResources = resources.Where(it => !models.Any(m => m.Route == it.Route && m.Method == it.Method)).ToList();
            foreach (var expiredResource in expiredResources)
            {
                //expiredResource.IsExpired = true;
                //await rep.UpdateAsync(expiredResource);
                resources.Remove(expiredResource);
                await rep.DeleteAsync(expiredResource);
            }
@@ -223,9 +206,10 @@
                    code += $@"
        [AllowAnonymous]";
                }
                var result = resource.ResponseTypeName.IsNull() ? "Task" : $"Task<{resource.ResponseTypeName}>";
                code += $@"
        [Http{resource.Method}]
        public Task<{resource.ResponseTypeName}> {resource.ActionName}({resource.RequestTypeName} request)
        public {result} {resource.ActionName}({resource.RequestTypeName} request)
        {{
            return mediator.Send(request);
        }}
@@ -233,10 +217,18 @@
    }}
}}
";
                var dynamicAssembly = App.CompileCSharpClassCode(code);
                provider.AddAssembliesWithNotifyChanges(dynamicAssembly);
                var dynamicAssemblyName = dynamicAssembly.GetName().Name;
                resource.DynamicAssemblyName = dynamicAssemblyName;
                try
                {
                    var dynamicAssembly = App.CompileCSharpClassCode(code);
                    provider.AddAssembliesWithNotifyChanges(dynamicAssembly);
                    var dynamicAssemblyName = dynamicAssembly.GetName().Name;
                    resource.DynamicAssemblyName = dynamicAssemblyName;
                }
                catch (Exception ex)
                {
                    Console.WriteLine(code);
                    throw;
                }
            }
        }