Browse Source

ruanpi支持导出word

star7th 4 years ago
parent
commit
ad85e9f81a

+ 10 - 5
server/Application/Api/Controller/ExportController.class.php

@@ -66,7 +66,8 @@ class ExportController extends BaseController {
                     $data .= "<h1>{$value['page_title']}</h1>";
                 }
                 $data .= '<div style="margin-left:20px;">';
-                    $data .= htmlspecialchars_decode($Parsedown->text($value['page_content']));
+                $value['page_content'] = D("Export")->runapiToMd($value['page_content']);
+                $data .= htmlspecialchars_decode($Parsedown->text($value['page_content']));
                 $data .= '</div>';
                 $parent ++;
             }
@@ -81,7 +82,8 @@ class ExportController extends BaseController {
                         foreach ($value['pages'] as $page) {
                             $data .= "<h2>{$parent}.{$child}、{$page['page_title']}</h2>";
                             $data .= '<div style="margin-left:0px;">';
-                                $data .= htmlspecialchars_decode($Parsedown->text($page['page_content']));
+                            $page['page_content'] = D("Export")->runapiToMd($page['page_content']);
+                            $data .= htmlspecialchars_decode($Parsedown->text($page['page_content']));
                             $data .= '</div>';
                             $child ++;
                         }
@@ -96,7 +98,8 @@ class ExportController extends BaseController {
                                     foreach ($value3['pages'] as $page3) {
                                         $data .= "<h3>{$parent}.{$parent2}.{$child2}、{$page3['page_title']}</h3>";
                                         $data .= '<div style="margin-left:0px;">';
-                                            $data .= htmlspecialchars_decode($Parsedown->text($page3['page_content']));
+                                        $page3['page_content'] = D("Export")->runapiToMd($page3['page_content']);
+                                        $data .= htmlspecialchars_decode($Parsedown->text($page3['page_content']));
                                         $data .= '</div>';
                                         $child2 ++;
                                     }
@@ -112,7 +115,8 @@ class ExportController extends BaseController {
                                                 foreach ($value4['pages'] as $page4) {
                                                     $data .= "<h3>{$parent}.{$parent2}.{$parent3}.{$child3}、{$page4['page_title']}</h3>";
                                                     $data .= '<div style="margin-left:30px;">';
-                                                        $data .= htmlspecialchars_decode($Parsedown->text($page4['page_content']));
+                                                    $page4['page_content'] = D("Export")->runapiToMd($page4['page_content']);
+                                                    $data .= htmlspecialchars_decode($Parsedown->text($page4['page_content']));
                                                     $data .= '</div>';
                                                     $child3 ++;
                                                 }
@@ -127,7 +131,8 @@ class ExportController extends BaseController {
                                                             foreach ($value4['pages'] as $page5) {
                                                                 $data .= "<h3>{$parent}.{$parent2}.{$parent3}.{$parent4}.{$child4}、{$page5['page_title']}</h3>";
                                                                 $data .= '<div style="margin-left:30px;">';
-                                                                    $data .= htmlspecialchars_decode($Parsedown->text($page5['page_content']));
+                                                                $page5['page_content'] = D("Export")->runapiToMd($page5['page_content']);
+                                                                $data .= htmlspecialchars_decode($Parsedown->text($page5['page_content']));
                                                                 $data .= '</div>';
                                                                 $child3 ++;
                                                             }

+ 126 - 0
server/Application/Api/Model/ExportModel.class.php

@@ -0,0 +1,126 @@
+<?php
+namespace Api\Model;
+use Api\Model\BaseModel;
+/**
+ * 
+ * @author star7th      
+ */
+class ExportModel  {
+
+    Protected $autoCheckFields = false;  //一定要关闭字段缓存,不然会报找不到表的错误
+
+    //把runapi的格式内容转换为markdown格式。如果不是runapi格式,则会返回原数据
+    public function runapiToMd($content_json){
+        $content_json = htmlspecialchars_decode($content_json) ;
+        $content = json_decode($content_json , true) ;
+        if(!$content || !$content['info'] || !$content['info']['url'] ){
+            return $content_json ;
+        }
+        $new_content = "
+##### 简要描述
+
+ - ".($content['info']['description'] ? $content['info']['description'] :'无') ."
+
+##### 请求URL
+
+ - `{$content['info']['url']}`
+
+##### 请求方式
+
+ - {$content['info']['method']}
+";
+
+    if($content['request']['headers'] && $content['request']['headers'][0] && $content['request']['headers'][0]['name']){
+        $new_content .= " 
+##### Header 
+
+|header|必选|类型|说明|
+|:-----  |:-----|-----|
+";
+        foreach ($content['request']['headers'] as $key => $value) {
+            $value['require'] = $value['require'] > 0 ? "是" : "否" ;
+            $value['remark'] = $value['remark'] ? $value['remark'] : 无 ;
+            $new_content .= "|{$value['name']}|  {$value['require']} |  {$value['type']} |  {$value['remark']} | \n";
+        } 
+    }
+
+    $params = $content['request']['params'][$content['request']['params']['mode']];
+    if ($params && is_array($params) && $params[0] && $params[0]['name']){
+        $new_content .= " 
+##### 请求参数
+
+|参数名|必选|类型|说明|
+|:-----  |:-----|-----|
+";
+
+    foreach ($params as $key => $value) {
+        $value['require'] = $value['require'] > 0 ? "是" : "否" ;
+        $value['remark'] = $value['remark'] ? $value['remark'] : 无 ;
+        $new_content .= "|{$value['name']}|  {$value['require']} |  {$value['type']} |  {$value['remark']} | \n";
+    }
+    }
+    //如果参数类型为json
+    if($content['request']['params']['mode'] == 'json' && $params){
+        $new_content .= " 
+##### 请求参数示例  
+```
+{$params}
+
+``` 
+"; 
+    }
+        // json字段说明
+        $jsonDesc = $content['request']['params']['jsonDesc'] ;
+        if ($content['request']['params']['mode'] == 'json' && $jsonDesc && $jsonDesc[0] && $jsonDesc[0]['name']){
+            $new_content .= " 
+##### json字段说明
+
+|字段名|必选|类型|说明|
+|:-----  |:-----|-----|
+";
+    
+        foreach ($jsonDesc as $key => $value) {
+            $value['require'] = $value['require'] > 0 ? "是" : "否" ;
+            $value['remark'] = $value['remark'] ? $value['remark'] : 无 ;
+            $new_content .= "|{$value['name']}|  {$value['require']} |  {$value['type']} |  {$value['remark']} | \n";
+        }
+        }
+
+        //返回示例
+        if($content['response']['responseExample']){
+            $new_content .= " 
+##### 返回示例  
+```
+{$content['response']['responseExample']}
+
+``` 
+"; 
+        }
+
+        //返回示例说明
+        if($content['response']['responseParamsDesc'] && $content['response']['responseParamsDesc'][0] && $content['response']['responseParamsDesc'][0]['name']){
+            $new_content .= " 
+##### 返回参数说明 
+
+|参数名|类型|说明|
+|:-----  |:-----|-----|
+";
+            foreach ($content['response']['responseParamsDesc'] as $key => $value) {
+                $value['remark'] = $value['remark'] ? $value['remark'] : 无 ;
+                $new_content .= "|{$value['name']}| {$value['type']} |  {$value['remark']} | \n";
+            }
+        }
+
+        $new_content .= " 
+##### 备注
+
+ {$content['info']['remark']}
+";
+
+    
+
+        return $new_content ;
+
+    }
+
+}