SysConfig.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using CZFW.Core;
  2. using CZFW.Framework.Tools;
  3. using CZFW.MDB.Model;
  4. using CZFW.MDB.Util;
  5. using Microsoft.Extensions.Caching.Memory;
  6. using MongoDB.Bson;
  7. using Newtonsoft.Json.Linq;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Text;
  11. namespace CZFW.MDB
  12. {
  13. public static class SysConfig
  14. {
  15. public static dynamic SiteConfig(string siteName, string tplName, string lang=null)
  16. {
  17. if (string.IsNullOrWhiteSpace(lang)) {
  18. lang = DefaultLanguage();
  19. }
  20. if(!CacheHelper.TryRead(Constants.CONFIG_CACHE_PREFIX+siteName+lang, out JObject data))
  21. {
  22. IMongoRepository mongoRepository = new MongoRepository($"{tplName}_{Constants.SYSCONFIG_TABLE_NAME}");
  23. var bsonElement = mongoRepository.GetOne($"{{'{Constants.SITE_NAME_FIELD}':'{siteName}','{Constants.LANG_FIELD}':'{lang}'}}");
  24. var json = bsonElement.CZToJson();
  25. data = JObject.Parse(json);
  26. CacheHelper.WriteCache(siteName, Constants.CONFIG_CACHE_PREFIX+ siteName+lang, data, TimeSpan.FromMinutes(ConfigHelper.GetValue<int>("SiteCacheExpireMinutes")));
  27. }
  28. return data;
  29. }
  30. public static SimpleSysConfigModel GetSimpleProjectInfo(string siteName, string tplName,string lang=null)
  31. {
  32. var obj = SiteConfig(siteName, tplName, lang) as JObject;
  33. var res = new SimpleSysConfigModel
  34. {
  35. ProjectName = obj[Constants.SYS_PROJECT_NAME].ToString(), //GetValue(Constants.SYS_PROJECT_NAME).AsString,
  36. SiteUrl = obj[Constants.SYS_URL].ToString(),
  37. Logo = obj[Constants.SYS_LOGO].ToString()
  38. };
  39. return res;
  40. }
  41. public static string DefaultLanguage() {
  42. return ConfigHelper.GetValue("Multilanguage:Default");
  43. }
  44. }
  45. }