Browse Source

Merge branch 'dev' into rel-10.4.0

pull/1505/head
yx lin 3 months ago
committed by GitHub
parent
commit
b40e4b73b4
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 3
      apps/vben5/packages/@abp/ai-management/src/components/tools/AIToolDefinitionTable.vue
  2. 3
      apps/vben5/packages/@abp/ai-management/src/components/workspaces/WorkspaceDefinitionTable.vue
  3. 3
      apps/vben5/packages/@abp/auditing/src/components/audit-logs/AuditLogTable.vue
  4. 2
      apps/vben5/packages/@abp/auditing/src/components/loggings/LoggingDrawer.vue
  5. 3
      apps/vben5/packages/@abp/auditing/src/components/loggings/LoggingTable.vue
  6. 3
      apps/vben5/packages/@abp/blob-management/src/components/containers/BlobContainerTable.vue
  7. 3
      apps/vben5/packages/@abp/data-protection/src/components/entity-type-infos/EntityTypeInfoTable.vue
  8. 3
      apps/vben5/packages/@abp/demo/src/components/books/BookTable.vue
  9. 3
      apps/vben5/packages/@abp/gdpr/src/components/GdprTable.vue
  10. 3
      apps/vben5/packages/@abp/identity/src/components/claim-types/ClaimTypeTable.vue
  11. 3
      apps/vben5/packages/@abp/identity/src/components/organization-units/OrganizationUnitRoleTable.vue
  12. 3
      apps/vben5/packages/@abp/identity/src/components/organization-units/OrganizationUnitUserTable.vue
  13. 3
      apps/vben5/packages/@abp/identity/src/components/organization-units/SelectMemberModal.vue
  14. 3
      apps/vben5/packages/@abp/identity/src/components/organization-units/SelectRoleModal.vue
  15. 3
      apps/vben5/packages/@abp/identity/src/components/roles/RoleTable.vue
  16. 3
      apps/vben5/packages/@abp/identity/src/components/security-logs/SecurityLogTable.vue
  17. 3
      apps/vben5/packages/@abp/identity/src/components/sessions/SessionTable.vue
  18. 3
      apps/vben5/packages/@abp/identity/src/components/users/UserTable.vue
  19. 3
      apps/vben5/packages/@abp/notifications/src/components/my-notifilers/MyNotificationTable.vue
  20. 3
      apps/vben5/packages/@abp/notifications/src/components/send-records/NotificationSendRecordTable.vue
  21. 3
      apps/vben5/packages/@abp/openiddict/src/components/applications/ApplicationTable.vue
  22. 3
      apps/vben5/packages/@abp/openiddict/src/components/authorizations/AuthorizationTable.vue
  23. 3
      apps/vben5/packages/@abp/openiddict/src/components/scopes/ScopeTable.vue
  24. 3
      apps/vben5/packages/@abp/openiddict/src/components/tokens/TokenTable.vue
  25. 3
      apps/vben5/packages/@abp/oss/src/components/containers/ContainerTable.vue
  26. 3
      apps/vben5/packages/@abp/oss/src/components/objects/FileList.vue
  27. 3
      apps/vben5/packages/@abp/platform/src/components/layouts/LayoutTable.vue
  28. 3
      apps/vben5/packages/@abp/platform/src/components/messages/email/EmailMessageTable.vue
  29. 3
      apps/vben5/packages/@abp/platform/src/components/messages/sms/SmsMessageTable.vue
  30. 3
      apps/vben5/packages/@abp/saas/src/components/editions/EditionTable.vue
  31. 3
      apps/vben5/packages/@abp/saas/src/components/tenants/TenantTable.vue
  32. 3
      apps/vben5/packages/@abp/tasks/src/components/job-infos/JobInfoTable.vue
  33. 3
      apps/vben5/packages/@abp/webhooks/src/components/send-attempts/WebhookSendAttemptTable.vue
  34. 3
      apps/vben5/packages/@abp/webhooks/src/components/subscriptions/WebhookSubscriptionTable.vue
  35. 4
      aspnet-core/modules/identity/LINGYUN.Abp.Identity.Domain/LINGYUN/Abp/Identity/Session/IdentitySessionUserInactiveSynchronizer.cs
  36. 24
      aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks.Quartz/LINGYUN/Abp/BackgroundTasks/Quartz/QuartzJobCreator.cs
  37. 57
      aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks/LINGYUN/Abp/BackgroundTasks/BackgroundJobManager.cs

3
apps/vben5/packages/@abp/ai-management/src/components/tools/AIToolDefinitionTable.vue

@ -140,7 +140,8 @@ const gridOptions: VxeGridProps<AIToolDefinitionRecordDto> = {
custom: true,
export: true,
// import: true,
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
zoom: true,

3
apps/vben5/packages/@abp/ai-management/src/components/workspaces/WorkspaceDefinitionTable.vue

@ -130,7 +130,8 @@ const gridOptions: VxeGridProps<WorkspaceDefinitionRecordDto> = {
custom: true,
export: true,
// import: true,
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
zoom: true,

3
apps/vben5/packages/@abp/auditing/src/components/audit-logs/AuditLogTable.vue

@ -241,7 +241,8 @@ const gridOptions: VxeGridProps<AuditLogDto> = {
custom: true,
export: true,
// import: true,
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
zoom: true,

2
apps/vben5/packages/@abp/auditing/src/components/loggings/LoggingDrawer.vue

@ -219,7 +219,7 @@ async function onGet(id: string) {
{{ row.hResult }}
</DescriptionsItem>
<DescriptionsItem :label="$t('AbpAuditLogging.HelpURL')">
{{ row.helpURL }}
{{ row.helpUrl }}
</DescriptionsItem>
</Descriptions>
</template>

3
apps/vben5/packages/@abp/auditing/src/components/loggings/LoggingTable.vue

@ -278,7 +278,8 @@ const gridOptions: VxeGridProps<LogDto> = {
toolbarConfig: {
custom: true,
export: true,
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
zoom: true,

3
apps/vben5/packages/@abp/blob-management/src/components/containers/BlobContainerTable.vue

@ -109,7 +109,8 @@ const gridOptions: VxeGridProps<BlobContainerDto> = {
toolbarConfig: {
custom: true,
export: true,
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
zoom: true,

3
apps/vben5/packages/@abp/data-protection/src/components/entity-type-infos/EntityTypeInfoTable.vue

@ -91,7 +91,8 @@ const gridOptions: VxeGridProps<EntityTypeInfoDto> = {
},
},
toolbarConfig: {
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
},

3
apps/vben5/packages/@abp/demo/src/components/books/BookTable.vue

@ -108,7 +108,8 @@ const gridOptions: VxeGridProps<BookDto> = {
},
},
toolbarConfig: {
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
},

3
apps/vben5/packages/@abp/gdpr/src/components/GdprTable.vue

@ -84,7 +84,8 @@ const gridOptions: VxeGridProps<GdprRequestDto> = {
},
},
toolbarConfig: {
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
},

3
apps/vben5/packages/@abp/identity/src/components/claim-types/ClaimTypeTable.vue

@ -154,7 +154,8 @@ const gridOptions: VxeGridProps<IdentityClaimTypeDto> = {
toolbarConfig: {
custom: true,
export: true,
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
zoom: true,

3
apps/vben5/packages/@abp/identity/src/components/organization-units/OrganizationUnitRoleTable.vue

@ -84,7 +84,8 @@ const gridOptions: VxeGridProps<IdentityRoleDto> = {
toolbarConfig: {
custom: true,
export: true,
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
zoom: true,

3
apps/vben5/packages/@abp/identity/src/components/organization-units/OrganizationUnitUserTable.vue

@ -90,7 +90,8 @@ const gridOptions: VxeGridProps<IdentityUserDto> = {
toolbarConfig: {
custom: true,
export: true,
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
zoom: true,

3
apps/vben5/packages/@abp/identity/src/components/organization-units/SelectMemberModal.vue

@ -112,7 +112,8 @@ const gridOptions: VxeGridProps<IdentityUserDto> = {
},
},
toolbarConfig: {
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
},

3
apps/vben5/packages/@abp/identity/src/components/organization-units/SelectRoleModal.vue

@ -104,7 +104,8 @@ const gridOptions: VxeGridProps<IdentityRoleDto> = {
},
},
toolbarConfig: {
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
},

3
apps/vben5/packages/@abp/identity/src/components/roles/RoleTable.vue

@ -120,7 +120,8 @@ const gridOptions: VxeGridProps<IdentityRoleDto> = {
toolbarConfig: {
custom: true,
export: true,
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
zoom: true,

3
apps/vben5/packages/@abp/identity/src/components/security-logs/SecurityLogTable.vue

@ -185,7 +185,8 @@ const gridOptions: VxeGridProps<SecurityLogDto> = {
toolbarConfig: {
custom: true,
export: true,
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
zoom: true,

3
apps/vben5/packages/@abp/identity/src/components/sessions/SessionTable.vue

@ -168,7 +168,8 @@ const gridOptions: VxeGridProps<IdentitySessionDto> = {
toolbarConfig: {
custom: true,
export: true,
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
zoom: true,

3
apps/vben5/packages/@abp/identity/src/components/users/UserTable.vue

@ -168,7 +168,8 @@ const gridOptions: VxeGridProps<IdentityUserDto> = {
toolbarConfig: {
custom: true,
export: true,
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
zoom: true,

3
apps/vben5/packages/@abp/notifications/src/components/my-notifilers/MyNotificationTable.vue

@ -175,7 +175,8 @@ const gridOptions: VxeGridProps<Notification> = {
toolbarConfig: {
custom: true,
export: true,
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
zoom: true,

3
apps/vben5/packages/@abp/notifications/src/components/send-records/NotificationSendRecordTable.vue

@ -234,7 +234,8 @@ const gridOptions: VxeGridProps<NotificationSendRecordDto> = {
toolbarConfig: {
custom: true,
export: true,
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
zoom: true,

3
apps/vben5/packages/@abp/openiddict/src/components/applications/ApplicationTable.vue

@ -146,7 +146,8 @@ const gridOptions: VxeGridProps<OpenIddictApplicationDto> = {
toolbarConfig: {
custom: true,
export: true,
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
zoom: true,

3
apps/vben5/packages/@abp/openiddict/src/components/authorizations/AuthorizationTable.vue

@ -168,7 +168,8 @@ const gridOptions: VxeGridProps<OpenIddictAuthorizationDto> = {
toolbarConfig: {
custom: true,
export: true,
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
zoom: true,

3
apps/vben5/packages/@abp/openiddict/src/components/scopes/ScopeTable.vue

@ -121,7 +121,8 @@ const gridOptions: VxeGridProps<OpenIddictScopeDto> = {
toolbarConfig: {
custom: true,
export: true,
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
zoom: true,

3
apps/vben5/packages/@abp/openiddict/src/components/tokens/TokenTable.vue

@ -195,7 +195,8 @@ const gridOptions: VxeGridProps<OpenIddictTokenDto> = {
toolbarConfig: {
custom: true,
export: true,
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
zoom: true,

3
apps/vben5/packages/@abp/oss/src/components/containers/ContainerTable.vue

@ -120,7 +120,8 @@ const gridOptions: VxeGridProps<OssContainerDto> = {
toolbarConfig: {
custom: true,
export: true,
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
zoom: true,

3
apps/vben5/packages/@abp/oss/src/components/objects/FileList.vue

@ -150,7 +150,8 @@ const gridOptions: VxeGridProps<OssObjectDto> = {
toolbarConfig: {
custom: true,
export: false,
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
zoom: true,

3
apps/vben5/packages/@abp/platform/src/components/layouts/LayoutTable.vue

@ -144,7 +144,8 @@ const gridOptions: VxeGridProps<LayoutDto> = {
toolbarConfig: {
custom: true,
export: true,
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
zoom: true,

3
apps/vben5/packages/@abp/platform/src/components/messages/email/EmailMessageTable.vue

@ -207,7 +207,8 @@ const gridOptions: VxeGridProps<EmailMessageDto> = {
toolbarConfig: {
custom: true,
export: true,
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
zoom: true,

3
apps/vben5/packages/@abp/platform/src/components/messages/sms/SmsMessageTable.vue

@ -188,7 +188,8 @@ const gridOptions: VxeGridProps<SmsMessageDto> = {
toolbarConfig: {
custom: true,
export: true,
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
zoom: true,

3
apps/vben5/packages/@abp/saas/src/components/editions/EditionTable.vue

@ -103,7 +103,8 @@ const gridOptions: VxeGridProps<EditionDto> = {
toolbarConfig: {
custom: true,
export: true,
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
zoom: true,

3
apps/vben5/packages/@abp/saas/src/components/tenants/TenantTable.vue

@ -128,7 +128,8 @@ const gridOptions: VxeGridProps<TenantDto> = {
toolbarConfig: {
custom: true,
export: true,
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
zoom: true,

3
apps/vben5/packages/@abp/tasks/src/components/job-infos/JobInfoTable.vue

@ -389,7 +389,8 @@ const gridOptions: VxeGridProps<BackgroundJobInfoDto> = {
},
},
toolbarConfig: {
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
},

3
apps/vben5/packages/@abp/webhooks/src/components/send-attempts/WebhookSendAttemptTable.vue

@ -211,7 +211,8 @@ const gridOptions: VxeGridProps<WebhookSendRecordDto> = {
toolbarConfig: {
custom: true,
export: true,
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
zoom: true,

3
apps/vben5/packages/@abp/webhooks/src/components/subscriptions/WebhookSubscriptionTable.vue

@ -210,7 +210,8 @@ const gridOptions: VxeGridProps<WebhookSubscriptionDto> = {
toolbarConfig: {
custom: true,
export: true,
refresh: {
refresh: true,
refreshOptions: {
code: 'query',
},
zoom: true,

4
aspnet-core/modules/identity/LINGYUN.Abp.Identity.Domain/LINGYUN/Abp/Identity/Session/IdentitySessionUserInactiveSynchronizer.cs

@ -1,4 +1,4 @@
using System.Threading.Tasks;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
using Volo.Abp.DistributedLocking;
using Volo.Abp.Domain.Entities.Events.Distributed;
@ -28,6 +28,8 @@ public class IdentitySessionUserInactiveSynchronizer :
await using var lockHandle = await _distributedLock.TryAcquireAsync(
$"{nameof(IdentitySessionUserInactiveSynchronizer)}_{nameof(IdentitySessionEto)}");
if (lockHandle != null)
var userInactive = await _identityUserInactiveRepository.FindByUserIdAsync(eventData.Entity.UserId);
if (userInactive != null)
{
var userInactive = await _identityUserInactiveRepository.FindByUserIdAsync(eventData.Entity.UserId);
if (userInactive != null)

24
aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks.Quartz/LINGYUN/Abp/BackgroundTasks/Quartz/QuartzJobCreator.cs

@ -125,11 +125,21 @@ public class QuartzJobCreator : IQuartzJobCreator, ISingletonDependency
triggerBuilder
.WithIdentity(KeyBuilder.CreateTriggerKey(job))
.WithDescription(job.Description)
.StartAt(Clock.Now.AddSeconds(job.Interval))
.EndAt(job.EndTime)
.ForJob(KeyBuilder.CreateJobKey(job))
.WithPriority((int)job.Priority);
// 首次启动时间由 BeginTime 决定,不再使用 Interval 作为"延迟启动"。
// Interval 仅在 Persistent 周期任务中表示"重复间隔"。
if (job.BeginTime > Clock.Now)
{
triggerBuilder.StartAt(job.BeginTime);
}
else
{
triggerBuilder.StartNow();
}
// Quartz约定. 重复间隔不能为0
// fix throw Quartz.SchedulerException: Repeat Interval cannot be zero.
var scheduleBuilder = SimpleScheduleBuilder.Create();
@ -139,14 +149,8 @@ public class QuartzJobCreator : IQuartzJobCreator, ISingletonDependency
{
scheduleBuilder.WithRepeatCount(maxCount);
}
if (job.Interval > 0)
{
scheduleBuilder.WithIntervalInSeconds(job.Interval);
}
else
{
scheduleBuilder.WithIntervalInSeconds(300);
}
scheduleBuilder.WithIntervalInSeconds(job.Interval > 0 ? job.Interval : 300);
triggerBuilder.WithSchedule(scheduleBuilder);

57
aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks/LINGYUN/Abp/BackgroundTasks/BackgroundJobManager.cs

@ -47,33 +47,36 @@ public class BackgroundJobManager : IBackgroundJobManager
TimeSpan? delay = null)
{
var jobConfiguration = Options.GetJob<TArgs>();
var interval = 0;
if (delay.HasValue)
{
interval = delay.Value.Seconds;
}
var jobId = GuidGenerator.Create();
var jobArgs = new Dictionary<string, object>
{
{ nameof(TArgs), JsonSerializer.Serialize(args) },
{ "ArgsType", jobConfiguration.ArgsType.AssemblyQualifiedName },
{ "JobType", jobConfiguration.JobType.AssemblyQualifiedName },
{ "JobName", jobConfiguration.JobName },
};
var jobInfo = new JobInfo
{
Id = jobId.ToString(),
TenantId = CurrentTenant.Id,
Name = jobId.ToString(),
Group = "BackgroundJobs",
Priority = ConverForm(priority),
Source = JobSource.System,
BeginTime = DateTime.Now,
Args = jobArgs,
Description = "From the framework background jobs",
JobType = JobType.Once,
Interval = interval,
CreationTime = Clock.Now,
// 用 BeginTime 表达延迟启动,避免与 JobInfo.Interval(重复间隔)语义混用。
// 原实现使用 delay.Value.Seconds(仅取秒分量 0-59),
// 会让 TimeSpan.FromMinutes(5) 这类整分钟/整小时的延迟退化为 0,导致任务立即执行。
var now = Clock.Now;
var beginTime = now;
if (delay.HasValue && delay.Value > TimeSpan.Zero)
{
beginTime = now.Add(delay.Value);
}
var jobId = GuidGenerator.Create();
var jobArgs = new Dictionary<string, object>
{
{ nameof(TArgs), JsonSerializer.Serialize(args) },
{ "ArgsType", jobConfiguration.ArgsType.AssemblyQualifiedName },
{ "JobType", jobConfiguration.JobType.AssemblyQualifiedName },
{ "JobName", jobConfiguration.JobName },
};
var jobInfo = new JobInfo
{
Id = jobId.ToString(),
TenantId = CurrentTenant.Id,
Name = jobId.ToString(),
Group = "BackgroundJobs",
Priority = ConverForm(priority),
Source = JobSource.System,
BeginTime = beginTime,
Args = jobArgs,
Description = "From the framework background jobs",
JobType = JobType.Once,
CreationTime = now,
// 确保不会被轮询入队
Status = JobStatus.None,
NodeName = TasksOptions.NodeName,

Loading…
Cancel
Save