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)); }