star7th 7 年之前
父節點
當前提交
d06d4a4f6a

+ 2 - 6
server/Application/Api/Controller/FromCommentsController.class.php

@@ -43,9 +43,8 @@ class FromCommentsController extends BaseController {
         $page_title = $array['title'];
         $page_content = $page_content;
         $cat_name = $array['cat_name'];
-        $cat_name_sub = $array['cat_name_sub'];
         $s_number = $array['s_number'] ? $array['s_number'] : 99;
-        $page_id = D("Page")->update_by_content($item_id,$page_title,$page_content,$cat_name,$cat_name_sub,$s_number);
+        $page_id = D("Page")->update_by_content($item_id,$page_title,$page_content,$cat_name,$s_number);
         if ($page_id) {
             $ret = D("Page")->where(" page_id = '$page_id' ")->find();
             return $ret;
@@ -69,10 +68,7 @@ class FromCommentsController extends BaseController {
         $array['url'] = $this->parse_one_line("url" , $content);
 
         //解析目录
-        $catalog = $this->parse_one_line("catalog" , $content);
-        $catalog_array = explode('/', $catalog);
-        $array['cat_name'] = $catalog_array[0] ;
-        $array['cat_name_sub'] = !empty($catalog_array[1])? $catalog_array[1] : '';
+        $array['cat_name']= $this->parse_one_line("catalog" , $content);
 
         //解析返回内容
         $return = $this->parse_one_line("return" , $content);

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

@@ -7,7 +7,7 @@ class OpenController extends BaseController {
     public function updateItem(){
         $api_key = I("api_key");
         $api_token = I("api_token");
-        $cat_name = I("cat_name");
+        $cat_name = I("cat_name")?I("cat_name"):'';
         $cat_name_sub = I("cat_name_sub");
         $page_title = I("page_title");
         $page_content = I("page_content");
@@ -20,7 +20,12 @@ class OpenController extends BaseController {
             return false;
         }
 
-        $page_id = D("Page")->update_by_content($item_id,$page_title,$page_content,$cat_name,$cat_name_sub,$s_number);
+        //兼容之前的cat_name_sub参数
+        if ($cat_name_sub) {
+            $cat_name = $cat_name .'/'.$cat_name_sub ;
+        }
+
+        $page_id = D("Page")->update_by_content($item_id,$page_title,$page_content,$cat_name,$s_number);
 
         if ($page_id) {
             $ret = D("Page")->where(" page_id = '$page_id' ")->find();
@@ -40,7 +45,6 @@ class OpenController extends BaseController {
         $cat_name = I("cat_name") ? I("cat_name") : '';
         header( 'Content-Type:text/html;charset=utf-8 ');
         $cat_name = str_replace(PHP_EOL, '', $cat_name);
-        
         $item_id = D("ItemToken")->check($api_key , $api_token);
         if (!$item_id) {
             //没验证通过
@@ -50,11 +54,10 @@ class OpenController extends BaseController {
 
         $tables = $this->_analyze_db_structure_to_array($table_info ,$table_detail);
         if (!empty($tables)) {
-            //D("Item")->empty_content($item_id); //清空内容
             foreach ($tables as $key => $value) {
                 $page_title = $value['table_name'] ;
                 $page_content = $value['markdown'] ;
-                $result = D("Page")->update_by_content($item_id,$page_title,$page_content,$cat_name);
+                $result = D("Page")->update_by_content($item_id,$page_title,$page_content,$cat_name,$s_number);
             }
         }
 
@@ -63,6 +66,8 @@ class OpenController extends BaseController {
         }else{
             echo "失败\n";
         }
+
+        //$this->_record_log();
         
     }
 

+ 39 - 1
server/Application/Api/Model/PageModel.class.php

@@ -7,12 +7,29 @@ use Api\Model\BaseModel;
  */
 class PageModel extends BaseModel {
 
+    protected $cat_name_id = array();
+
     //根据内容更新页面
-    public function update_by_content($item_id,$page_title,$page_content,$cat_name='',$cat_name_sub='',$s_number = 99){
+    //其中cat_name参数特别说明下,传递各格式如 '二级目录/三级目录/四级目录'
+    public function update_by_content($item_id,$page_title,$page_content,$cat_name='',$s_number = 99){
         $item_id = intval($item_id);
         if (!$item_id) {
           return false;
         }
+
+        if ($this->cat_name_id && isset($this->cat_name_id[$cat_name])) {
+          $cat_id = $this->cat_name_id[$cat_name] ;
+          $cat_name = '' ; //如果已经有缓存了则设置为空
+        }else{
+          $cat_id = 0 ;
+        }
+
+        $catalog_array = explode('/', $cat_name);
+        $cat_name = $catalog_array[0] ;
+        $cat_name_sub = !empty($catalog_array[1])? $catalog_array[1] : '';
+        $cat_name_sub_sub = !empty($catalog_array[2])? $catalog_array[2] : '';
+
+
         //如果传送了二级目录
         if ($cat_name) {
             $cat_name_array = D("Catalog")->where(" item_id = '$item_id' and level = 2 and cat_name = '%s' ",array($cat_name))->find();
@@ -46,6 +63,22 @@ class PageModel extends BaseModel {
             }
         }
 
+        //如果传送了四级目录
+        if ($cat_name_sub_sub) {
+            $cat_name_sub_sub_array = D("Catalog")->where(" item_id = '$item_id' and level = 4 and cat_name = '%s' and parent_cat_id = '%s' ",array($cat_name_sub_sub,$cat_name_sub_array['cat_id']))->find();
+            //如果不存在则新建
+            if (!$cat_name_sub_sub_array) {
+                $add_data = array(
+                    "cat_name" => $cat_name_sub_sub, 
+                    "item_id" => $item_id, 
+                    "parent_cat_id" => $cat_name_sub_array['cat_id'], 
+                    "addtime" => time(),
+                    "level" => 4 
+                    );
+                D("Catalog")->add($add_data);
+                $cat_name_sub_sub_array = D("Catalog")->where(" item_id = '$item_id' and level = 4 and cat_name = '%s'  and parent_cat_id = '%s' ",array($cat_name_sub_sub,$cat_name_sub_array['cat_id']))->find();
+            }
+        }
         //目录id
         $cat_id = 0 ;
         if ($cat_name_array && $cat_name_array['cat_id'] > 0 ) {
@@ -55,7 +88,12 @@ class PageModel extends BaseModel {
         if ($cat_name_sub_array && $cat_name_sub_array['cat_id'] > 0 ) {
             $cat_id = $cat_name_sub_array['cat_id'] ;
         }
+        if ($cat_name_sub_sub_array && $cat_name_sub_sub_array['cat_id'] > 0 ) {
+            $cat_id = $cat_name_sub_sub_array['cat_id'] ;
+        }
 
+        $this->cat_name_id[$cat_name] = $cat_id ;
+        
         if ($page_content) {
             $page_array = D("Page")->where(" item_id = '$item_id' and is_del = 0  and cat_id = '$cat_id'  and page_title ='%s' ",array($page_title))->find();
             //如果不存在则新建