From 2ca90a404fa1ab94eb6374f50c6ddd47a2b7f0e6 Mon Sep 17 00:00:00 2001 From: kazelee <1847801760@qq.com> Date: 星期四, 31 七月 2025 17:23:57 +0800 Subject: [PATCH] 删除有问题的TCP旧代码, 优化事务处理和ERP数据模型 --- App_Start/SwaggerControllerDescProvider.cs | 192 +++-------------------------------------------- 1 files changed, 13 insertions(+), 179 deletions(-) diff --git a/App_Start/SwaggerControllerDescProvider.cs b/App_Start/SwaggerControllerDescProvider.cs index 74fd3f2..7ec6e59 100644 --- a/App_Start/SwaggerControllerDescProvider.cs +++ b/App_Start/SwaggerControllerDescProvider.cs @@ -9,35 +9,28 @@ /// <summary> /// Swagger 鏄剧ず鎺у埗鍣ㄧ殑鎻忚堪 /// </summary> - public class SwaggerCacheProvider : ISwaggerProvider - { + public class SwaggerCacheProvider : ISwaggerProvider { private readonly ISwaggerProvider _swaggerProvider; private static ConcurrentDictionary<string, SwaggerDocument> _cache = new ConcurrentDictionary<string, SwaggerDocument>(); private readonly string _xmlPath; - /// <summary> - /// - /// </summary> + /// <summary></summary> /// <param name="swaggerProvider"></param> /// <param name="xmlpath">xml鏂囨。璺緞</param> - public SwaggerCacheProvider(ISwaggerProvider swaggerProvider, string xmlpath) - { + public SwaggerCacheProvider(ISwaggerProvider swaggerProvider, string xmlpath) { _swaggerProvider = swaggerProvider; _xmlPath = xmlpath; } - public SwaggerDocument GetSwagger(string rootUrl, string apiVersion) - { + public SwaggerDocument GetSwagger(string rootUrl, string apiVersion) { var cacheKey = string.Format("{0}_{1}", rootUrl, apiVersion); // 鍙鍙栦竴娆�- if (!_cache.TryGetValue(cacheKey, out SwaggerDocument srcDoc)) - { + if (!_cache.TryGetValue(cacheKey, out SwaggerDocument srcDoc)) { srcDoc = _swaggerProvider.GetSwagger(rootUrl, apiVersion); - srcDoc.vendorExtensions = new Dictionary<string, object> - { - { "ControllerDesc", GetControllerDesc() } - }; + srcDoc.vendorExtensions = new Dictionary<string, object> { + { "ControllerDesc", GetControllerDesc() } + }; _cache.TryAdd(cacheKey, srcDoc); } return srcDoc; @@ -47,21 +40,17 @@ /// 浠嶢PI鏂囨。涓鍙栨帶鍒跺櫒鎻忚堪 /// </summary> /// <returns>鎵�湁鎺у埗鍣ㄦ弿杩�/returns> - public ConcurrentDictionary<string, string> GetControllerDesc() - { + public ConcurrentDictionary<string, string> GetControllerDesc() { ConcurrentDictionary<string, string> controllerDescDict = new ConcurrentDictionary<string, string>(); - if (File.Exists(_xmlPath)) - { + if (File.Exists(_xmlPath)) { XmlDocument xmldoc = new XmlDocument(); xmldoc.Load(_xmlPath); string[] arrPath; int cCount = "Controller".Length; - foreach (XmlNode node in xmldoc.SelectNodes("//member")) - { + foreach (XmlNode node in xmldoc.SelectNodes("//member")) { string type = node.Attributes["name"].Value; - if (type.StartsWith("T:")) - { + if (type.StartsWith("T:")) { arrPath = type.Split('.'); string controllerName = arrPath[arrPath.Length - 1]; if (controllerName.EndsWith("Controller")) // 鎺у埗鍣�@@ -69,8 +58,7 @@ // 鑾峰彇鎺у埗鍣ㄦ敞閲� XmlNode summaryNode = node.SelectSingleNode("summary"); string key = controllerName.Remove(controllerName.Length - cCount, cCount); - if (summaryNode != null && !string.IsNullOrEmpty(summaryNode.InnerText) && !controllerDescDict.ContainsKey(key)) - { + if (summaryNode != null && !string.IsNullOrEmpty(summaryNode.InnerText) && !controllerDescDict.ContainsKey(key)) { controllerDescDict.TryAdd(key, summaryNode.InnerText.Trim()); } } @@ -78,160 +66,6 @@ } } return controllerDescDict; - } - } - - /// <summary> - /// 澧炲己鐗圫wagger鎻愪緵绋嬪簭锛屾敮鎸佹樉绀烘帶鍒跺櫒鍜屾ā鍨嬬殑瀹屾暣鏂囨。娉ㄩ噴 - /// </summary> - public class EnhancedSwaggerCacheProvider : ISwaggerProvider { - private readonly ISwaggerProvider _swaggerProvider; - private static readonly ConcurrentDictionary<string, SwaggerDocument> _cache = new ConcurrentDictionary<string, SwaggerDocument>(); - private readonly string _xmlPath; - - public EnhancedSwaggerCacheProvider(ISwaggerProvider swaggerProvider, string xmlpath) { - _swaggerProvider = swaggerProvider; - _xmlPath = xmlpath; - } - - public SwaggerDocument GetSwagger(string rootUrl, string apiVersion) { - var cacheKey = $"{rootUrl}_{apiVersion}"; - - return _cache.GetOrAdd(cacheKey, _ => - { - var srcDoc = _swaggerProvider.GetSwagger(rootUrl, apiVersion); - - // 娣诲姞鎺у埗鍣ㄦ弿杩�- var (controllerDesc, modelDesc) = GetXmlComments(); - - srcDoc.vendorExtensions = new Dictionary<string, object> - { - { "ControllerDesc", controllerDesc }, - { "ModelDesc", modelDesc } - }; - - // 涓烘ā鍨嬫坊鍔犳弿杩�- EnhanceModelDescriptions(srcDoc, modelDesc); - - return srcDoc; - }); - } - - /// <summary> - /// 浠嶺ML鏂囨。涓彁鍙栨帶鍒跺櫒鍜屾ā鍨嬫弿杩�- /// </summary> - private (ConcurrentDictionary<string, string> controllerDesc, - ConcurrentDictionary<string, string> modelDesc) GetXmlComments() { - var controllerDesc = new ConcurrentDictionary<string, string>(); - var modelDesc = new ConcurrentDictionary<string, string>(); - - if (!File.Exists(_xmlPath)) return (controllerDesc, modelDesc); - - var xmldoc = new XmlDocument(); - xmldoc.Load(_xmlPath); - - foreach (XmlNode node in xmldoc.SelectNodes("//member")) { - var type = node.Attributes?["name"]?.Value; - if (string.IsNullOrEmpty(type)) continue; - - if (type.StartsWith("T:")) { - var arrPath = type.Split('.'); - var typeName = arrPath[arrPath.Length - 1]; // 鑾峰彇鏈�悗涓�儴鍒�- - // 澶勭悊鎺у埗鍣�- if (typeName.EndsWith("Controller")) { - var summaryNode = node.SelectSingleNode("summary"); - if (summaryNode != null && !string.IsNullOrWhiteSpace(summaryNode.InnerText)) { - //var key = typeName[..^"Controller".Length]; - - string key = typeName; - const string controllerSuffix = "Controller"; - if (typeName.EndsWith(controllerSuffix)) { - key = typeName.Substring(0, typeName.Length - controllerSuffix.Length); - } - - controllerDesc.TryAdd(key, summaryNode.InnerText.Trim()); - } - } - // 澶勭悊妯″瀷绫�- else if (IsModelType(node)) { - var summaryNode = node.SelectSingleNode("summary"); - if (summaryNode != null && !string.IsNullOrWhiteSpace(summaryNode.InnerText)) { - modelDesc.TryAdd(typeName, summaryNode.InnerText.Trim()); - } - - // 澶勭悊妯″瀷灞炴� - EnhancePropertyDescriptions(node, modelDesc); - } - } - - } - - return (controllerDesc, modelDesc); - } - - /// <summary> - /// 鍒ゆ柇鏄惁涓烘ā鍨嬬被鍨�- /// </summary> - private bool IsModelType(XmlNode node) { - // 杩欓噷鍙互鏍规嵁瀹為檯闇�眰璋冩暣鍒ゆ柇閫昏緫 - // 渚嬪锛氭帓闄ontroller銆佹帓闄ょ壒瀹氬懡鍚嶇┖闂寸瓑 - var type = node.Attributes?["name"]?.Value ?? ""; - return type.StartsWith("T:") && - !type.EndsWith("Controller") && - !type.Contains(".Controllers.") && - !type.Contains(".Infrastructure."); - } - - /// <summary> - /// 澧炲己妯″瀷灞炴�鐨勬弿杩�- /// </summary> - private void EnhancePropertyDescriptions(XmlNode typeNode, ConcurrentDictionary<string, string> modelDesc) { - var typeName = typeNode.Attributes?["name"]?.Value?.Split('.')?.LastOrDefault()?.Substring(2); - if (string.IsNullOrEmpty(typeName)) return; - - foreach (XmlNode propNode in typeNode.SelectNodes("field|property")) { - var propName = propNode.Attributes?["name"]?.Value; - if (string.IsNullOrEmpty(propName)) continue; - - var summaryNode = propNode.SelectSingleNode("summary"); - var exampleNode = propNode.SelectSingleNode("example"); - - if (summaryNode != null && !string.IsNullOrWhiteSpace(summaryNode.InnerText)) { - var fullPropKey = $"{typeName}.{propName}"; - var description = summaryNode.InnerText.Trim(); - - if (exampleNode != null && !string.IsNullOrWhiteSpace(exampleNode.InnerText)) { - description += $"\n\n绀轰緥: {exampleNode.InnerText.Trim()}"; - } - - modelDesc.TryAdd(fullPropKey, description); - } - } - } - - /// <summary> - /// 澧炲己Swagger鏂囨。涓殑妯″瀷鎻忚堪 - /// </summary> - private void EnhanceModelDescriptions(SwaggerDocument swaggerDoc, ConcurrentDictionary<string, string> modelDesc) { - if (swaggerDoc.definitions == null) return; - - foreach (var definition in swaggerDoc.definitions) { - // 澶勭悊妯″瀷绫绘湰韬弿杩�- if (modelDesc.TryGetValue(definition.Key, out var classDesc)) { - definition.Value.description = classDesc; - } - - // 澶勭悊妯″瀷灞炴�鎻忚堪 - if (definition.Value.properties != null) { - foreach (var property in definition.Value.properties) { - var fullPropKey = $"{definition.Key}.{property.Key}"; - if (modelDesc.TryGetValue(fullPropKey, out var propDesc)) { - property.Value.description = propDesc; - } - } - } - } } } } -- Gitblit v1.9.1