|
@@ -28,6 +28,7 @@ using XF.Domain.Authentications;
|
|
|
using XF.Domain.Cache;
|
|
|
using XF.Domain.Entities;
|
|
|
using XF.Domain.Exceptions;
|
|
|
+using XF.Domain.Locks;
|
|
|
|
|
|
namespace Hotline.Api.Controllers;
|
|
|
|
|
@@ -52,12 +53,13 @@ public class TestController : BaseController
|
|
|
private readonly IMediator _mediator;
|
|
|
|
|
|
private readonly ITimeLimitApplication _timeLimitApplication;
|
|
|
+ private readonly IDistributedLock _distributedLock;
|
|
|
private readonly IGroupManager _goupManager;
|
|
|
|
|
|
//private readonly ITypedCache<List<User>> _cache;
|
|
|
//private readonly ICacheManager<User> _cache;
|
|
|
|
|
|
-
|
|
|
+
|
|
|
public TestController(
|
|
|
INewRockClient client,
|
|
|
ILogger<TestController> logger,
|
|
@@ -75,7 +77,7 @@ public class TestController : BaseController
|
|
|
IRoleRepository roleRepository,
|
|
|
IMediator mediator,
|
|
|
ITimeLimitApplication timeLimitApplication,
|
|
|
- IGroupManager groupManager
|
|
|
+ IDistributedLock distributedLock
|
|
|
)
|
|
|
{
|
|
|
_logger = logger;
|
|
@@ -91,8 +93,7 @@ public class TestController : BaseController
|
|
|
_roleRepository = roleRepository;
|
|
|
_mediator = mediator;
|
|
|
_timeLimitApplication = timeLimitApplication;
|
|
|
-
|
|
|
- groupManager.AddToGroupAsync("123", "123");
|
|
|
+ _distributedLock = distributedLock;
|
|
|
}
|
|
|
|
|
|
[HttpGet("pgsql")]
|
|
@@ -115,6 +116,17 @@ public class TestController : BaseController
|
|
|
[HttpGet("roles")]
|
|
|
public async Task<List<Role>> GetRoles()
|
|
|
{
|
|
|
+ using var lockManager = new LockManager(_distributedLock, $"{nameof(TestController)}.{nameof(GetRoles)}");
|
|
|
+ lockManager.InvokeInLock(() =>
|
|
|
+ {
|
|
|
+ Console.WriteLine("do something");
|
|
|
+ }, TimeSpan.FromSeconds(10));
|
|
|
+
|
|
|
+ await lockManager.InvokeInLockAsync(
|
|
|
+ d => _roleRepository.Queryable(includeDeleted: true).ToListAsync(),
|
|
|
+ TimeSpan.FromSeconds(10),
|
|
|
+ HttpContext.RequestAborted);
|
|
|
+
|
|
|
var a = await _roleRepository.Queryable()
|
|
|
//.Where(d => !d.IsDeleted)
|
|
|
.ToListAsync();
|