diff --git a/src/Oms.Application/Services/Channels/IssueTemplateService.cs b/src/Oms.Application/Services/Channels/IssueTemplateService.cs index 4cb2ed6..c59ccce 100644 --- a/src/Oms.Application/Services/Channels/IssueTemplateService.cs +++ b/src/Oms.Application/Services/Channels/IssueTemplateService.cs @@ -101,12 +101,16 @@ public class IssueTemplateService : ApplicationService { var normalizedOrg = NormalizeOrganizationId(organizationId); var normalizedType = issueType?.Trim(); + var hasOrgFilter = normalizedOrg != null; + var hasTypeFilter = !string.IsNullOrWhiteSpace(normalizedType); + var orgValue = normalizedOrg ?? string.Empty; + var typeValue = normalizedType ?? string.Empty; var entities = await IssueTemplateRepository.GetListAsync(x => x.Status == EnableStatus.Enabled - && (string.IsNullOrWhiteSpace(normalizedType) || x.IssueType == normalizedType) - && (normalizedOrg == null - || x.OrganizationId == normalizedOrg + && (!hasTypeFilter || x.IssueType == typeValue) + && (!hasOrgFilter + || x.OrganizationId == orgValue || x.OrganizationId == null || x.OrganizationId == string.Empty)); @@ -136,12 +140,14 @@ public class IssueTemplateService : ApplicationService var organizationId = NormalizeOrganizationId(input.OrganizationId); var issueType = input.IssueType?.Trim(); var keyword = input.Keyword?.Trim(); - var status = input.Status; + var hasOrganizationFilter = organizationId != null; + var hasStatusFilter = input.Status.HasValue; + var statusValue = input.Status.GetValueOrDefault(); return entity => - (organizationId == null || entity.OrganizationId == organizationId) + (!hasOrganizationFilter || entity.OrganizationId == organizationId) && (string.IsNullOrWhiteSpace(issueType) || entity.IssueType == issueType) - && (status == null || (byte)entity.Status == status.Value) + && (!hasStatusFilter || (byte)entity.Status == statusValue) && (string.IsNullOrWhiteSpace(keyword) || entity.Title.Contains(keyword) || entity.Content.Contains(keyword)); diff --git a/src/Oms.SqlSugarCore/Channels/IssueTemplateRepository.cs b/src/Oms.SqlSugarCore/Channels/IssueTemplateRepository.cs index 2dfdd46..11a3daa 100644 --- a/src/Oms.SqlSugarCore/Channels/IssueTemplateRepository.cs +++ b/src/Oms.SqlSugarCore/Channels/IssueTemplateRepository.cs @@ -15,13 +15,24 @@ public class IssueTemplateRepository : OmsSqlSugarRepository, IIs { var normalizedOrg = string.IsNullOrWhiteSpace(organizationId) ? null : organizationId.Trim(); var normalizedType = issueType.Trim(); + var hasExcludeId = excludeId.HasValue; + var excludeIdValue = excludeId.GetValueOrDefault(); + + if (normalizedOrg == null) + { + return await AnyAsync( + x => + x.IssueType == normalizedType + && (x.OrganizationId == null || x.OrganizationId == string.Empty) + && (!hasExcludeId || x.Id != excludeIdValue), + cancellationToken); + } return await AnyAsync( x => x.IssueType == normalizedType - && ((normalizedOrg == null && (x.OrganizationId == null || x.OrganizationId == string.Empty)) - || x.OrganizationId == normalizedOrg) - && (!excludeId.HasValue || x.Id != excludeId.Value), + && x.OrganizationId == normalizedOrg + && (!hasExcludeId || x.Id != excludeIdValue), cancellationToken); } }