using Microsoft.Extensions.Caching.Distributed;
using Volo.Abp.Caching;
namespace FoodLabeling.Application.Helpers;
///
/// 管理员(或级联选店流程)当前工作门店缓存项。
///
public class AdminWorkingScopeCacheItem
{
public string LocationId { get; set; } = string.Empty;
public string PartnerId { get; set; } = string.Empty;
public string GroupId { get; set; } = string.Empty;
}
///
/// 按用户 Id 缓存当前选中的工作门店。
///
public class AdminWorkingScopeCacheKey
{
public AdminWorkingScopeCacheKey(Guid userId)
{
UserId = userId;
}
public Guid UserId { get; }
}
///
/// 读写 (选店后与 App my-locations 行为对齐)。
///
public static class AdminWorkingScopeCacheHelper
{
private static readonly DistributedCacheEntryOptions DefaultOptions = new()
{
AbsoluteExpirationRelativeToNow = TimeSpan.FromHours(24)
};
public static async Task GetAsync(
IDistributedCache cache,
Guid userId)
{
return await cache.GetAsync(new AdminWorkingScopeCacheKey(userId));
}
public static Task SetAsync(
IDistributedCache cache,
Guid userId,
AdminWorkingScopeCacheItem item) =>
cache.SetAsync(new AdminWorkingScopeCacheKey(userId), item, DefaultOptions);
public static Task RemoveAsync(
IDistributedCache cache,
Guid userId) =>
cache.RemoveAsync(new AdminWorkingScopeCacheKey(userId));
}