diff --git a/src/Contrib/Authentication/Identity/Masa.Contrib.Authentication.Identity/ServiceCollectionExtensions.cs b/src/Contrib/Authentication/Identity/Masa.Contrib.Authentication.Identity/ServiceCollectionExtensions.cs index 10b643829..ce1565044 100644 --- a/src/Contrib/Authentication/Identity/Masa.Contrib.Authentication.Identity/ServiceCollectionExtensions.cs +++ b/src/Contrib/Authentication/Identity/Masa.Contrib.Authentication.Identity/ServiceCollectionExtensions.cs @@ -50,7 +50,7 @@ public static IServiceCollection AddMasaIdentityModel( private static IServiceCollection AddMasaIdentityCore(IServiceCollection services) { services.AddHttpContextAccessor(); - services.TryAddSingleton(); + services.TryAddScoped(); return services; } } diff --git a/src/Contrib/StackSdks/Masa.Contrib.StackSdks.Tsc.Elasticsearch/Extenistions/IElasticClientExtenstion.cs b/src/Contrib/StackSdks/Masa.Contrib.StackSdks.Tsc.Elasticsearch/Extenistions/IElasticClientExtenstion.cs index 9d5619586..545324573 100644 --- a/src/Contrib/StackSdks/Masa.Contrib.StackSdks.Tsc.Elasticsearch/Extenistions/IElasticClientExtenstion.cs +++ b/src/Contrib/StackSdks/Masa.Contrib.StackSdks.Tsc.Elasticsearch/Extenistions/IElasticClientExtenstion.cs @@ -28,6 +28,7 @@ await client.SearchAsync(s => searchDescriptorFunc(s.Index(indexName)). } catch (Exception ex) { + ServiceExtenistion.Logger.LogError(ex, "SearchAsync execute error"); throw new UserFriendlyException($"SearchAsync execute error {ex.Message}"); } } @@ -37,21 +38,19 @@ await client.SearchAsync(s => searchDescriptorFunc(s.Index(indexName)). public static async Task> GetMappingAsync(this ICaller caller, string indexName, CancellationToken token = default) { var path = $"/{indexName}/_mapping"; - var result = await caller.GetAsync(path, false, token); + var result = await caller.GetAsync(path, token); var json = (JsonElement)result!; - JsonElement mapping = default; - bool findMapping = false; foreach (var item in json.EnumerateObject()) { - if (!findMapping && item.Value.TryGetProperty("mappings", out mapping)) + JsonElement mapping; + if (item.Value.TryGetProperty("mappings", out mapping)) { - findMapping = true; - break; + var mappings = GetRepProperties(mapping, default!)!; + if (mappings != null && mappings.Any()) + return mappings; } } - if (findMapping) - return GetRepProperties(mapping, default!)!; throw new UserFriendlyException($"can't find mapping for index: {indexName}"); } @@ -197,7 +196,7 @@ private static SearchDescriptor AddCondition(this Sear } if (!string.IsNullOrEmpty(query.Keyword)) { - list.Add(queryContainer => queryContainer.QueryString(queryString => queryString.Query(query.Keyword))); + list.Add(queryContainer => queryContainer.QueryString(queryString => queryString.Query(query.Keyword).DefaultOperator(Operator.And))); } query.AppendConditions(); @@ -257,6 +256,7 @@ private static Func, QueryContainer> CompareCo { CreateFieldKeyword(query.Name, mapping, out var fieldName, out var keyword); var value = query.Value; + bool isDate = value is DateTime; switch (query.Type) { @@ -265,12 +265,20 @@ private static Func, QueryContainer> CompareCo case ConditionTypes.NotEqual: return (container) => !container.Match(f => f.Field(keyword).Query(value?.ToString())); case ConditionTypes.Great: + if (isDate) + return (container) => container.DateRange(f => f.Field(keyword).GreaterThan((DateTime)value)); return (container) => container.Range(f => f.Field(keyword).GreaterThan(Convert.ToDouble(value))); case ConditionTypes.Less: + if (isDate) + return (container) => container.DateRange(f => f.Field(keyword).LessThan((DateTime)value)); return (container) => container.Range(f => f.Field(keyword).LessThan(Convert.ToDouble(value))); case ConditionTypes.GreatEqual: + if (isDate) + return (container) => container.DateRange(f => f.Field(keyword).GreaterThanOrEquals((DateTime)value)); return (container) => container.Range(f => f.Field(keyword).GreaterThanOrEquals(Convert.ToDouble(value))); case ConditionTypes.LessEqual: + if (isDate) + return (container) => container.DateRange(f => f.Field(keyword).LessThanOrEquals((DateTime)value)); return (container) => container.Range(f => f.Field(keyword).LessThanOrEquals(Convert.ToDouble(value))); case ConditionTypes.In: return (container) => container.Terms(f => f.Field(keyword).Terms((IEnumerable)value)); diff --git a/src/Contrib/StackSdks/Masa.Contrib.StackSdks.Tsc.Elasticsearch/Extenistions/ServiceExtenistion.cs b/src/Contrib/StackSdks/Masa.Contrib.StackSdks.Tsc.Elasticsearch/Extenistions/ServiceExtenistion.cs index 3a34b21de..d82cd5639 100644 --- a/src/Contrib/StackSdks/Masa.Contrib.StackSdks.Tsc.Elasticsearch/Extenistions/ServiceExtenistion.cs +++ b/src/Contrib/StackSdks/Masa.Contrib.StackSdks.Tsc.Elasticsearch/Extenistions/ServiceExtenistion.cs @@ -7,6 +7,8 @@ namespace Microsoft.Extensions.DependencyInjection; public static class ServiceExtenistion { + internal static ILogger Logger { private set; get; } + public static IServiceCollection AddElasticClientLog(this IServiceCollection services, string[] nodes, string indexName) { ElasticConstant.InitLog(indexName, true); @@ -72,6 +74,7 @@ public static IServiceCollection AddElasticClientLogAndTrace(this IServiceCollec private static IServiceCollection AddElasticsearch(IServiceCollection services, string[] nodes, string name) { + Logger = services.BuildServiceProvider().GetRequiredService>(); return services.AddElasticsearch(name, options => { options.UseNodes(nodes).UseConnectionSettings(setting => setting.EnableApiVersioningHeader(false)); @@ -91,7 +94,7 @@ private static IServiceCollection AddElasticsearch(IServiceCollection services, Action callerAction, string name) { ArgumentNullException.ThrowIfNull(callerAction); - + Logger = services.BuildServiceProvider().GetRequiredService>(); return services.AddElasticsearch(name, elasticsearchConnectionAction) .AddCaller(name, option => option.UseHttpClient(callerAction).UseAuthentication()); } diff --git a/src/Contrib/StackSdks/Masa.Contrib.StackSdks.Tsc.Elasticsearch/_Imports.cs b/src/Contrib/StackSdks/Masa.Contrib.StackSdks.Tsc.Elasticsearch/_Imports.cs index 07579054b..3ec947c7f 100644 --- a/src/Contrib/StackSdks/Masa.Contrib.StackSdks.Tsc.Elasticsearch/_Imports.cs +++ b/src/Contrib/StackSdks/Masa.Contrib.StackSdks.Tsc.Elasticsearch/_Imports.cs @@ -15,6 +15,7 @@ global using Masa.Utils.Data.Elasticsearch; global using Masa.Utils.Models; global using Microsoft.Extensions.DependencyInjection; +global using Microsoft.Extensions.Logging; global using Nest; global using System.Runtime.CompilerServices; global using System.Text.Json;