From 87af491e89671bb1a82fdbf93acf2a2444c3e7ce Mon Sep 17 00:00:00 2001 From: pavelbannov Date: Thu, 4 Jun 2020 13:54:13 +0300 Subject: [PATCH] Feed: FilesModule --- .../Context/Impl/TenantManager.cs | 2 +- .../Context/Impl/UserManager.cs | 12 +++++++-- .../EF/Model/Feed/FeedUsers.cs | 3 +++ .../Data/FeedAggregateDataProvider.cs | 10 +++++-- .../Configuration/FeedSettings.cs | 27 ++++++++++++++++++- .../Service/FeedAggregatorService.cs | 6 ++--- .../Server/Core/Dao/TeamlabDao/FileDao.cs | 2 +- products/ASC.Files/Service/Program.cs | 3 ++- products/ASC.Files/Service/feed.json | 2 +- 9 files changed, 55 insertions(+), 12 deletions(-) diff --git a/common/ASC.Core.Common/Context/Impl/TenantManager.cs b/common/ASC.Core.Common/Context/Impl/TenantManager.cs index 73d2ae3795..1556d4b60c 100644 --- a/common/ASC.Core.Common/Context/Impl/TenantManager.cs +++ b/common/ASC.Core.Common/Context/Impl/TenantManager.cs @@ -287,7 +287,7 @@ namespace ASC.Core public Tenant GetCurrentTenant(bool throwIfNotFound) { - return GetCurrentTenant(throwIfNotFound, HttpContextAccessor.HttpContext); + return GetCurrentTenant(throwIfNotFound, HttpContextAccessor?.HttpContext); } public void SetCurrentTenant(Tenant tenant) diff --git a/common/ASC.Core.Common/Context/Impl/UserManager.cs b/common/ASC.Core.Common/Context/Impl/UserManager.cs index 0f6fedce55..b45cb5a8ab 100644 --- a/common/ASC.Core.Common/Context/Impl/UserManager.cs +++ b/common/ASC.Core.Common/Context/Impl/UserManager.cs @@ -74,15 +74,23 @@ namespace ASC.Core } + public UserManager( + IHttpContextAccessor httpContextAccessor, + IUserService service, + TenantManager tenantManager, + PermissionContext permissionContext, + UserManagerConstants userManagerConstants) : this(service, tenantManager, permissionContext, userManagerConstants) + { + Accessor = httpContextAccessor; + } + public UserManager( IUserService service, - IHttpContextAccessor httpContextAccessor, TenantManager tenantManager, PermissionContext permissionContext, UserManagerConstants userManagerConstants) { UserService = service; - Accessor = httpContextAccessor; TenantManager = tenantManager; PermissionContext = permissionContext; UserManagerConstants = userManagerConstants; diff --git a/common/ASC.Core.Common/EF/Model/Feed/FeedUsers.cs b/common/ASC.Core.Common/EF/Model/Feed/FeedUsers.cs index de1c2b4210..d80a5bed9c 100644 --- a/common/ASC.Core.Common/EF/Model/Feed/FeedUsers.cs +++ b/common/ASC.Core.Common/EF/Model/Feed/FeedUsers.cs @@ -8,7 +8,10 @@ namespace ASC.Core.Common.EF.Model [Table("feed_users")] public class FeedUsers : BaseEntity { + [Column("feed_id")] public string FeedId { get; set; } + + [Column("user_id")] public Guid UserId { get; set; } public override object[] GetKeys() => new object[] { FeedId, UserId }; diff --git a/common/ASC.Feed/Data/FeedAggregateDataProvider.cs b/common/ASC.Feed/Data/FeedAggregateDataProvider.cs index f6f0406498..c741ea07d2 100644 --- a/common/ASC.Feed/Data/FeedAggregateDataProvider.cs +++ b/common/ASC.Feed/Data/FeedAggregateDataProvider.cs @@ -49,7 +49,8 @@ namespace ASC.Feed.Data public TenantUtil TenantUtil { get; } public FeedDbContext FeedDbContext { get; } - public FeedAggregateDataProvider(DbContextManager dbContextManager) + public FeedAggregateDataProvider(AuthContext authContext, TenantManager tenantManager, TenantUtil tenantUtil, DbContextManager dbContextManager) + : this(authContext, tenantManager, tenantUtil) { FeedDbContext = dbContextManager.Get(Constants.FeedDbId); } @@ -124,7 +125,10 @@ namespace ASC.Feed.Data if (f.ClearRightsBeforeInsert) { var fu = FeedDbContext.FeedUsers.Where(r => r.FeedId == f.Id).FirstOrDefault(); - FeedDbContext.FeedUsers.Remove(fu); + if (fu != null) + { + FeedDbContext.FeedUsers.Remove(fu); + } } FeedDbContext.AddOrUpdate(r => r.FeedAggregates, feedAggregate); @@ -382,6 +386,8 @@ namespace ASC.Feed.Data { public static DIHelper AddFeedAggregateDataProvider(this DIHelper services) { + services.TryAddScoped(); + return services .AddAuthContextService() .AddTenantManagerService() diff --git a/common/services/ASC.Feed.Aggregator/Configuration/FeedSettings.cs b/common/services/ASC.Feed.Aggregator/Configuration/FeedSettings.cs index d46748d506..15cbe61272 100644 --- a/common/services/ASC.Feed.Aggregator/Configuration/FeedSettings.cs +++ b/common/services/ASC.Feed.Aggregator/Configuration/FeedSettings.cs @@ -16,6 +16,31 @@ namespace ASC.Feed.Configuration public TimeSpan RemovePeriod { get; set; } - public static FeedSettings GetInstance(IConfiguration configuration) => configuration.GetSetting("feed"); + public static FeedSettings GetInstance(IConfiguration configuration) + { + var result = configuration.GetSetting("feed"); + + if (string.IsNullOrEmpty(result.ServerRoot)) + { + result.ServerRoot = "http://*/"; + } + + if (result.AggregatePeriod == TimeSpan.Zero) + { + result.AggregatePeriod = TimeSpan.FromMinutes(5); + } + + if (result.AggregateInterval == TimeSpan.Zero) + { + result.AggregateInterval = TimeSpan.FromDays(14); + } + + if (result.RemovePeriod == TimeSpan.Zero) + { + result.RemovePeriod = TimeSpan.FromDays(1); + } + + return result; + } } } diff --git a/common/services/ASC.Feed.Aggregator/Service/FeedAggregatorService.cs b/common/services/ASC.Feed.Aggregator/Service/FeedAggregatorService.cs index 1f2c3e7374..e939bacf6a 100644 --- a/common/services/ASC.Feed.Aggregator/Service/FeedAggregatorService.cs +++ b/common/services/ASC.Feed.Aggregator/Service/FeedAggregatorService.cs @@ -120,9 +120,6 @@ namespace ASC.Feed.Aggregator commonLinkUtility.Initialize(cfg.ServerRoot); var tenantManager = scope.ServiceProvider.GetService(); - var userManager = scope.ServiceProvider.GetService(); - var securityContext = scope.ServiceProvider.GetService(); - var authManager = scope.ServiceProvider.GetService(); var feedAggregateDataProvider = scope.ServiceProvider.GetService(); var start = DateTime.UtcNow; @@ -159,6 +156,9 @@ namespace ASC.Feed.Aggregator } tenantManager.SetCurrentTenant(tenant); + var userManager = scope.ServiceProvider.GetService(); + var securityContext = scope.ServiceProvider.GetService(); + var authManager = scope.ServiceProvider.GetService(); var users = userManager.GetUsers(); var feeds = Attempt(10, () => module.GetFeeds(new FeedFilter(fromTime, toTime) { Tenant = tenant }).Where(r => r.Item1 != null).ToList()); diff --git a/products/ASC.Files/Server/Core/Dao/TeamlabDao/FileDao.cs b/products/ASC.Files/Server/Core/Dao/TeamlabDao/FileDao.cs index 95c546c0b3..496f8b8768 100644 --- a/products/ASC.Files/Server/Core/Dao/TeamlabDao/FileDao.cs +++ b/products/ASC.Files/Server/Core/Dao/TeamlabDao/FileDao.cs @@ -1226,7 +1226,7 @@ namespace ASC.Files.Core.Data .Where(r => r.Security.Security == Security.FileShare.Restrict) .Where(r => r.Security.TimeStamp >= from && r.Security.TimeStamp <= to); - return q4.Select(ToFileWithShare).ToList(); + return q2.Select(ToFileWithShare).ToList().Union(q4.Select(ToFileWithShare).ToList()); } public IEnumerable GetTenantsWithFeeds(DateTime fromTime) diff --git a/products/ASC.Files/Service/Program.cs b/products/ASC.Files/Service/Program.cs index d41b2ca555..5cb2074fd4 100644 --- a/products/ASC.Files/Service/Program.cs +++ b/products/ASC.Files/Service/Program.cs @@ -40,6 +40,7 @@ namespace ASC.Files.Service ) .AddJsonFile("appsettings.json") .AddJsonFile($"appsettings.{env}.json", true) + .AddJsonFile($"appsettings.services.json", true) .AddJsonFile("storage.json") .AddJsonFile("notify.json") .AddJsonFile("kafka.json") @@ -63,7 +64,7 @@ namespace ASC.Files.Service diHelper .AddFeedAggregatorService(); - services.AddAutofac(hostContext.Configuration, hostContext.HostingEnvironment.ContentRootPath, false, false, "search.json", "feed.json"); + services.AddAutofac(hostContext.Configuration, hostContext.HostingEnvironment.ContentRootPath, true, false, "search.json", "feed.json"); }) .UseConsoleLifetime() .Build(); diff --git a/products/ASC.Files/Service/feed.json b/products/ASC.Files/Service/feed.json index ebe8486be0..5f4b79908d 100644 --- a/products/ASC.Files/Service/feed.json +++ b/products/ASC.Files/Service/feed.json @@ -1,7 +1,7 @@ { "components": [ { - "type": "ASC.Files.Service., ASC.Files.Service", + "type": "ASC.Files.Service.Core.FilesModule, ASC.Files.Service", "services": [ { "type": "ASC.Feed.Aggregator.Modules.IFeedModule, ASC.Feed.Aggregator"