Browse Source

feat: Add `PaltformJobsModule`

pull/1564/head
colin 2 weeks ago
parent
commit
6434ef6b41
  1. 1
      aspnet-core/LINGYUN.MicroService.All.slnx
  2. 1
      aspnet-core/LINGYUN.MicroService.Aspire.slnx
  3. 1
      aspnet-core/LINGYUN.MicroService.SingleProject.slnx
  4. 2
      aspnet-core/aspire/LINGYUN.Abp.MicroService.TaskService/LINGYUN.Abp.MicroService.TaskService.csproj
  5. 4
      aspnet-core/aspire/LINGYUN.Abp.MicroService.TaskService/TaskServiceModule.cs
  6. 3
      aspnet-core/modules/platform/LINGYUN.Platform.Jobs/FodyWeavers.xml
  7. 30
      aspnet-core/modules/platform/LINGYUN.Platform.Jobs/FodyWeavers.xsd
  8. 26
      aspnet-core/modules/platform/LINGYUN.Platform.Jobs/LINGYUN.Platform.Jobs.csproj
  9. 12
      aspnet-core/modules/platform/LINGYUN.Platform.Jobs/LINGYUN/Platform/Jobs/LocalizableStatic.cs
  10. 13
      aspnet-core/modules/platform/LINGYUN.Platform.Jobs/LINGYUN/Platform/Jobs/Localization/Resources/en.json
  11. 13
      aspnet-core/modules/platform/LINGYUN.Platform.Jobs/LINGYUN/Platform/Jobs/Localization/Resources/zh-Hans.json
  12. 101
      aspnet-core/modules/platform/LINGYUN.Platform.Jobs/LINGYUN/Platform/Jobs/Messages/EmailMessageRetrySendJob.cs
  13. 101
      aspnet-core/modules/platform/LINGYUN.Platform.Jobs/LINGYUN/Platform/Jobs/Messages/SmsMessageRetrySendJob.cs
  14. 22
      aspnet-core/modules/platform/LINGYUN.Platform.Jobs/LINGYUN/Platform/Jobs/PlatformJobDefinitionProvider.cs
  15. 28
      aspnet-core/modules/platform/LINGYUN.Platform.Jobs/LINGYUN/Platform/Jobs/PlatformJobsModule.cs
  16. 1
      aspnet-core/services/LY.MicroService.Applications.Single/LY.MicroService.Applications.Single.csproj
  17. 3
      aspnet-core/services/LY.MicroService.Applications.Single/MicroServiceApplicationsSingleModule.cs
  18. 2
      aspnet-core/services/LY.MicroService.TaskManagement.HttpApi.Host/LY.MicroService.TaskManagement.HttpApi.Host.csproj
  19. 4
      aspnet-core/services/LY.MicroService.TaskManagement.HttpApi.Host/TaskManagementHttpApiHostModule.cs

1
aspnet-core/LINGYUN.MicroService.All.slnx

@ -422,6 +422,7 @@
<Project Path="modules/platform/LINGYUN.Platform.EntityFrameworkCore/LINGYUN.Platform.EntityFrameworkCore.csproj" />
<Project Path="modules/platform/LINGYUN.Platform.HttpApi.Client/LINGYUN.Platform.HttpApi.Client.csproj" />
<Project Path="modules/platform/LINGYUN.Platform.HttpApi/LINGYUN.Platform.HttpApi.csproj" />
<Project Path="modules/platform/LINGYUN.Platform.Jobs/LINGYUN.Platform.Jobs.csproj" />
<Project Path="modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/LINGYUN.Platform.Settings.VueVbenAdmin.csproj" />
<Project Path="modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN.Platform.Theme.VueVbenAdmin.csproj" />
</Folder>

1
aspnet-core/LINGYUN.MicroService.Aspire.slnx

@ -417,6 +417,7 @@
<Project Path="modules/platform/LINGYUN.Platform.EntityFrameworkCore/LINGYUN.Platform.EntityFrameworkCore.csproj" />
<Project Path="modules/platform/LINGYUN.Platform.HttpApi.Client/LINGYUN.Platform.HttpApi.Client.csproj" />
<Project Path="modules/platform/LINGYUN.Platform.HttpApi/LINGYUN.Platform.HttpApi.csproj" />
<Project Path="modules/platform/LINGYUN.Platform.Jobs/LINGYUN.Platform.Jobs.csproj" />
<Project Path="modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/LINGYUN.Platform.Settings.VueVbenAdmin.csproj" />
<Project Path="modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN.Platform.Theme.VueVbenAdmin.csproj" />
</Folder>

1
aspnet-core/LINGYUN.MicroService.SingleProject.slnx

@ -342,6 +342,7 @@
<Project Path="modules/platform/LINGYUN.Platform.EntityFrameworkCore/LINGYUN.Platform.EntityFrameworkCore.csproj" />
<Project Path="modules/platform/LINGYUN.Platform.HttpApi.Client/LINGYUN.Platform.HttpApi.Client.csproj" />
<Project Path="modules/platform/LINGYUN.Platform.HttpApi/LINGYUN.Platform.HttpApi.csproj" />
<Project Path="modules/platform/LINGYUN.Platform.Jobs/LINGYUN.Platform.Jobs.csproj" />
</Folder>
<Folder Name="/modules/saas/">
<Project Path="modules/saas/LINGYUN.Abp.Saas.Application.Contracts/LINGYUN.Abp.Saas.Application.Contracts.csproj" />

2
aspnet-core/aspire/LINGYUN.Abp.MicroService.TaskService/LINGYUN.Abp.MicroService.TaskService.csproj

@ -55,6 +55,8 @@
<ProjectReference Include="..\..\framework\tenants\LINGYUN.Abp.MultiTenancy.Editions\LINGYUN.Abp.MultiTenancy.Editions.csproj" />
<ProjectReference Include="..\..\framework\mvc\LINGYUN.Abp.AspNetCore.Mvc.Wrapper\LINGYUN.Abp.AspNetCore.Mvc.Wrapper.csproj" />
<ProjectReference Include="..\..\modules\identity\LINGYUN.Abp.Identity.EntityFrameworkCore\LINGYUN.Abp.Identity.EntityFrameworkCore.csproj" />
<ProjectReference Include="..\..\modules\platform\LINGYUN.Platform.EntityFrameworkCore\LINGYUN.Platform.EntityFrameworkCore.csproj" />
<ProjectReference Include="..\..\modules\platform\LINGYUN.Platform.Jobs\LINGYUN.Platform.Jobs.csproj" />
<ProjectReference Include="..\..\modules\task-management\LINGYUN.Abp.Elasticsearch.Jobs\LINGYUN.Abp.Elasticsearch.Jobs.csproj" />
<ProjectReference Include="..\..\modules\task-management\LINGYUN.Abp.Identity.Jobs\LINGYUN.Abp.Identity.Jobs.csproj" />
</ItemGroup>

4
aspnet-core/aspire/LINGYUN.Abp.MicroService.TaskService/TaskServiceModule.cs

@ -23,6 +23,8 @@ using LINGYUN.Abp.Serilog.Enrichers.UniqueId;
using LINGYUN.Abp.Sms.Platform;
using LINGYUN.Abp.TaskManagement;
using LINGYUN.Abp.TaskManagement.EntityFrameworkCore;
using LINGYUN.Platform.EntityFrameworkCore;
using LINGYUN.Platform.Jobs;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Volo.Abp;
@ -55,6 +57,7 @@ namespace LINGYUN.Abp.MicroService.TaskService;
typeof(AbpAspNetCoreMultiTenancyModule),
typeof(AbpElasticsearchJobsModule),
typeof(AbpIdentityJobsModule),
typeof(PlatformJobsModule),
typeof(AbpBackgroundTasksJobsModule),
typeof(AbpBackgroundTasksQuartzModule),
typeof(AbpBackgroundTasksDistributedLockingModule),
@ -68,6 +71,7 @@ namespace LINGYUN.Abp.MicroService.TaskService;
typeof(AbpSettingManagementEntityFrameworkCoreModule),
typeof(AbpSaasEntityFrameworkCoreModule),
typeof(AbpLocalizationManagementEntityFrameworkCoreModule),
typeof(PlatformEntityFrameworkCoreModule),
typeof(TaskServiceMigrationsEntityFrameworkCoreModule),
typeof(AbpBlobStoringBlobManagementModule),
typeof(AbpDataDbMigratorModule),

3
aspnet-core/modules/platform/LINGYUN.Platform.Jobs/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false" />
</Weavers>

30
aspnet-core/modules/platform/LINGYUN.Platform.Jobs/FodyWeavers.xsd

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

26
aspnet-core/modules/platform/LINGYUN.Platform.Jobs/LINGYUN.Platform.Jobs.csproj

@ -0,0 +1,26 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\configureawait.props" />
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<AssemblyName>LINGYUN.Platform.Jobs</AssemblyName>
<PackageId>LINGYUN.Platform.Jobs</PackageId>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<RootNamespace />
</PropertyGroup>
<ItemGroup>
<None Remove="LINGYUN\Platform\Jobs\Localization\Resources\*.json" />
<EmbeddedResource Include="LINGYUN\Platform\Jobs\Localization\Resources\*.json" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\task-management\LINGYUN.Abp.BackgroundTasks.Abstractions\LINGYUN.Abp.BackgroundTasks.Abstractions.csproj" />
<ProjectReference Include="..\LINGYUN.Platform.Domain\LINGYUN.Platform.Domain.csproj" />
</ItemGroup>
</Project>

12
aspnet-core/modules/platform/LINGYUN.Platform.Jobs/LINGYUN/Platform/Jobs/LocalizableStatic.cs

@ -0,0 +1,12 @@
using LINGYUN.Platform.Localization;
using Volo.Abp.Localization;
namespace LINGYUN.Platform.Jobs;
internal static class LocalizableStatic
{
public static ILocalizableString Create(string name)
{
return LocalizableString.Create<PlatformResource>(name);
}
}

13
aspnet-core/modules/platform/LINGYUN.Platform.Jobs/LINGYUN/Platform/Jobs/Localization/Resources/en.json

@ -0,0 +1,13 @@
{
"culture": "en",
"texts": {
"SmsMessageRetrySendJob": "Re-sending of SMS message job",
"EmailMessageRetrySendJob": "Re-sending of Email message job",
"DisplayName:RecentSnedFailedHours": "The latest failure in sending occurred at",
"Description:RecentSnedFailedHours": "Recent failure sending time, unit: hours, default: 2 hours.",
"DisplayName:PropertyMaxOfFailedAttempts": "Maximum number of failure attempts",
"Description:PropertyMaxOfFailedAttempts": "Maximum number of failures, default: 3.",
"DisplayName:PropertyPollingBatchCount": "Polling batch count",
"Description:PropertyPollingBatchCount": "Polling batch count, default: 100."
}
}

13
aspnet-core/modules/platform/LINGYUN.Platform.Jobs/LINGYUN/Platform/Jobs/Localization/Resources/zh-Hans.json

@ -0,0 +1,13 @@
{
"culture": "zh-Hans",
"texts": {
"SmsMessageRetrySendJob": "短信重新发送作业",
"EmailMessageRetrySendJob": "邮件重新发送作业",
"DisplayName:RecentSnedFailedHours": "最近发送失败时间",
"Description:RecentSnedFailedHours": "最近发送失败时间, 单位: 小时, 默认: 2.",
"DisplayName:PropertyMaxOfFailedAttempts": "失败次数上限",
"Description:PropertyMaxOfFailedAttempts": "失败次数上限, 默认: 3.",
"DisplayName:PropertyPollingBatchCount": "轮询批次数量",
"Description:PropertyPollingBatchCount": "轮询批次数量, 默认: 100."
}
}

101
aspnet-core/modules/platform/LINGYUN.Platform.Jobs/LINGYUN/Platform/Jobs/Messages/EmailMessageRetrySendJob.cs

@ -0,0 +1,101 @@
using LINGYUN.Abp.BackgroundTasks;
using LINGYUN.Platform.Messages;
using Microsoft.Extensions.Logging;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.Auditing;
using Volo.Abp.DistributedLocking;
using Volo.Abp.Specifications;
using Volo.Abp.Timing;
namespace LINGYUN.Platform.Jobs.Messages;
/// <summary>
/// 邮件重新发送作业
/// </summary>
[DisableAuditing]
[DisableJobAction]
public class EmailMessageRetrySendJob : IJobRunnable
{
public const string Name = "EmailMessageRetrySendJob";
#region Definition Paramters
public readonly static IReadOnlyList<JobDefinitionParamter> Paramters =
new List<JobDefinitionParamter>
{
new JobDefinitionParamter(
PropertyRecentSnedFailedHours,
LocalizableStatic.Create("DisplayName:RecentSnedFailedHours"),
LocalizableStatic.Create("Description:RecentSnedFailedHours")),
new JobDefinitionParamter(
PropertyMaxOfFailedAttempts,
LocalizableStatic.Create("DisplayName:PropertyMaxOfFailedAttempts"),
LocalizableStatic.Create("Description:PropertyMaxOfFailedAttempts")),
new JobDefinitionParamter(
PropertyPollingBatchCount,
LocalizableStatic.Create("DisplayName:PropertyPollingBatchCount"),
LocalizableStatic.Create("Description:PropertyPollingBatchCount")),
};
#endregion
/// <summary>
/// 最近发送失败时间, 单位: 小时, 默认: 2
/// </summary>
public const string PropertyRecentSnedFailedHours = "RecentSnedFailedHours";
/// <summary>
/// 失败次数上限, 默认: 3
/// </summary>
public const string PropertyMaxOfFailedAttempts = "MaxOfFailedAttempts";
/// <summary>
/// 轮询批次数量, 默认: 100
/// </summary>
public const string PropertyPollingBatchCount = "PollingBatchCount";
public async virtual Task ExecuteAsync(JobRunnableContext context)
{
var logger = context.GetRequiredService<ILogger<EmailMessageRetrySendJob>>();
var distributedLock = context.GetRequiredService<IAbpDistributedLock>();
var distributedLockKey = nameof(EmailMessageRetrySendJob);
await using var jobLockHandle = await distributedLock.TryAcquireAsync(distributedLockKey);
if (jobLockHandle == null)
{
logger.LogWarning("Handle is null because of the locking for : {distributedLockKey}", distributedLockKey);
return;
}
logger.LogDebug("Lock is acquired for {distributedLockKey}.", distributedLockKey);
var clock = context.GetRequiredService<IClock>();
var emailMessageManager = context.GetRequiredService<IEmailMessageManager>();
var emailMessageRepo = context.GetRequiredService<IEmailMessageRepository>();
var recentSnedFailedHours = context.GetOrDefaultJobData(PropertyRecentSnedFailedHours, 2);
var maxOfFailedAttempts = context.GetOrDefaultJobData(PropertyMaxOfFailedAttempts, 3);
var pollingBatchCount = context.GetOrDefaultJobData(PropertyPollingBatchCount, 100);
var sendTime = clock.Now.AddHours(-recentSnedFailedHours);
var recentSnedFailedMessages = await emailMessageRepo.GetListAsync(
new ExpressionSpecification<EmailMessage>(x => x.Status == MessageStatus.Failed &&
x.SendCount < maxOfFailedAttempts && x.SendTime >= sendTime),
maxResultCount: pollingBatchCount);
if (recentSnedFailedMessages.Count > 0)
{
logger.LogDebug("In the last {Hour} hours, a total of {Count} Email messages need to be resent.", recentSnedFailedHours, recentSnedFailedMessages.Count);
foreach (var message in recentSnedFailedMessages)
{
await emailMessageManager.SendAsync(message);
}
await emailMessageRepo.UpdateManyAsync(recentSnedFailedMessages);
}
else
{
logger.LogDebug($"There are no Email messages that need to be resent.");
}
logger.LogDebug($"The batch retry operation of the Email messages has been successfully completed.");
}
}

101
aspnet-core/modules/platform/LINGYUN.Platform.Jobs/LINGYUN/Platform/Jobs/Messages/SmsMessageRetrySendJob.cs

@ -0,0 +1,101 @@
using LINGYUN.Abp.BackgroundTasks;
using LINGYUN.Platform.Messages;
using Microsoft.Extensions.Logging;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.Auditing;
using Volo.Abp.DistributedLocking;
using Volo.Abp.Specifications;
using Volo.Abp.Timing;
namespace LINGYUN.Platform.Jobs.Messages;
/// <summary>
/// 短信重新发送作业
/// </summary>
[DisableAuditing]
[DisableJobAction]
public class SmsMessageRetrySendJob : IJobRunnable
{
public const string Name = "SmsMessageRetrySendJob";
#region Definition Paramters
public readonly static IReadOnlyList<JobDefinitionParamter> Paramters =
new List<JobDefinitionParamter>
{
new JobDefinitionParamter(
PropertyRecentSnedFailedHours,
LocalizableStatic.Create("DisplayName:RecentSnedFailedHours"),
LocalizableStatic.Create("Description:RecentSnedFailedHours")),
new JobDefinitionParamter(
PropertyMaxOfFailedAttempts,
LocalizableStatic.Create("DisplayName:PropertyMaxOfFailedAttempts"),
LocalizableStatic.Create("Description:PropertyMaxOfFailedAttempts")),
new JobDefinitionParamter(
PropertyPollingBatchCount,
LocalizableStatic.Create("DisplayName:PropertyPollingBatchCount"),
LocalizableStatic.Create("Description:PropertyPollingBatchCount")),
};
#endregion
/// <summary>
/// 最近发送失败时间, 单位: 小时, 默认: 2
/// </summary>
public const string PropertyRecentSnedFailedHours = "RecentSnedFailedHours";
/// <summary>
/// 失败次数上限, 默认: 3
/// </summary>
public const string PropertyMaxOfFailedAttempts = "MaxOfFailedAttempts";
/// <summary>
/// 轮询批次数量, 默认: 100
/// </summary>
public const string PropertyPollingBatchCount = "PollingBatchCount";
public async virtual Task ExecuteAsync(JobRunnableContext context)
{
var logger = context.GetRequiredService<ILogger<SmsMessageRetrySendJob>>();
var distributedLock = context.GetRequiredService<IAbpDistributedLock>();
var distributedLockKey = nameof(SmsMessageRetrySendJob);
await using var jobLockHandle = await distributedLock.TryAcquireAsync(distributedLockKey);
if (jobLockHandle == null)
{
logger.LogWarning("Handle is null because of the locking for : {distributedLockKey}", distributedLockKey);
return;
}
logger.LogDebug("Lock is acquired for {distributedLockKey}.", distributedLockKey);
var clock = context.GetRequiredService<IClock>();
var smsMessageManager = context.GetRequiredService<ISmsMessageManager>();
var smsMessageRepo = context.GetRequiredService<ISmsMessageRepository>();
var recentSnedFailedHours = context.GetOrDefaultJobData(PropertyRecentSnedFailedHours, 2);
var maxOfFailedAttempts = context.GetOrDefaultJobData(PropertyMaxOfFailedAttempts, 3);
var pollingBatchCount = context.GetOrDefaultJobData(PropertyPollingBatchCount, 100);
var sendTime = clock.Now.AddHours(-recentSnedFailedHours);
var recentSnedFailedMessages = await smsMessageRepo.GetListAsync(
new ExpressionSpecification<SmsMessage>(x => x.Status == MessageStatus.Failed &&
x.SendCount < maxOfFailedAttempts && x.SendTime >= sendTime),
maxResultCount: pollingBatchCount);
if (recentSnedFailedMessages.Count > 0)
{
logger.LogDebug("In the last {Hour} hours, a total of {Count} SMS messages need to be resent.", recentSnedFailedHours, recentSnedFailedMessages.Count);
foreach (var message in recentSnedFailedMessages)
{
await smsMessageManager.SendAsync(message);
}
await smsMessageRepo.UpdateManyAsync(recentSnedFailedMessages);
}
else
{
logger.LogDebug($"There are no SMS messages that need to be resent.");
}
logger.LogDebug($"The batch retry operation of the SMS messages has been successfully completed.");
}
}

22
aspnet-core/modules/platform/LINGYUN.Platform.Jobs/LINGYUN/Platform/Jobs/PlatformJobDefinitionProvider.cs

@ -0,0 +1,22 @@
using LINGYUN.Abp.BackgroundTasks;
using LINGYUN.Platform.Jobs.Messages;
namespace LINGYUN.Platform.Jobs;
public class IdentityJobDefinitionProvider : JobDefinitionProvider
{
public override void Define(IJobDefinitionContext context)
{
context.Add(
new JobDefinition(
EmailMessageRetrySendJob.Name,
typeof(EmailMessageRetrySendJob),
LocalizableStatic.Create("EmailMessageRetrySendJob"),
EmailMessageRetrySendJob.Paramters),
new JobDefinition(
SmsMessageRetrySendJob.Name,
typeof(SmsMessageRetrySendJob),
LocalizableStatic.Create("SmsMessageRetrySendJob"),
SmsMessageRetrySendJob.Paramters)
);
}
}

28
aspnet-core/modules/platform/LINGYUN.Platform.Jobs/LINGYUN/Platform/Jobs/PlatformJobsModule.cs

@ -0,0 +1,28 @@
using LINGYUN.Platform.Localization;
using Volo.Abp.BackgroundJobs;
using Volo.Abp.Localization;
using Volo.Abp.Modularity;
using Volo.Abp.VirtualFileSystem;
namespace LINGYUN.Platform.Jobs;
[DependsOn(
typeof(AbpBackgroundJobsAbstractionsModule),
typeof(PlatformDomainModule))]
public class PlatformJobsModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
Configure<AbpVirtualFileSystemOptions>(options =>
{
options.FileSets.AddEmbedded<PlatformJobsModule>();
});
Configure<AbpLocalizationOptions>(options =>
{
options.Resources
.Get<PlatformResource>()
.AddVirtualJson("/LINGYUN/Platform/Jobs/Localization/Resources");
});
}
}

1
aspnet-core/services/LY.MicroService.Applications.Single/LY.MicroService.Applications.Single.csproj

@ -203,6 +203,7 @@
<ProjectReference Include="..\..\modules\localization-management\LINGYUN.Abp.LocalizationManagement.HttpApi\LINGYUN.Abp.LocalizationManagement.HttpApi.csproj" />
<ProjectReference Include="..\..\modules\openIddict\LINGYUN.Abp.OpenIddict.AspNetCore.Session\LINGYUN.Abp.OpenIddict.AspNetCore.Session.csproj" />
<ProjectReference Include="..\..\modules\openIddict\LINGYUN.Abp.OpenIddict.QrCode\LINGYUN.Abp.OpenIddict.QrCode.csproj" />
<ProjectReference Include="..\..\modules\platform\LINGYUN.Platform.Jobs\LINGYUN.Platform.Jobs.csproj" />
<ProjectReference Include="..\..\modules\realtime-message\LINGYUN.Abp.IM.SignalR\LINGYUN.Abp.IM.SignalR.csproj" />
<ProjectReference Include="..\..\modules\realtime-message\LINGYUN.Abp.IM\LINGYUN.Abp.IM.csproj" />
<ProjectReference Include="..\..\modules\realtime-message\LINGYUN.Abp.MessageService.Application.Contracts\LINGYUN.Abp.MessageService.Application.Contracts.csproj" />

3
aspnet-core/services/LY.MicroService.Applications.Single/MicroServiceApplicationsSingleModule.cs

@ -3,6 +3,7 @@ using LINGYUN.Abp.Identity.AspNetCore;
using LINGYUN.Abp.Identity.Jobs;
using LINGYUN.Abp.Logging.Serilog.Elasticsearch;
using LINGYUN.Abp.Notifications.Calendar;
using LINGYUN.Platform.Jobs;
using Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy;
namespace LY.MicroService.Applications.Single;
@ -276,6 +277,8 @@ namespace LY.MicroService.Applications.Single;
typeof(AbpBackgroundTasksQuartzModule),
// 后台任务模块 身份认证模块作业
typeof(AbpIdentityJobsModule),
// 后台任务模块 平台管理模块作业
typeof(PlatformJobsModule),
// 数据审计模块 应用服务
typeof(AbpDataProtectionManagementApplicationModule),

2
aspnet-core/services/LY.MicroService.TaskManagement.HttpApi.Host/LY.MicroService.TaskManagement.HttpApi.Host.csproj

@ -61,6 +61,8 @@
<ProjectReference Include="..\..\modules\identity\LINGYUN.Abp.Identity.EntityFrameworkCore\LINGYUN.Abp.Identity.EntityFrameworkCore.csproj" />
<ProjectReference Include="..\..\modules\platform\LINGYUN.Abp.Emailing.Platform\LINGYUN.Abp.Emailing.Platform.csproj" />
<ProjectReference Include="..\..\modules\platform\LINGYUN.Abp.Sms.Platform\LINGYUN.Abp.Sms.Platform.csproj" />
<ProjectReference Include="..\..\modules\platform\LINGYUN.Platform.EntityFrameworkCore\LINGYUN.Platform.EntityFrameworkCore.csproj" />
<ProjectReference Include="..\..\modules\platform\LINGYUN.Platform.Jobs\LINGYUN.Platform.Jobs.csproj" />
<ProjectReference Include="..\..\modules\task-management\LINGYUN.Abp.BackgroundTasks.DistributedLocking\LINGYUN.Abp.BackgroundTasks.DistributedLocking.csproj" />
<ProjectReference Include="..\..\modules\task-management\LINGYUN.Abp.BackgroundTasks.Jobs\LINGYUN.Abp.BackgroundTasks.Jobs.csproj" />
<ProjectReference Include="..\..\modules\task-management\LINGYUN.Abp.BackgroundTasks.Notifications\LINGYUN.Abp.BackgroundTasks.Notifications.csproj" />

4
aspnet-core/services/LY.MicroService.TaskManagement.HttpApi.Host/TaskManagementHttpApiHostModule.cs

@ -25,6 +25,8 @@ using LINGYUN.Abp.TaskManagement;
using LINGYUN.Abp.TaskManagement.EntityFrameworkCore;
using LINGYUN.Abp.Telemetry.OpenTelemetry;
using LINGYUN.Abp.Telemetry.SkyWalking;
using LINGYUN.Platform.EntityFrameworkCore;
using LINGYUN.Platform.Jobs;
using LY.MicroService.TaskManagement.EntityFrameworkCore;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
@ -65,6 +67,7 @@ namespace LY.MicroService.TaskManagement;
typeof(AbpBackgroundTasksNotificationsModule),
typeof(AbpElasticsearchJobsModule),
typeof(AbpIdentityJobsModule),
typeof(PlatformJobsModule),
typeof(TaskManagementApplicationModule),
typeof(TaskManagementHttpApiModule),
typeof(TaskManagementEntityFrameworkCoreModule),
@ -74,6 +77,7 @@ namespace LY.MicroService.TaskManagement;
typeof(AbpSettingManagementEntityFrameworkCoreModule),
typeof(AbpSaasEntityFrameworkCoreModule),
typeof(AbpLocalizationManagementEntityFrameworkCoreModule),
typeof(PlatformEntityFrameworkCoreModule),
typeof(TaskManagementMigrationsEntityFrameworkCoreModule),
typeof(AbpDataDbMigratorModule),
typeof(AbpCachingStackExchangeRedisModule),

Loading…
Cancel
Save