You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
BookingHeChuan/Myshipping.Core/Service/Cache/SysCacheService.cs

722 lines
20 KiB
C#

2 years ago
using Furion.DependencyInjection;
using Furion.DynamicApiController;
2 years ago
using Furion.FriendlyException;
2 years ago
using Microsoft.AspNetCore.Authorization;
2 years ago
using Microsoft.AspNetCore.Mvc;
2 years ago
using Microsoft.Extensions.Logging;
2 years ago
using Microsoft.Extensions.Options;
using Myshipping.Core.Entity;
2 years ago
using Myshipping.Core.Entity.CommonDB;
2 years ago
using Myshipping.Core.Service.Dict.Dto;
2 years ago
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Myshipping.Core.Service;
2 years ago
/// <summary>
/// 系统缓存服务
/// </summary>
2 years ago
[ApiDescriptionSettings(Name = "Cache", Order = 100)]
2 years ago
2 years ago
public class SysCacheService : ISysCacheService, IDynamicApiController, ISingleton
{
private readonly ICache _cache;
private readonly CacheOptions _cacheOptions;
2 years ago
private readonly ILogger<SysCacheService> _logger;
2 years ago
2 years ago
public SysCacheService(IOptions<CacheOptions> cacheOptions, ILogger<SysCacheService> logger, Func<string, ISingleton, object> resolveNamed)
2 years ago
{
2 years ago
_logger = logger;
2 years ago
_cacheOptions = cacheOptions.Value;
_cache = resolveNamed(_cacheOptions.CacheType.ToString(), default) as ICache;
}
/// <summary>
/// 获取数据范围缓存机构Id集合
/// </summary>
/// <param name="userId"></param>
/// <returns></returns>
public async Task<List<long>> GetDataScope(long userId)
{
var cacheKey = CommonConst.CACHE_KEY_DATASCOPE + $"{userId}";
return await _cache.GetAsync<List<long>>(cacheKey);
}
/// <summary>
/// 获取数据范围缓存用户Id集合
/// </summary>
/// <param name="userId"></param>
/// <returns></returns>
public async Task<List<long>> GetUsersDataScope(long userId)
{
var cacheKey = CommonConst.CACHE_KEY_USERSDATASCOPE + $"{userId}";
return await _cache.GetAsync<List<long>>(cacheKey);
}
2 years ago
2 years ago
/// <summary>
/// 缓存数据范围机构Id集合
/// </summary>
/// <param name="userId"></param>
/// <param name="dataScopes"></param>
/// <returns></returns>
[NonAction]
public async Task SetDataScope(long userId, List<long> dataScopes)
{
var cacheKey = CommonConst.CACHE_KEY_DATASCOPE + $"{userId}";
await _cache.SetAsync(cacheKey, dataScopes);
}
/// <summary>
/// 缓存数据范围用户Id集合
/// </summary>
/// <param name="userId"></param>
/// <param name="dataScopes"></param>
/// <returns></returns>
[NonAction]
public async Task SetUsersDataScope(long userId, List<long> dataScopes)
{
var cacheKey = CommonConst.CACHE_KEY_USERSDATASCOPE + $"{userId}";
await _cache.SetAsync(cacheKey, dataScopes);
}
/// <summary>
/// 获取菜单缓存
/// </summary>
/// <param name="userId"></param>
/// <param name="appCode"></param>
/// <returns></returns>
public async Task<List<AntDesignTreeNode>> GetMenu(long userId, string appCode)
{
var cacheKey = CommonConst.CACHE_KEY_MENU + $"{userId}-{appCode}";
return await _cache.GetAsync<List<AntDesignTreeNode>>(cacheKey);
}
/// <summary>
/// 缓存菜单
/// </summary>
/// <param name="userId"></param>
/// <param name="appCode"></param>
/// <param name="menus"></param>
/// <returns></returns>
[NonAction]
public async Task SetMenu(long userId, string appCode, List<AntDesignTreeNode> menus)
{
var cacheKey = CommonConst.CACHE_KEY_MENU + $"{userId}-{appCode}";
await _cache.SetAsync(cacheKey, menus);
}
/// <summary>
/// 获取权限缓存(按钮)
/// </summary>
/// <param name="userId"></param>
/// <returns></returns>
public async Task<List<string>> GetPermission(long userId)
{
var cacheKey = CommonConst.CACHE_KEY_PERMISSION + $"{userId}";
return await _cache.GetAsync<List<string>>(cacheKey);
}
/// <summary>
/// 缓存权限
/// </summary>
/// <param name="userId"></param>
/// <param name="permissions"></param>
/// <returns></returns>
[NonAction]
public async Task SetPermission(long userId, List<string> permissions)
{
var cacheKey = CommonConst.CACHE_KEY_PERMISSION + $"{userId}";
await _cache.SetAsync(cacheKey, permissions);
}
/// <summary>
/// 获取所有缓存关键字
/// </summary>
/// <returns></returns>
public List<string> GetAllCacheKeys()
{
var cacheItems = _cache.GetAllKeys();
if (cacheItems == null) return new List<string>();
return cacheItems.Where(u => !u.ToString().StartsWith("mini-profiler")).Select(u => u).ToList();
}
/// <summary>
/// 获取所有按钮权限
/// </summary>
/// <returns></returns>
public async Task<List<string>> GetAllPermission()
{
var cacheKey = CommonConst.CACHE_KEY_ALLPERMISSION;
return await _cache.GetAsync<List<string>>(cacheKey);
}
/// <summary>
/// 设置所有按钮权限
/// </summary>
/// <param name="permissions"></param>
/// <returns></returns>
public async Task SetAllPermission(List<string> permissions)
{
var cacheKey = CommonConst.CACHE_KEY_ALLPERMISSION;
await _cache.SetAsync(cacheKey, permissions);
}
/// <summary>
/// 删除指定关键字缓存
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
[NonAction]
public bool Del(string key)
{
_cache.Del(key);
return true;
}
/// <summary>
/// 删除指定关键字缓存
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public Task<bool> DelAsync(string key)
{
_cache.DelAsync(key);
return Task.FromResult(true);
}
/// <summary>
/// 删除某特征关键字缓存
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public Task<bool> DelByPatternAsync(string key)
{
_cache.DelByPatternAsync(key);
return Task.FromResult(true);
}
/// <summary>
/// 设置缓存
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
/// <returns></returns>
[NonAction]
public bool Set(string key, object value)
{
return _cache.Set(key, value);
}
/// <summary>
/// 设置缓存
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
/// <returns></returns>
public async Task<bool> SetAsync(string key, object value)
{
return await _cache.SetAsync(key, value);
}
2 years ago
/// <summary>
/// 设置缓存,并带有过期时间
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
/// <param name="ts"></param>
/// <returns></returns>
public async Task<bool> SetTimeoutAsync(string key, object value, TimeSpan ts)
{
return await _cache.SetAsync(key, value, ts);
}
2 years ago
/// <summary>
/// 获取缓存
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
[NonAction]
public string Get(string key)
{
return _cache.Get(key);
}
/// <summary>
/// 获取缓存
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public async Task<string> GetAsync(string key)
{
return await _cache.GetAsync(key);
}
/// <summary>
/// 获取缓存
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="key"></param>
/// <returns></returns>
[NonAction]
public T Get<T>(string key)
{
return _cache.Get<T>(key);
}
/// <summary>
/// 获取缓存
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="key"></param>
/// <returns></returns>
public Task<T> GetAsync<T>(string key)
{
return _cache.GetAsync<T>(key);
}
/// <summary>
/// 检查给定 key 是否存在
/// </summary>
/// <param name="key">键</param>
/// <returns></returns>
[NonAction]
public bool Exists(string key)
{
return _cache.Exists(key);
}
/// <summary>
/// 检查给定 key 是否存在
/// </summary>
/// <param name="key">键</param>
/// <returns></returns>
public Task<bool> ExistsAsync(string key)
{
return _cache.ExistsAsync(key);
}
#region 公共库缓存
/// <summary>
/// 获取公共库 船公司
/// </summary>
/// <returns></returns>
public Task<List<CodeCarrier>> GetAllCodeCarrier()
{
return _cache.GetAsync<List<CodeCarrier>>(CommonConst.CACHE_KEY_COMMON_DB_CARRIER);
}
/// <summary>
/// 获取公共库 船名
/// </summary>
/// <returns></returns>
public Task<List<CodeVessel>> GetAllCodeVessel()
{
return _cache.GetAsync<List<CodeVessel>>(CommonConst.CACHE_KEY_COMMON_DB_VESSEL);
}
/// <summary>
/// 获取公共库 船代
/// </summary>
/// <returns></returns>
public Task<List<CodeForwarder>> GetAllCodeForwarder()
{
return _cache.GetAsync<List<CodeForwarder>>(CommonConst.CACHE_KEY_COMMON_DB_FORWARDER);
}
/// <summary>
/// 获取公共库 场站
/// </summary>
/// <returns></returns>
public Task<List<CodeYard>> GetAllCodeYard()
{
return _cache.GetAsync<List<CodeYard>>(CommonConst.CACHE_KEY_COMMON_DB_YARD);
}
/// <summary>
/// 获取公共库 起始港
/// </summary>
/// <returns></returns>
public Task<List<CodePortLoad>> GetAllCodePortLoad()
{
return _cache.GetAsync<List<CodePortLoad>>(CommonConst.CACHE_KEY_COMMON_DB_PORTLOAD);
}
/// <summary>
/// 获取公共库 目的港
/// </summary>
/// <returns></returns>
public Task<List<CodePort>> GetAllCodePort()
{
return _cache.GetAsync<List<CodePort>>(CommonConst.CACHE_KEY_COMMON_DB_PORT);
}
/// <summary>
/// 获取公共库 包装
/// </summary>
/// <returns></returns>
public Task<List<CodePackage>> GetAllCodePackage()
{
return _cache.GetAsync<List<CodePackage>>(CommonConst.CACHE_KEY_COMMON_DB_PACKAGE);
}
/// <summary>
/// 获取公共库 运输方式
/// </summary>
/// <returns></returns>
public Task<List<CodeService>> GetAllCodeService()
{
return _cache.GetAsync<List<CodeService>>(CommonConst.CACHE_KEY_COMMON_DB_SERVICE);
}
/// <summary>
/// 获取公共库 箱型
/// </summary>
/// <returns></returns>
public Task<List<CodeCtn>> GetAllCodeCtn()
{
return _cache.GetAsync<List<CodeCtn>>(CommonConst.CACHE_KEY_COMMON_DB_CTN);
}
/// <summary>
/// 获取公共库 付费方式
/// </summary>
/// <returns></returns>
public Task<List<CodeFrt>> GetAllCodeFrt()
{
return _cache.GetAsync<List<CodeFrt>>(CommonConst.CACHE_KEY_COMMON_DB_FRT);
}
/// <summary>
2 years ago
/// 获取公共库 箱型映射
/// </summary>
/// <returns></returns>
public Task<List<MappingCtn>> GetAllMappingCtn()
{
return _cache.GetAsync<List<MappingCtn>>(CommonConst.CACHE_KEY_COMMON_DB_MAPPING_CTN);
}
/// <summary>
2 years ago
/// 获取公共库 船司映射
/// </summary>
/// <returns></returns>
public Task<List<MappingCarrier>> GetAllMappingCarrier()
{
return _cache.GetAsync<List<MappingCarrier>>(CommonConst.CACHE_KEY_COMMON_DB_MAPPING_CARRIER);
}
/// <summary>
/// 获取公共库 费用方式映射
/// </summary>
/// <returns></returns>
public Task<List<MappingFrt>> GetAllMappingFrt()
{
return _cache.GetAsync<List<MappingFrt>>(CommonConst.CACHE_KEY_COMMON_DB_MAPPING_FRT);
}
/// <summary>
/// 获取公共库 船名映射
/// </summary>
/// <returns></returns>
public Task<List<MappingVessel>> GetAllMappingVessel()
{
return _cache.GetAsync<List<MappingVessel>>(CommonConst.CACHE_KEY_COMMON_DB_MAPPING_VESSEL);
}
2 years ago
/// <summary>
2 years ago
/// 获取公共库 场站映射
2 years ago
/// </summary>
/// <returns></returns>
public Task<List<MappingYard>> GetAllMappingYard()
{
return _cache.GetAsync<List<MappingYard>>(CommonConst.CACHE_KEY_COMMON_DB_MAPPING_YARD);
}
/// <summary>
/// 设置公共库 船公司
/// </summary>
/// <returns></returns>
public Task SetAllCodeCarrier(List<CodeCarrier> list)
{
2 years ago
return _cache.SetAsync(CommonConst.CACHE_KEY_COMMON_DB_CARRIER, list);
}
/// <summary>
/// 设置公共库 船名
/// </summary>
/// <returns></returns>
public Task SetAllCodeVessel(List<CodeVessel> list)
{
return _cache.SetAsync(CommonConst.CACHE_KEY_COMMON_DB_VESSEL, list.ToJsonString());
}
/// <summary>
/// 设置公共库 船代
/// </summary>
/// <returns></returns>
public Task SetAllCodeForwarder(List<CodeForwarder> list)
{
2 years ago
return _cache.SetAsync(CommonConst.CACHE_KEY_COMMON_DB_FORWARDER, list);
}
/// <summary>
/// 设置公共库 场站
/// </summary>
/// <returns></returns>
public Task SetAllCodeYard(List<CodeYard> list)
{
2 years ago
return _cache.SetAsync(CommonConst.CACHE_KEY_COMMON_DB_YARD, list);
}
/// <summary>
/// 设置公共库 起始港
/// </summary>
/// <returns></returns>
public Task SetAllCodePortLoad(List<CodePortLoad> list)
{
2 years ago
return _cache.SetAsync(CommonConst.CACHE_KEY_COMMON_DB_PORTLOAD, list);
}
/// <summary>
/// 设置公共库 目的港
/// </summary>
/// <returns></returns>
public Task SetAllCodePort(List<CodePort> list)
{
2 years ago
return _cache.SetAsync(CommonConst.CACHE_KEY_COMMON_DB_PORT, list);
}
/// <summary>
/// 设置公共库 包装
/// </summary>
/// <returns></returns>
public Task SetAllCodePackage(List<CodePackage> list)
{
2 years ago
return _cache.SetAsync(CommonConst.CACHE_KEY_COMMON_DB_PACKAGE, list);
}
/// <summary>
/// 设置公共库 运输方式
/// </summary>
/// <returns></returns>
public Task SetAllCodeService(List<CodeService> list)
{
2 years ago
return _cache.SetAsync(CommonConst.CACHE_KEY_COMMON_DB_SERVICE, list);
}
/// <summary>
/// 设置公共库 箱型
/// </summary>
/// <returns></returns>
public Task SetAllCodeCtn(List<CodeCtn> list)
{
2 years ago
return _cache.SetAsync(CommonConst.CACHE_KEY_COMMON_DB_CTN, list);
}
/// <summary>
/// 设置公共库 付费方式
/// </summary>
/// <returns></returns>
public Task SetAllCodeFrt(List<CodeFrt> list)
{
2 years ago
return _cache.SetAsync(CommonConst.CACHE_KEY_COMMON_DB_FRT, list);
}
/// <summary>
/// 设置公共库 箱型映射
/// </summary>
/// <returns></returns>
public Task SetAllMappingCtn(List<MappingCtn> list)
{
2 years ago
return _cache.SetAsync(CommonConst.CACHE_KEY_COMMON_DB_MAPPING_CTN, list);
}
/// <summary>
/// 设置公共库 船司映射
/// </summary>
/// <returns></returns>
public Task SetAllMappingCarrier(List<MappingCarrier> list)
{
2 years ago
return _cache.SetAsync(CommonConst.CACHE_KEY_COMMON_DB_MAPPING_CARRIER, list);
}
/// <summary>
/// 设置公共库 费用方式映射
/// </summary>
/// <returns></returns>
public Task SetAllMappingFrt(List<MappingFrt> list)
{
2 years ago
return _cache.SetAsync(CommonConst.CACHE_KEY_COMMON_DB_MAPPING_FRT, list);
}
/// <summary>
/// 设置公共库 船名映射
/// </summary>
/// <returns></returns>
public Task SetAllMappingVessel(List<MappingVessel> list)
{
2 years ago
return _cache.SetAsync(CommonConst.CACHE_KEY_COMMON_DB_MAPPING_VESSEL, list);
}
2 years ago
/// <summary>
/// 设置公共库 场站映射
/// </summary>
/// <returns></returns>
public Task SetAllMappingYard(List<MappingYard> list)
{
2 years ago
return _cache.SetAsync(CommonConst.CACHE_KEY_COMMON_DB_MAPPING_YARD, list);
2 years ago
}
2 years ago
/// <summary>
/// 设置公共库 起始港映射
/// </summary>
/// <returns></returns>
public Task SetAllMappingPortLoad(List<MappingPortLoad> list)
{
return _cache.SetAsync(CommonConst.CACHE_KEY_COMMON_DB_MAPPING_PORTLOAD, list);
}
2 years ago
/// <summary>
/// 获取公共库 起始港映射
/// </summary>
/// <returns></returns>
public Task<List<MappingPortLoad>> GetAllMappingPortLoad()
{
return _cache.GetAsync<List<MappingPortLoad>>(CommonConst.CACHE_KEY_COMMON_DB_MAPPING_PORTLOAD);
}
2 years ago
/// <summary>
/// 获取公共库 目的港映射
/// </summary>
/// <returns></returns>
public Task<List<MappingPort>> GetAllMappingPort()
{
return _cache.GetAsync<List<MappingPort>>(CommonConst.CACHE_KEY_COMMON_DB_MAPPING_PORT);
}
/// <summary>
/// 设置公共库 目的港映射
/// </summary>
/// <returns></returns>
public Task SetAllMappingPort(List<MappingPort> list)
{
return _cache.SetAsync(CommonConst.CACHE_KEY_COMMON_DB_MAPPING_PORT, list);
}
/// <summary>
/// 设置公共库 包装映射
/// </summary>
/// <returns></returns>
public Task SetAllMappingPackage(List<MappingPackage> list)
{
return _cache.SetAsync(CommonConst.CACHE_KEY_COMMON_DB_MAPPING_PACKAGE, list);
}
/// <summary>
/// 获取公共库 包装映射
/// </summary>
/// <returns></returns>
public Task<List<MappingPackage>> GetAllMappingPackage()
{
return _cache.GetAsync<List<MappingPackage>>(CommonConst.CACHE_KEY_COMMON_DB_MAPPING_PACKAGE);
}
/// <summary>
/// 获取公共库 运输条款映射
/// </summary>
/// <returns></returns>
public Task<List<MappingService>> GetAllMappingService()
{
return _cache.GetAsync<List<MappingService>>(CommonConst.CACHE_KEY_COMMON_DB_MAPPING_SERVICE);
2 years ago
}
/// <summary>
/// 设置公共库 运输条款映射
/// </summary>
/// <returns></returns>
2 years ago
public Task SetAllMappingService(List<MappingService> list)
{
return _cache.SetAsync(CommonConst.CACHE_KEY_COMMON_DB_MAPPING_SERVICE, list);
}
2 years ago
/// <summary>
/// 获取公共库 签单方式
/// </summary>
/// <returns></returns>
public Task<List<CodeIssueType>> GetAllCodeIssueType()
{
return _cache.GetAsync<List<CodeIssueType>>(CommonConst.CACHE_KEY_COMMON_DB_MAPPING_CODEISSUETYPE);
}
/// <summary>
/// 设置公共库 签单方式
/// </summary>
/// <returns></returns>
public Task SetAllCodeIssueType(List<CodeIssueType> list)
{
return _cache.SetAsync(CommonConst.CACHE_KEY_COMMON_DB_MAPPING_CODEISSUETYPE, list);
}
#endregion
#region DJY
/// <summary>
/// 获取租户参数
/// </summary>
/// <returns></returns>
public Task<List<DjyTenantParamValue>> GetAllTenantParam()
{
return _cache.GetAsync<List<DjyTenantParamValue>>(CommonConst.CACHE_KEY_COMMON_DB_TENANT_PARAM_VALUE);
}
/// <summary>
/// 设置租户参数
/// </summary>
/// <returns></returns>
public Task SetAllTenantParam(List<DjyTenantParamValue> list)
{
2 years ago
return _cache.SetAsync(CommonConst.CACHE_KEY_COMMON_DB_TENANT_PARAM_VALUE, list);
}
/// <summary>
/// 获取字典缓存
/// </summary>
/// <returns></returns>
public Task<List<DictDataDto>> GetAllDictData()
{
return _cache.GetAsync<List<DictDataDto>>(CommonConst.CACHE_KEY_COMMON_DB_DICT_DATA);
}
/// <summary>
/// 设置字典参数
/// </summary>
/// <returns></returns>
2 years ago
2 years ago
public Task SetAllDictData(List<DictDataDto> list)
{
return _cache.SetAsync(CommonConst.CACHE_KEY_COMMON_DB_DICT_DATA, list);
}
2 years ago
/// <summary>
/// 获取EDI参数
/// </summary>
/// <returns></returns>
public Task<List<DjyEdiSetting>> GetAllEdiSetting()
{
return _cache.GetAsync<List<DjyEdiSetting>>(CommonConst.CACHE_KEY_DJY_EDI_SETTING);
}
/// <summary>
/// 设置EDI参数
/// </summary>
/// <returns></returns>
public Task SetAllEdiSetting(List<DjyEdiSetting> list)
{
2 years ago
return _cache.SetAsync(CommonConst.CACHE_KEY_DJY_EDI_SETTING, list);
}
2 years ago
#endregion
2 years ago
}