using System.Linq; using System.Threading.Tasks; using System.Web.Mvc; using Abp.Configuration.Startup; using Abp.Localization.Dictionaries; using Abp.Runtime.Caching; using Abp.Web.Models; using Abp.Web.Mvc.Authorization; using WePlatform.Authorization; using WePlatform.Localization; using IwbZero; using IwbZero.Auditing; using IwbZero.ToolCommon.LogHelpers; namespace WePlatform.Controllers { [AbpMvcAuthorize, AuditLog("系统配置")] public class SettingController : IwbControllerBase { private ILocalizationConfiguration Configuration { get; } //private IAttachFileManager AttachFileManager { get; } public SettingController(ILocalizationConfiguration configuration, ICacheManager cacheManager) : base(cacheManager) { Configuration = configuration; //AttachFileManager = NullAttachFileManager.Instance; } [AbpMvcAuthorize(PermissionNames.PagesUserSysSettingRefreshLang), AuditLog("刷新语言包")] public ActionResult LangRefresh() { foreach (var source in Configuration.Sources) { if (source.Name != IwbZeroConsts.LocalizationSourceName) { continue; } //Extending dictionaries if (source is IDictionaryBasedLocalizationSource dictionaryBasedSource) { var extensions = Configuration.Sources.Extensions.Where(e => e.SourceName == source.Name).ToList(); foreach (var extension in extensions) { if (extension.DictionaryProvider is IwbXmlFileLocalizationDictionaryProvider provider) { provider.Refresh(dictionaryBasedSource.Name); foreach (var extensionDictionary in provider.Dictionaries.Values) { dictionaryBasedSource.Extend(extensionDictionary); } } } } this.LogDebug("Refreshed localization source: " + source.Name); } return Json(new AjaxResponse(true), JsonRequestBehavior.AllowGet); } [AbpMvcAuthorize(PermissionNames.PagesUserSysSettingRefreshCache), AuditLog("刷新缓存")] public async Task CacheRefresh(string id) { if (string.IsNullOrEmpty(id)) { var caches = CacheManager.GetAllCaches(); foreach (var cache in caches) { await cache.ClearAsync(); } } else { var cache = CacheManager.GetCache(id); if (cache != null) { await cache.ClearAsync(); } } return Json(new AjaxResponse(true), JsonRequestBehavior.AllowGet); } } }