denny 3 жил өмнө
parent
commit
8d201d6415

+ 3 - 3
DocHtml/demoHtml.html

@@ -378,7 +378,7 @@
                         <td>{{item.key}}</td>
                         <td>{{item.value}}</td>
                         {{if item.field_type_value == 1 }}
-                        <td><a href="#{{item.field_type_target_id}}">{{item.field_type}}</a></td>
+                        <td><a target="_blank" href="/{{item.file_name}}#{{item.field_type_target_id}}">{{item.field_type}}</a></td>
                         {{else}}
                         <td>{{item.field_type}}</td>
                         {{/if}}
@@ -465,10 +465,10 @@
                     {{/if}}
                 </div>
                 {{/if}}
-                <h3 class="title" style="{{response.success.raw || response.success.parameter.length > 0 || response.error.raw || response.error.parameter.length > 0 ? 'display:block':'display:none'}}" >
+                <h3 class="title" style="{{response.success.error_result.length > 0 ? 'display:block':'display:none'}}" >
                     <a href="javascript:;" class="maodian"></a> 枚举信息<i class="fa fa-angle-down"></i>
                 </h3>
-                {{if response.success.raw || response.success.parameter.length > 0 || response.error.raw || response.error.parameter.length > 0}}
+                {{if response.success.parameter.length > 0 }}
                 <div class="markdown-response">
                     {{if response.success.raw || response.success.parameter.length > 0}}
                     <h4 class="title" id="jump"><a href="javascript:;" class="maodian"></a>字段描述1</h4>

+ 66 - 7
DocTools/CreateDocHtml.cs

@@ -10,13 +10,17 @@ namespace DocTools
     public class CreateDocHtml
     {
         private static Dictionary<string, string> PublicEnumDic = new Dictionary<string, string>();
-
+        private static string FileName = "demoHtml.html";
         /// <summary>
         /// 创建最基础json信息
         /// </summary>
         /// <returns></returns>
-        public ResultEntity CreateDocProjectString(string version = "")
+        public ResultEntity CreateDocProjectString(string version = "", string fileName = "")
         {
+            if (!string.IsNullOrEmpty(fileName))
+            {
+                FileName = fileName;
+            }
             var result = new ResultEntity()
             {
                 create_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
@@ -134,6 +138,10 @@ namespace DocTools
                 for (int i = 0; i < enumList.Count; i++)
                 {
                     var item = enumList[i];
+                    if (item.ParamName.Contains("WingInterfaceLibrary.Enum.RpcExceptionEnum."))
+                    {
+                        continue;
+                    }
                     var enumEntity = GetSpecialEnum(item.ParamName.Replace("T:", ""), enumFolderEntity.local_target_id, item.Remarks, i);
                     enumFolderEntity.children.Add(enumEntity);
                 }
@@ -398,8 +406,18 @@ namespace DocTools
                                     field_type = "Number",
                                     value = "1"
                                 }
-                            }
+                            },
+                            error_result = new List<ExceptionResultEntity>()
                         };
+                        //计算响应列表枚举
+                        if (methodEntity.ParaList?.Count > 0)
+                        {
+                            foreach (var item in methodEntity.ParaList)
+                            {
+                                var gere = GetExceptionResultEnum(item);
+                                successParameter.error_result.Add(gere);
+                            }
+                        }
                         var rawResultStr = "";
                         if (methodEntity.ResponseList?.Count > 0)
                         {
@@ -571,6 +589,7 @@ namespace DocTools
                         var generalTypeStr = CommonHelper.GetJsonDataTypeByString(responseItem.GenericityType);
                         var childObject = new ResponseParameterEntity()
                         {
+                            file_name = FileName,
                             description = responseItem.Desc,
                             is_checked = 0,
                             type = "Text",
@@ -583,9 +602,12 @@ namespace DocTools
                         //}
                         if (childTypeStr.Contains("Enum"))
                         {
-                            childObject.field_type_value = 1;
                             var key = "WingInterfaceLibrary.Enum." + childTypeStr;
-                            childObject.field_type_target_id = PublicEnumDic[key];
+                            if (PublicEnumDic.Keys.Contains(key))
+                            {
+                                childObject.field_type_value = 1;
+                                childObject.field_type_target_id = PublicEnumDic[key];
+                            }
                         }
                         if (childTypeStr == "Array" && generalTypeStr != "Object")
                         {
@@ -625,6 +647,7 @@ namespace DocTools
                         var generalTypeStr = CommonHelper.GetJsonDataTypeByString(responseItem.GenericityType);
                         var childObject = new ResponseParameterEntity()
                         {
+                            file_name = FileName,
                             description = responseItem.Desc,
                             is_checked = 0,
                             type = "Text",
@@ -637,9 +660,12 @@ namespace DocTools
                         //}
                         if (childTypeStr.Contains("Enum"))
                         {
-                            childObject.field_type_value = 1;
                             var key = "WingInterfaceLibrary.Enum." + childTypeStr;
-                            childObject.field_type_target_id = PublicEnumDic[key];
+                            if (PublicEnumDic.Keys.Contains(key))
+                            {
+                                childObject.field_type_value = 1;
+                                childObject.field_type_target_id = PublicEnumDic[key];
+                            }
                         }
                         if (childTypeStr == "Array" && generalTypeStr != "Object")
                         {
@@ -844,6 +870,39 @@ namespace DocTools
             return resultStr;
         }
 
+        public ExceptionResultEntity GetExceptionResultEnum(string enumNamespace)
+        {
+            var resultEntity = new ExceptionResultEntity();
+            List<MemberEntity> memberList = LoadData.GetInterfaceConfigToCache();
+            var enumInfo = memberList.Find(c => c.ParamName.Contains("T:WingInterfaceLibrary.Enum.RpcExceptionEnum." + enumNamespace) && !string.IsNullOrEmpty(c.Remarks));
+            if (enumInfo != null)
+            {
+                //获取错误枚举、上传文件类型枚举
+                var enumList = memberList.FindAll(c => c.ParamName.Contains(enumInfo.ParamName.Replace("T:", "")));
+                if (enumList?.Count > 0)
+                {
+                    foreach (var item in enumList)
+                    {
+                        if (item.ParamName.Equals(enumInfo.ParamName))
+                        {
+                            //title,name,和header
+                            resultEntity.title = item.Summary;
+                            resultEntity.name = enumNamespace;
+                            resultEntity.header = item.Remarks.Split('|').ToArray().Select(c => c.Trim()).ToList();
+                        }
+                        else
+                        {
+                            var ece = new ExceptionContentEntity();
+                            ece.content_data = item.Remarks.Split('|').ToArray().Select(c => c.Trim()).ToList();
+                            //content
+                            resultEntity.content.Add(ece);
+                        }
+                    }
+                }
+            }
+            return resultEntity;
+        }
+
         /// <summary>
         /// 加载指定枚举注释到文档中
         /// </summary>

+ 19 - 0
DocTools/Entity/Doc/ResponseEntity.cs

@@ -26,11 +26,30 @@ namespace DocTools.Entity.Doc
         //0表示默认,啥也不干,1-表示为enum类型
         public int field_type_value { get; set; } = 0;
         public string field_type_target_id { get; set; } = string.Empty;
+        public string file_name { get; set; } = string.Empty;
     }
 
     public class ResponseResultEntity
     { 
         public string raw { get; set; } = string.Empty;
         public List<ResponseParameterEntity> parameter { get; set; } = new List<ResponseParameterEntity>();
+
+        public List<ExceptionResultEntity> error_result { get; set; } = new List<ExceptionResultEntity>();
+    }
+
+    public class ExceptionResultEntity
+    {
+        public string title { get; set; } = string.Empty;
+
+        public string name { get; set; } = string.Empty;
+
+        public List<string> header { get; set; } = new List<string>();
+
+        public List<ExceptionContentEntity> content { get; set; } = new List<ExceptionContentEntity>();
+    }
+
+    public class ExceptionContentEntity
+    {
+        public List<string> content_data { get; set; } = new List<string>();
     }
 }

+ 1 - 0
DocTools/Entity/MemberEntity.cs

@@ -12,6 +12,7 @@ namespace DocTools.Entity
         public string Remarks { get; set; } = string.Empty;
         public string Code { get; set; } = "1";
         public string Example { get; set; } = "";
+        public string Para { get; set; } = "";
     }
 
     public class ParamEntity

+ 1 - 1
DocTools/Entity/MethodEntity.cs

@@ -15,7 +15,7 @@ namespace DocTools.Entity
         public string ParamTypeFullName { get; set; } = string.Empty;
         public string ParamText { get; set; } = string.Empty;
         public string SubmitType { get; set; } = "POST";
-        public string Example { get; set; } = string.Empty;
+        public List<string> ParaList { get; set; } = new List<string>();
 
         public List<ParamPropertyEntity> RequestList = new List<ParamPropertyEntity>();
 

+ 11 - 0
DocTools/LoadData.cs

@@ -74,6 +74,10 @@ namespace DocTools
                             {
                                 entity.Example = childNode.InnerText.Trim();
                             }
+                            else if (childNode.Name == "para")
+                            {
+                                entity.Para = childNode.InnerText.Trim();
+                            }
                         }
                     }
                     if (!string.IsNullOrEmpty(entity.ParamName))
@@ -167,6 +171,13 @@ namespace DocTools
                                             ParamText = methodItem.Param?.FirstOrDefault()?.ParamText,
                                             ParamTypeFullName = methodItem.ParamName.Split('(')[1].TrimEnd(')')
                                         };
+                                        if (!string.IsNullOrEmpty(methodItem.Para) && methodItem.Para.Split(',').Length > 0)
+                                        {
+                                            foreach (var paraItem in methodItem.Para.Split(','))
+                                            {
+                                                methodModel.ParaList.Add(paraItem);
+                                            }
+                                        }
                                         //封装请求参数实体
                                         var requestClassNamespace = "T:" + methodModel.ParamTypeFullName;
                                         var requestClassMemberInfo = memberList.Find(c => c.ParamName.Contains(requestClassNamespace));