Browse Source

feat(dapr): upgrade dapr to 1.6.0

pull/485/head
cKey 4 years ago
parent
commit
1cffe01188
  1. 1
      apps/vue/src/api/messages/model/messagesModel.ts
  2. 7
      apps/vue/src/layouts/default/header/components/notify/useMessages.ts
  3. 2
      aspnet-core/Directory.Build.props
  4. 113
      aspnet-core/modules/common/LINGYUN.Abp.IM.SignalR/LINGYUN/Abp/IM/SignalR/Hubs/MessagesHub.cs
  5. 7
      aspnet-core/modules/common/LINGYUN.Abp.IM/LINGYUN/Abp/IM/Messages/MessageType.cs
  6. 15
      aspnet-core/modules/platform/LINGYUN.Abp.UI.Navigation.VueVbenAdmin/LINGYUN/Abp/UI/Navigation/VueVbenAdmin/AbpUINavigationVueVbenAdminNavigationDefinitionProvider.cs
  7. 13
      aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks.ExceptionHandling/LINGYUN/Abp/BackgroundTasks/ExceptionHandling/JobFailedNotifierProvider.cs
  8. 30
      aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks.Jobs/LINGYUN/Abp/BackgroundTasks/Jobs/HttpRequestJobBase.cs
  9. 9
      aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks.Quartz/LINGYUN/Abp/BackgroundTasks/Quartz/QuartzJobExecutorProvider.cs
  10. 38
      aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks.Quartz/LINGYUN/Abp/BackgroundTasks/Quartz/QuartzJobListener.cs
  11. 10
      aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks/LINGYUN/Abp/BackgroundTasks/IJobEventTrigger.cs
  12. 53
      aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks/LINGYUN/Abp/BackgroundTasks/JobEventTrigger.cs
  13. 15
      aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Domain/LINGYUN/Abp/TaskManagement/BackgroundJobStore.cs
  14. 14
      aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Domain/LINGYUN/Abp/TaskManagement/IBackgroundJobInfoRepository.cs
  15. 37
      aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.EntityFrameworkCore/LINGYUN/Abp/TaskManagement/EntityFrameworkCore/EfCoreBackgroundJobInfoRepository.cs
  16. 2
      gateways/Directory.Build.props

1
apps/vue/src/api/messages/model/messagesModel.ts

@ -14,6 +14,7 @@ export enum MessageType {
Video = 30,
Voice = 40,
File = 50,
Notifier = 100,
}
export enum MessageState {

7
apps/vue/src/layouts/default/header/components/notify/useMessages.ts

@ -75,6 +75,10 @@ export function useMessages() {
message.extraProperties.content.Values as Recordable,
);
}
if (message.messageType === MessageType.Notifier) {
createMessage.info(message.content);
return;
}
if (message.groupId) {
emitter.emit(ChatEventEnum.USER_MESSAGE_GROUP_NEW, message);
} else {
@ -117,7 +121,8 @@ export function useMessages() {
source: MessageSourceTye.User,
isAnonymous: data.isAnonymous ?? false,
};
signalR.invoke('send', chatMessage).then(() => {
signalR.invoke('send', chatMessage).then((id) => {
chatMessage.messageId = id;
!chatMessage.groupId && onMessageReceived(chatMessage);
});
}

2
aspnet-core/Directory.Build.props

@ -2,7 +2,7 @@
<PropertyGroup>
<VoloAbpPackageVersion>5.1.1</VoloAbpPackageVersion>
<LINGYUNAbpPackageVersion>5.1.1</LINGYUNAbpPackageVersion>
<DaprPackageVersion>1.5.0</DaprPackageVersion>
<DaprPackageVersion>1.6.0</DaprPackageVersion>
<DistributedLockRedisPackageVersion>1.0.1</DistributedLockRedisPackageVersion>
<DotNetCoreCAPPackageVersion>6.0.0</DotNetCoreCAPPackageVersion>
<AliyunSDKPackageVersion>1.5.10</AliyunSDKPackageVersion>

113
aspnet-core/modules/common/LINGYUN.Abp.IM.SignalR/LINGYUN/Abp/IM/SignalR/Hubs/MessagesHub.cs

@ -3,7 +3,6 @@ using LINGYUN.Abp.IM.Contract;
using LINGYUN.Abp.IM.Groups;
using LINGYUN.Abp.IM.Localization;
using LINGYUN.Abp.IM.Messages;
using LINGYUN.Abp.RealTime;
using LINGYUN.Abp.RealTime.Localization;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.SignalR;
@ -85,54 +84,80 @@ namespace LINGYUN.Abp.IM.SignalR.Hubs
/// <param name="chatMessage"></param>
/// <returns></returns>
[HubMethodName("send")]
public virtual async Task SendMessageAsync(ChatMessage chatMessage)
public virtual async Task<string> SendMessageAsync(ChatMessage chatMessage)
{
await SendMessageAsync(Options.GetChatMessageMethod, chatMessage, true);
return await SendMessageAsync(Options.GetChatMessageMethod, chatMessage, true);
}
[HubMethodName("recall")]
public virtual async Task ReCallAsync(ChatMessage chatMessage)
{
await Processor?.ReCallAsync(chatMessage);
if (!chatMessage.GroupId.IsNullOrWhiteSpace())
try
{
await SendMessageAsync(
Options.ReCallChatMessageMethod,
ChatMessage.SystemLocalized(
chatMessage.FormUserId,
chatMessage.GroupId,
new LocalizableStringInfo(
LocalizationResourceNameAttribute.GetName(typeof(AbpIMResource)),
"Messages:RecallMessage",
new Dictionary<object, object>
{
await Processor?.ReCallAsync(chatMessage);
if (!chatMessage.GroupId.IsNullOrWhiteSpace())
{
await SendMessageAsync(
Options.ReCallChatMessageMethod,
ChatMessage.SystemLocalized(
chatMessage.FormUserId,
chatMessage.GroupId,
new LocalizableStringInfo(
LocalizationResourceNameAttribute.GetName(typeof(AbpIMResource)),
"Messages:RecallMessage",
new Dictionary<object, object>
{
{ "User", chatMessage.FormUserName }
}),
Clock,
chatMessage.MessageType,
chatMessage.TenantId)
.SetProperty(nameof(ChatMessage.MessageId).ToPascalCase(), chatMessage.MessageId),
callbackException: false);
}
else
{
await SendMessageAsync(
Options.ReCallChatMessageMethod,
ChatMessage.SystemLocalized(
chatMessage.ToUserId.Value,
chatMessage.FormUserId,
new LocalizableStringInfo(
LocalizationResourceNameAttribute.GetName(typeof(AbpIMResource)),
"Messages:RecallMessage",
new Dictionary<object, object>
{
{ "User", chatMessage.FormUserName }
}),
Clock,
chatMessage.MessageType,
chatMessage.TenantId)
.SetProperty(nameof(ChatMessage.MessageId).ToPascalCase(), chatMessage.MessageId),
callbackException: false);
}),
Clock,
chatMessage.MessageType,
chatMessage.TenantId)
.SetProperty(nameof(ChatMessage.MessageId).ToPascalCase(), chatMessage.MessageId),
callbackException: false);
}
}
else
catch (Exception ex)
{
await SendMessageAsync(
Options.ReCallChatMessageMethod,
ChatMessage.SystemLocalized(
chatMessage.ToUserId.Value,
chatMessage.FormUserId,
new LocalizableStringInfo(
LocalizationResourceNameAttribute.GetName(typeof(AbpIMResource)),
"Messages:RecallMessage",
new Dictionary<object, object>
{
{ "User", chatMessage.FormUserName }
}),
Clock,
chatMessage.MessageType,
chatMessage.TenantId)
.SetProperty(nameof(ChatMessage.MessageId).ToPascalCase(), chatMessage.MessageId),
callbackException: false);
if (ex is IBusinessException)
{
var errorInfo = ErrorInfoConverter.Convert(ex, options =>
{
options.SendExceptionsDetailsToClients = false;
options.SendStackTraceToClients = false;
});
await SendMessageAsync(
Options.ReCallChatMessageMethod,
ChatMessage.System(
chatMessage.ToUserId.Value,
chatMessage.FormUserId,
errorInfo.Message,
Clock,
MessageType.Notifier,
chatMessage.TenantId)
.SetProperty(nameof(ChatMessage.MessageId).ToPascalCase(), chatMessage.MessageId),
callbackException: false);
}
}
}
@ -142,7 +167,7 @@ namespace LINGYUN.Abp.IM.SignalR.Hubs
await Processor?.ReadAsync(chatMessage);
}
protected virtual async Task SendMessageAsync(string methodName, ChatMessage chatMessage, bool callbackException = false)
protected virtual async Task<string> SendMessageAsync(string methodName, ChatMessage chatMessage, bool callbackException = false)
{
// 持久化
try
@ -159,6 +184,8 @@ namespace LINGYUN.Abp.IM.SignalR.Hubs
{
await SendMessageToUserAsync(methodName, chatMessage);
}
return chatMessage.MessageId;
}
catch (Exception ex)
{
@ -178,7 +205,7 @@ namespace LINGYUN.Abp.IM.SignalR.Hubs
chatMessage.GroupId,
errorInfo.Message,
Clock,
chatMessage.MessageType,
MessageType.Notifier,
chatMessage.TenantId));
}
else
@ -190,11 +217,13 @@ namespace LINGYUN.Abp.IM.SignalR.Hubs
chatMessage.FormUserId,
errorInfo.Message,
Clock,
chatMessage.MessageType,
MessageType.Notifier,
chatMessage.TenantId));
}
}
}
return "";
}
protected virtual async Task SendMessageToGroupAsync(string methodName, ChatMessage chatMessage)

7
aspnet-core/modules/common/LINGYUN.Abp.IM/LINGYUN/Abp/IM/Messages/MessageType.cs

@ -25,6 +25,11 @@
/// <summary>
/// 文件
/// </summary>
File = 50
File = 50,
/// <summary>
/// 通知
/// 一般用于错误处理
/// </summary>
Notifier = 100,
}
}

15
aspnet-core/modules/platform/LINGYUN.Abp.UI.Navigation.VueVbenAdmin/LINGYUN/Abp/UI/Navigation/VueVbenAdmin/AbpUINavigationVueVbenAdminNavigationDefinitionProvider.cs

@ -11,7 +11,8 @@ namespace LINGYUN.Abp.UI.Navigation.VueVbenAdmin
context.Add(GetManage());
context.Add(GetSaas());
context.Add(GetPlatform());
context.Add(GetApiGateway());
// TODO: 网关不再需要动态管理
// context.Add(GetApiGateway());
context.Add(GetLocalization());
context.Add(GetOssManagement());
context.Add(GetTaskManagement());
@ -222,7 +223,8 @@ namespace LINGYUN.Abp.UI.Navigation.VueVbenAdmin
displayName: "平台管理",
url: "/platform",
component: "",
description: "平台管理");
description: "平台管理",
icon: "ep:platform");
platform.AddItem(
new ApplicationMenu(
name: "DataDictionary",
@ -370,7 +372,7 @@ namespace LINGYUN.Abp.UI.Navigation.VueVbenAdmin
url: "/task-management",
component: "",
description: "任务调度平台",
icon: "");
icon: "bi:list-task");
task.AddItem(
new ApplicationMenu(
name: "BackgroundJobs",
@ -378,6 +380,13 @@ namespace LINGYUN.Abp.UI.Navigation.VueVbenAdmin
url: "/task-management/background-jobs",
component: "/task-management/background-jobs/index",
description: "任务管理"));
task.AddItem(
new ApplicationMenu(
name: "BackgroundJobInfoDetail",
displayName: "任务详情",
url: "/task-management/background-jobs/:id",
component: "/task-management/background-jobs/components/BackgroundJobInfoDetail",
description: "任务详情"));
return new NavigationDefinition(task);
}

13
aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks.ExceptionHandling/LINGYUN/Abp/BackgroundTasks/ExceptionHandling/JobFailedNotifierProvider.cs

@ -22,16 +22,13 @@ public class JobFailedNotifierProvider : IJobFailedNotifierProvider, ITransientD
public ILogger<JobFailedNotifierProvider> Logger { protected get; set; }
protected IClock Clock { get; }
protected IEmailSender EmailSender { get; }
protected ITemplateRenderer TemplateRenderer { get; }
public JobFailedNotifierProvider(
IClock clock,
IEmailSender emailSender,
ITemplateRenderer templateRenderer)
{
Clock = clock;
EmailSender = emailSender;
TemplateRenderer = templateRenderer;
@ -63,15 +60,15 @@ public class JobFailedNotifierProvider : IJobFailedNotifierProvider, ITransientD
return;
}
var footer = eventData.Args.GetOrDefault("footer")?.ToString() ?? $"Copyright to LY Colin © {Clock.Now.Year}";
var footer = eventData.Args.GetOrDefault("footer")?.ToString() ?? $"Copyright to LY Colin © {eventData.RunTime.Year}";
var model = new
{
Title = subject,
Group = eventData.Group,
Name = eventData.Name,
Id = eventData.Key,
Type = eventData.Type,
Triggertime = Clock.Now.ToString("yyyy-MM-dd HH:mm:ss"),
Group = eventData.Args.GetOrDefault(nameof(JobInfo.Group)) ?? eventData.Group,
Name = eventData.Args.GetOrDefault(nameof(JobInfo.Name)) ?? eventData.Name,
Type = eventData.Args.GetOrDefault(nameof(JobInfo.Type)) ?? eventData.Type.Name,
Triggertime = eventData.RunTime.ToString("yyyy-MM-dd HH:mm:ss"),
Message = errorMessage,
Tenantname = eventData.Args.GetOrDefault(nameof(IMultiTenant.TenantId)),
Footer = footer,

30
aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks.Jobs/LINGYUN/Abp/BackgroundTasks/Jobs/HttpRequestJobBase.cs

@ -10,12 +10,16 @@ using System.Threading.Tasks;
using Volo.Abp.Content;
using Volo.Abp.Http;
using Volo.Abp.Http.Client;
using Volo.Abp.Localization;
using Volo.Abp.MultiTenancy;
namespace LINGYUN.Abp.BackgroundTasks.Jobs;
public abstract class HttpRequestJobBase
{
// 可选, 请求时指定区域性
public const string PropertyCulture = "culture";
protected ICurrentTenant CurrentTenant { get; set; }
protected virtual void InitJob(JobRunnableContext context)
@ -77,21 +81,25 @@ public abstract class HttpRequestJobBase
IReadOnlyDictionary<string, string> headers = null,
string clientName = null)
{
var request = BuildRequestMessage(httpMethod, requestUrl, data, contentType, headers);
var clientFactory = context.GetRequiredService<IHttpClientFactory>();
context.TryGetString(PropertyCulture, out var culture);
using (CultureHelper.Use(culture ?? "en"))
{
var request = BuildRequestMessage(httpMethod, requestUrl, data, contentType, headers);
var clientFactory = context.GetRequiredService<IHttpClientFactory>();
var client = clientName.IsNullOrWhiteSpace()
? clientFactory.CreateClient(BackgroundTasksConsts.DefaultHttpClient)
: clientFactory.CreateClient(clientName);
var client = clientName.IsNullOrWhiteSpace()
? clientFactory.CreateClient(BackgroundTasksConsts.DefaultHttpClient)
: clientFactory.CreateClient(clientName);
var response = await client.SendAsync(request);
var response = await client.SendAsync(request);
if (!response.IsSuccessStatusCode)
{
await ThrowExceptionForResponseAsync(response);
}
if (!response.IsSuccessStatusCode)
{
await ThrowExceptionForResponseAsync(response);
}
return response;
return response;
}
}
protected virtual HttpRequestMessage BuildRequestMessage(

9
aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks.Quartz/LINGYUN/Abp/BackgroundTasks/Quartz/QuartzJobExecutorProvider.cs

@ -47,12 +47,19 @@ public class QuartzJobExecutorProvider : IQuartzJobExecutorProvider, ISingletonD
var jobBuilder = JobBuilder.Create(jobType)
.WithIdentity(KeyBuilder.CreateJobKey(job))
.WithDescription(job.Description);
// 查询任务需要
jobBuilder.UsingJobData(nameof(JobInfo.Id), job.Id);
// 有些场景需要
jobBuilder.UsingJobData(nameof(JobInfo.Name), job.Name);
jobBuilder.UsingJobData(nameof(JobInfo.Type), job.Type);
jobBuilder.UsingJobData(nameof(JobInfo.Group), job.Group);
// 独占任务需要
jobBuilder.UsingJobData(nameof(JobInfo.LockTimeOut), job.LockTimeOut);
// 传递的作业参数
jobBuilder.UsingJobData(new JobDataMap(job.Args));
if (job.TenantId.HasValue)
{
// 用于多租户场景
jobBuilder.UsingJobData(nameof(JobInfo.TenantId), job.TenantId.ToString());
}

38
aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks.Quartz/LINGYUN/Abp/BackgroundTasks/Quartz/QuartzJobListener.cs

@ -5,11 +5,9 @@ using Quartz;
using Quartz.Listener;
using System;
using System.Collections.Immutable;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
using Volo.Abp.MultiTenancy;
using Volo.Abp.Timing;
namespace LINGYUN.Abp.BackgroundTasks.Quartz;
@ -21,16 +19,13 @@ public class QuartzJobListener : JobListenerSupport, ISingletonDependency
public override string Name => "QuartzJobListener";
protected IClock Clock { get; }
protected IJobEventProvider EventProvider { get; }
protected IServiceScopeFactory ServiceScopeFactory { get; }
public QuartzJobListener(
IClock clock,
IJobEventProvider eventProvider,
IServiceScopeFactory serviceScopeFactory)
{
Clock = clock;
EventProvider = eventProvider;
ServiceScopeFactory = serviceScopeFactory;
Logger = NullLogger<QuartzJobListener>.Instance;
@ -57,11 +52,6 @@ public class QuartzJobListener : JobListenerSupport, ISingletonDependency
{
return;
}
var jobEventList = EventProvider.GetAll();
if (!jobEventList.Any())
{
return;
}
using var scope = ServiceScopeFactory.CreateScope();
var jobEventData = new JobEventData(
@ -78,15 +68,8 @@ public class QuartzJobListener : JobListenerSupport, ISingletonDependency
scope.ServiceProvider,
jobEventData);
var index = 0;
var taskList = new Task[jobEventList.Count];
foreach (var jobEvent in jobEventList)
{
taskList[index] = jobEvent.OnJobBeforeExecuted(eventContext);
index++;
}
await Task.WhenAll(taskList);
var trigger = scope.ServiceProvider.GetRequiredService<IJobEventTrigger>();
await trigger.OnJobBeforeExecuted(eventContext);
}
catch (Exception ex)
{
@ -104,12 +87,6 @@ public class QuartzJobListener : JobListenerSupport, ISingletonDependency
return;
}
var jobEventList = EventProvider.GetAll();
if (!jobEventList.Any())
{
return;
}
using var scope = ServiceScopeFactory.CreateScope();
var jobType = context.JobDetail.JobType;
if (jobType.IsGenericType)
@ -151,15 +128,8 @@ public class QuartzJobListener : JobListenerSupport, ISingletonDependency
scope.ServiceProvider,
jobEventData);
var index = 0;
var taskList = new Task[jobEventList.Count];
foreach (var jobEvent in jobEventList)
{
taskList[index] = jobEvent.OnJobAfterExecuted(eventContext);
index++;
}
await Task.WhenAll(taskList);
var trigger = scope.ServiceProvider.GetRequiredService<IJobEventTrigger>();
await trigger.OnJobAfterExecuted(eventContext);
}
catch (Exception ex)
{

10
aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks/LINGYUN/Abp/BackgroundTasks/IJobEventTrigger.cs

@ -0,0 +1,10 @@
using System.Threading.Tasks;
namespace LINGYUN.Abp.BackgroundTasks;
public interface IJobEventTrigger
{
Task OnJobBeforeExecuted(JobEventContext context);
Task OnJobAfterExecuted(JobEventContext context);
}

53
aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks/LINGYUN/Abp/BackgroundTasks/JobEventTrigger.cs

@ -0,0 +1,53 @@
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
namespace LINGYUN.Abp.BackgroundTasks;
public class JobEventTrigger : IJobEventTrigger, ITransientDependency
{
protected IJobEventProvider EventProvider { get; }
public JobEventTrigger(IJobEventProvider jobEventProvider)
{
EventProvider = jobEventProvider;
}
public async virtual Task OnJobBeforeExecuted(JobEventContext context)
{
var jobEventList = EventProvider.GetAll();
if (!jobEventList.Any())
{
return;
}
var index = 0;
var taskList = new Task[jobEventList.Count];
foreach (var jobEvent in jobEventList)
{
taskList[index] = jobEvent.OnJobBeforeExecuted(context);
index++;
}
await Task.WhenAll(taskList);
}
public async virtual Task OnJobAfterExecuted(JobEventContext context)
{
var jobEventList = EventProvider.GetAll();
if (!jobEventList.Any())
{
return;
}
var index = 0;
var taskList = new Task[jobEventList.Count];
foreach (var jobEvent in jobEventList)
{
taskList[index] = jobEvent.OnJobAfterExecuted(context);
index++;
}
await Task.WhenAll(taskList);
}
}

15
aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Domain/LINGYUN/Abp/TaskManagement/BackgroundJobStore.cs

@ -46,9 +46,7 @@ public class BackgroundJobStore : IJobStore, ITransientDependency
public async virtual Task<JobInfo> FindAsync(string jobId)
{
var jobInfo = await JobInfoRepository.FindAsync(jobId);
return ObjectMapper.Map<BackgroundJobInfo, JobInfo>(jobInfo);
return await JobInfoRepository.FindJobAsync(jobId);
}
[UnitOfWork]
@ -128,7 +126,7 @@ public class BackgroundJobStore : IJobStore, ITransientDependency
};
jogLog.SetMessage(
eventData.Exception == null ? eventData.Result ?? "OK" : "Failed",
eventData.Exception == null ? eventData.Result ?? "OK" : GetSourceException(eventData.Exception).Message,
eventData.Exception);
await JobLogRepository.InsertAsync(jogLog);
@ -148,4 +146,13 @@ public class BackgroundJobStore : IJobStore, ITransientDependency
await JobInfoRepository.DeleteManyAsync(jobs, cancellationToken: cancellationToken);
}
protected virtual Exception GetSourceException(Exception exception)
{
if (exception.InnerException != null)
{
return GetSourceException(exception.InnerException);
}
return exception;
}
}

14
aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Domain/LINGYUN/Abp/TaskManagement/IBackgroundJobInfoRepository.cs

@ -1,4 +1,5 @@
using System;
using LINGYUN.Abp.BackgroundTasks;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
@ -13,6 +14,17 @@ public interface IBackgroundJobInfoRepository : IRepository<BackgroundJobInfo, s
string name,
CancellationToken cancellationToken = default);
/// <summary>
/// 获取作业
/// </summary>
/// <param name="id"></param>
/// <param name="includeDetails"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
Task<JobInfo> FindJobAsync(
string id,
bool includeDetails = true,
CancellationToken cancellationToken = default);
/// <summary>
/// 获取过期任务列表
/// </summary>
/// <param name="maxResultCount"></param>

37
aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.EntityFrameworkCore/LINGYUN/Abp/TaskManagement/EntityFrameworkCore/EfCoreBackgroundJobInfoRepository.cs

@ -36,6 +36,43 @@ public class EfCoreBackgroundJobInfoRepository :
GetCancellationToken(cancellationToken));
}
public virtual async Task<JobInfo> FindJobAsync(
string id,
bool includeDetails = true,
CancellationToken cancellationToken = default)
{
return await (await GetDbSetAsync())
.Where(x => x.Id.Equals(id))
.Select(x => new JobInfo
{
Id = x.Id,
TenantId = x.TenantId,
Name = x.Name,
NextRunTime = x.NextRunTime,
Args = x.Args,
IsAbandoned = x.IsAbandoned,
BeginTime = x.BeginTime,
EndTime = x.EndTime,
CreationTime = x.CreationTime,
Cron = x.Cron,
MaxCount = x.MaxCount,
MaxTryCount = x.MaxTryCount,
Description = x.Description,
Group = x.Group,
Interval = x.Interval,
JobType = x.JobType,
Status = x.Status,
Priority = x.Priority,
LastRunTime = x.LastRunTime,
LockTimeOut = x.LockTimeOut,
Result = x.Result,
TriggerCount = x.TriggerCount,
TryCount = x.TryCount,
Type = x.Type
})
.FirstOrDefaultAsync(GetCancellationToken(cancellationToken));
}
public virtual async Task<List<BackgroundJobInfo>> GetExpiredJobsAsync(
int maxResultCount,
TimeSpan jobExpiratime,

2
gateways/Directory.Build.props

@ -2,7 +2,7 @@
<PropertyGroup>
<VoloAbpPackageVersion>5.1.1</VoloAbpPackageVersion>
<LINGYUNAbpPackageVersion>5.1.1</LINGYUNAbpPackageVersion>
<DaprPackageVersion>1.5.0</DaprPackageVersion>
<DaprPackageVersion>1.6.0</DaprPackageVersion>
<DotNetCoreCAPPackageVersion>5.2.0</DotNetCoreCAPPackageVersion>
<AliyunSDKPackageVersion>1.5.10</AliyunSDKPackageVersion>
<AliyunOSSSDKPackageVersion>2.13.0</AliyunOSSSDKPackageVersion>

Loading…
Cancel
Save