fix 优化获取开始id
This commit is contained in:
@@ -19,5 +19,13 @@ public class Startup : DefaultStartup
|
||||
{
|
||||
base.ConfigureServices(services);
|
||||
services.AddRedis();
|
||||
services.AddMemoryCache();
|
||||
}
|
||||
|
||||
// public override void Configure(IApplicationBuilder app, IWebHostEnvironment env)
|
||||
// {
|
||||
// base.Configure(app, env);
|
||||
// var token = new JipTokenHandler().GetTokenAsync(app.ApplicationServices).GetAwaiter().GetResult();
|
||||
// Console.WriteLine("token: " + token);
|
||||
// }
|
||||
}
|
||||
@@ -13,6 +13,7 @@ using Kurisu.AspNetCore.Utils;
|
||||
using Dlhis.ScheduledTask.TaskAssignment.Dto;
|
||||
using Kurisu.AspNetCore.CustomClass;
|
||||
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
|
||||
using Microsoft.Extensions.Caching.Memory;
|
||||
|
||||
namespace Dlhis.ScheduledTask.TaskAssignment.Services.Implements;
|
||||
|
||||
@@ -20,16 +21,19 @@ public class AssignmentService : IAssignmentService
|
||||
{
|
||||
private readonly IDbContext _dbContext;
|
||||
private readonly IDataProtectionProvider _dataProtectionProvider;
|
||||
private readonly IMemoryCache _memoryCache;
|
||||
private readonly ILogger<AssignmentService> _logger;
|
||||
private readonly FaceUrlOptions _faceUrlOptions;
|
||||
|
||||
public AssignmentService(IDbContext dbContext,
|
||||
IDataProtectionProvider dataProtectionProvider,
|
||||
IOptions<FaceUrlOptions> options,
|
||||
IMemoryCache memoryCache,
|
||||
ILogger<AssignmentService> logger)
|
||||
{
|
||||
_dbContext = dbContext;
|
||||
_dataProtectionProvider = dataProtectionProvider;
|
||||
_memoryCache = memoryCache;
|
||||
_logger = logger;
|
||||
_faceUrlOptions = options.Value;
|
||||
}
|
||||
@@ -241,11 +245,7 @@ public class AssignmentService : IAssignmentService
|
||||
|
||||
private async Task<List<TaskDto>> GetDataAsync(DeviceTaskGetRequest request)
|
||||
{
|
||||
var startId = await GetStartIdAsync(request.DeviceUniqueNo);
|
||||
if (!startId.HasValue)
|
||||
{
|
||||
return new List<TaskDto>();
|
||||
}
|
||||
var startId = await GetStartIdAsync();
|
||||
|
||||
var data = await CommonHelper.RetryAsync(async () =>
|
||||
{
|
||||
@@ -329,22 +329,25 @@ public class AssignmentService : IAssignmentService
|
||||
}
|
||||
|
||||
|
||||
private async Task<long?> GetStartIdAsync(string deviceUniqueNo)
|
||||
private async Task<long> GetStartIdAsync()
|
||||
{
|
||||
return 74782371;
|
||||
const string cacheKey = "DeviceTaskStartId";
|
||||
if (_memoryCache.TryGetValue<long>(cacheKey, out var cachedStartId))
|
||||
{
|
||||
return cachedStartId;
|
||||
}
|
||||
|
||||
var limitTime = DateTime.Now.AddDays(-3);
|
||||
|
||||
var limitData = await _dbContext.Queryable<DeviceTaskEntity>()
|
||||
.Where(x => x.ModifiedTime >= limitTime)
|
||||
.Where(x => x.DeviceUniqueNo == deviceUniqueNo)
|
||||
.OrderBy(x => x.ModifiedTime)
|
||||
.Select(x => new { x.Id })
|
||||
.Select(x => x.Id)
|
||||
.FirstAsync();
|
||||
|
||||
var startId = limitData?.Id;
|
||||
_memoryCache.Set(cacheKey, limitData, TimeSpan.FromMinutes(30));
|
||||
|
||||
return startId;
|
||||
return limitData;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user