using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.Json; using System; using System.IO; using System.Text.RegularExpressions; namespace Edu.Common { /// <summary> /// 全局配置 /// </summary> public class Config { /// <summary> /// 配置文件注入 /// </summary> public readonly static IConfiguration Configuration; static Config() { try { Configuration = new ConfigurationBuilder() .Add(new JsonConfigurationSource { Path = "appsettings.json", ReloadOnChange = true }) .Build(); } catch (Exception ex) { Common.Plugin.LogHelper.Write(ex, "Config"); } } /// <summary> /// 获取连接字符串 /// </summary> /// <param name="key"></param> /// <returns></returns> public static string GetConnectionString(string key) { try { return Configuration.GetConnectionString(key); } catch { return ""; } } /// <summary> /// 读取配置文件key的值 /// </summary> /// <param name="key"></param> /// <returns></returns> public static string ReadConfigKey(string key, string subKey = "") { string valueStr = ""; try { if (!string.IsNullOrWhiteSpace(subKey)) { valueStr = Configuration.GetSection(key)[subKey].ToString(); } else { valueStr = Configuration.GetSection(key).Value; } } catch { } return valueStr; } /// <summary> /// 异常日志保存路径 /// </summary> public static string LogPath { get { string logPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log/error"); return logPath.ToString(); } } /// <summary> /// 打印日志保存路径 /// </summary> public static string InofLogPath { get { string logPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log/info"); return logPath.ToString(); } } /// <summary> /// 接口请求日志保存路径 /// </summary> public static string RequestLogPath { get { string logPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log/request"); return logPath.ToString(); } } /// <summary> /// JWT加密秘钥 /// </summary> public static string JwtSecretKey { get { return ReadConfigKey("JwtSecretKey"); } } /// <summary> /// 过期时间,单位为秒 /// </summary> public static int JwtExpirTime { get { Int32.TryParse(ReadConfigKey("JwtExpirTime"), out int JwtExpirTime); return JwtExpirTime; } } /// <summary> /// 阿里云oss域名 /// </summary> public static string GetOssFileUrl { get { return ReadConfigKey("ViewFileSiteUrl"); } } public static string ErpViewFileSiteUrl { get { return ReadConfigKey("ErpViewFileSiteUrl"); } } /// <summary> /// 获取Oss文件全路径 /// </summary> /// <param name="path">文件相对路径</param> /// <returns></returns> public static string GetFileUrl(string path) { if (string.IsNullOrWhiteSpace(path)) { return null; } else { string p = @"(http|https)://(?<domain>[^(:|/]*)"; Regex reg = new Regex(p, RegexOptions.IgnoreCase); string value = reg.Match(path).Value; if (!string.IsNullOrEmpty(value)) { return path; } else { return GetOssFileUrl + path; } } } /// <summary> /// 获取erp站点图片 /// </summary> /// <param name="path"></param> /// <returns></returns> public static string GetErpFileUrl(string path) { if (string.IsNullOrWhiteSpace(path)) { return null; } else { string p = @"(http|https)://(?<domain>[^(:|/]*)"; Regex reg = new Regex(p, RegexOptions.IgnoreCase); string value = reg.Match(path).Value; if (!string.IsNullOrEmpty(value)) { return path; } else { return ErpViewFileSiteUrl + path; } } } /// <summary> /// 获取文件相对路径 /// </summary> public static string GetFilePath(string path) { if (!string.IsNullOrWhiteSpace(path)) { string p = @"(http|https)://(?<domain>[^(:|/]*)"; Regex reg = new Regex(p, RegexOptions.IgnoreCase); string value = reg.Match(path).Value; if (!string.IsNullOrEmpty(value)) { Uri url = new Uri(path); return url.AbsolutePath; } else { return path; } } else { return path; } } /// <summary> /// 上传站点地址 /// </summary> public static string UploadSiteUrl { get { return ReadConfigKey("UploadSiteUrl"); } } /// <summary> /// 获取wkhtmltopdf路径 /// </summary> public static string wkhtmltopdfConfig { get { return ReadConfigKey("WkHtmlToPdfPath"); } } /// <summary> /// 上传文件预览站点 /// </summary> public static string ViewFileSiteUrl { get { return ReadConfigKey("ViewFileSiteUrl"); } } /// <summary> /// 获取虚拟目录 /// </summary> public static string VirtualDirectory { get { return ReadConfigKey("VirtualDirectory"); } } /// <summary> /// Mongo连接地址 /// </summary> public static string Mongo { get { return ReadConfigKey("Mongo"); } } /// <summary> /// 获取MongoDBName /// </summary> public static string MongoDBName { get { return ReadConfigKey("MongoDBName"); } } /// <summary> /// 默认密码 /// </summary> public static string DefaultPwd { get { return "123456"; } } /// <summary> /// 是否线上 /// </summary> public static bool IsOnline { get { bool.TryParse(ReadConfigKey("IsOnline"), out bool _isOnline); return _isOnline; } } /// <summary> /// 是否发送短信 /// </summary> public static int IsSendMsg { get { int.TryParse(ReadConfigKey("IsSendMsg"), out int _isSendMsg); return _isSendMsg; } } /// <summary> /// 导出文件保存路径 /// </summary> public static string FileExportPath { get { string fileExportPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "/upfile/ExportFile"); if (!Directory.Exists(fileExportPath)) { Directory.CreateDirectory(fileExportPath); } return fileExportPath; } } /// <summary> /// 退课流程编号 /// </summary> public static int BackClassFlowId { get { int.TryParse(ReadConfigKey("BackClassFlowId"), out int BackClassFlowId); return BackClassFlowId; } } /// <summary> /// okr关注事项配置 /// </summary> public static string OKRMatterValue { get { return ReadConfigKey("OKRMatterValue"); } } /// <summary> /// 分区校长岗位编号 /// </summary> public static int SchoolPostId { get { int.TryParse(ReadConfigKey("SchoolPostId"), out int SchoolPostId); return SchoolPostId; } } /// <summary> /// 教务长岗位编号 /// </summary> public static int JiaoWuZhang { get { int.TryParse(ReadConfigKey("JiaoWuZhang"), out int JiaoWuZhang); return JiaoWuZhang; } } /// <summary> /// 数字选择题前缀符号 /// </summary> public static string NumberQuestionChar { get { return "@"; } } /// <summary> /// 留学就业部门主管审核编号 /// </summary> public static int StudyAbroadDirectorId { get { int.TryParse(ReadConfigKey("StudyAbroadDirectorId"), out int studyAbroadDirectorId); return studyAbroadDirectorId; } } /// <summary> /// 留学就业部门负责人审核编号 /// </summary> public static int StudyAbroadManagerId { get { int.TryParse(ReadConfigKey("StudyAbroadManagerId"), out int studyAbroadManagerId); return studyAbroadManagerId; } } } }