star7th 7 éve
szülő
commit
34e89211a3

+ 2 - 2
server/Application/Api/Controller/AdminItemController.class.php

@@ -12,7 +12,7 @@ class AdminItemController extends BaseController {
         $page = I("page/d");
         $page = I("page/d");
         $count = I("count/d");
         $count = I("count/d");
         $username = I("username");
         $username = I("username");
-        $where = " 1 = 1 ";
+        $where = " is_del = 0 ";
         if ($item_name) {
         if ($item_name) {
             $item_name = \SQLite3::escapeString($item_name);
             $item_name = \SQLite3::escapeString($item_name);
            $where .= " and item_name like '%{$item_name}%' ";
            $where .= " and item_name like '%{$item_name}%' ";
@@ -54,7 +54,7 @@ class AdminItemController extends BaseController {
         $login_user = $this->checkLogin();
         $login_user = $this->checkLogin();
         $this->checkAdmin();
         $this->checkAdmin();
         $item_id = I("item_id/d");
         $item_id = I("item_id/d");
-        $return = D("Item")->delete_item($item_id);
+        $return = D("Item")->soft_delete_item($item_id);
         if (!$return) {
         if (!$return) {
             $this->sendError(10101);
             $this->sendError(10101);
         }else{
         }else{

+ 6 - 6
server/Application/Api/Controller/ExportController.class.php

@@ -19,13 +19,13 @@ class ExportController extends BaseController {
         $item = D("Item")->where("item_id = '$item_id' ")->find();
         $item = D("Item")->where("item_id = '$item_id' ")->find();
 
 
         //获取所有父目录id为0的页面
         //获取所有父目录id为0的页面
-        $pages = D("Page")->where("cat_id = '0' and item_id = '$item_id' ")->order(" `s_number` asc  ")->select();
+        $pages = D("Page")->where("cat_id = '0' and item_id = '$item_id' and is_del = 0")->order(" `s_number` asc  ")->select();
         //获取所有二级目录
         //获取所有二级目录
         $catalogs = D("Catalog")->where("item_id = '$item_id' and level = 2  ")->order(" `s_number` asc  ")->select();
         $catalogs = D("Catalog")->where("item_id = '$item_id' and level = 2  ")->order(" `s_number` asc  ")->select();
         if ($catalogs) {
         if ($catalogs) {
             foreach ($catalogs as $key => &$catalog) {
             foreach ($catalogs as $key => &$catalog) {
                 //该二级目录下的所有子页面
                 //该二级目录下的所有子页面
-                $temp = D("Page")->where("cat_id = '$catalog[cat_id]' ")->order(" `s_number` asc  ")->select();
+                $temp = D("Page")->where("cat_id = '$catalog[cat_id]' and is_del = 0")->order(" `s_number` asc  ")->select();
                 $catalog['pages'] = $temp ? $temp: array();
                 $catalog['pages'] = $temp ? $temp: array();
 
 
                 //该二级目录下的所有子目录
                 //该二级目录下的所有子目录
@@ -35,7 +35,7 @@ class ExportController extends BaseController {
                     //获取所有三级目录的子页面
                     //获取所有三级目录的子页面
                     foreach ($catalog['catalogs'] as $key3 => &$catalog3) {
                     foreach ($catalog['catalogs'] as $key3 => &$catalog3) {
                         //该二级目录下的所有子页面
                         //该二级目录下的所有子页面
-                        $temp = D("Page")->where("cat_id = '$catalog3[cat_id]' ")->order(" `s_number` asc  ")->select();
+                        $temp = D("Page")->where("cat_id = '$catalog3[cat_id]' and is_del = 0")->order(" `s_number` asc  ")->select();
                         $catalog3['pages'] = $temp ? $temp: array();
                         $catalog3['pages'] = $temp ? $temp: array();
                     }                        
                     }                        
                 }               
                 }               
@@ -113,7 +113,7 @@ class ExportController extends BaseController {
         $catalog = D("Catalog")->where("item_id = '$item_id' and cat_id = '$cat_id' and level =2 ")->order(" `s_number` asc  ")->find();
         $catalog = D("Catalog")->where("item_id = '$item_id' and cat_id = '$cat_id' and level =2 ")->order(" `s_number` asc  ")->find();
         if (!empty($catalog)) {
         if (!empty($catalog)) {
                 //该二级目录下的所有子页面
                 //该二级目录下的所有子页面
-                $temp = D("Page")->where("cat_id = '$catalog[cat_id]' ")->order(" `s_number` asc  ")->select();
+                $temp = D("Page")->where("cat_id = '$catalog[cat_id]' and is_del = 0")->order(" `s_number` asc  ")->select();
                 $catalog['pages'] = $temp ? $temp: array();
                 $catalog['pages'] = $temp ? $temp: array();
 
 
                 //该二级目录下的所有子目录
                 //该二级目录下的所有子目录
@@ -123,7 +123,7 @@ class ExportController extends BaseController {
                     //获取所有三级目录的子页面
                     //获取所有三级目录的子页面
                     foreach ($catalog['catalogs'] as $key3 => &$catalog3) {
                     foreach ($catalog['catalogs'] as $key3 => &$catalog3) {
                         //该二级目录下的所有子页面
                         //该二级目录下的所有子页面
-                        $temp = D("Page")->where("cat_id = '$catalog3[cat_id]' ")->order(" `s_number` asc  ")->select();
+                        $temp = D("Page")->where("cat_id = '$catalog3[cat_id]' and is_del = 0")->order(" `s_number` asc  ")->select();
                         $catalog3['pages'] = $temp ? $temp: array();
                         $catalog3['pages'] = $temp ? $temp: array();
                     }                        
                     }                        
                 } 
                 } 
@@ -132,7 +132,7 @@ class ExportController extends BaseController {
             $catalog = D("Catalog")->where("item_id = '$item_id' and cat_id = '$cat_id' and level =3 ")->order(" `s_number` asc  ")->find();
             $catalog = D("Catalog")->where("item_id = '$item_id' and cat_id = '$cat_id' and level =3 ")->order(" `s_number` asc  ")->find();
             if (!empty($catalog)) {
             if (!empty($catalog)) {
                     //该三级目录下的所有子页面
                     //该三级目录下的所有子页面
-                    $temp = D("Page")->where("cat_id = '$catalog[cat_id]' ")->order(" `s_number` asc  ")->select();
+                    $temp = D("Page")->where("cat_id = '$catalog[cat_id]' and is_del = 0")->order(" `s_number` asc  ")->select();
                     $catalog['pages'] = $temp ? $temp: array();
                     $catalog['pages'] = $temp ? $temp: array();
             }
             }
         }
         }

+ 15 - 13
server/Application/Api/Controller/ItemController.class.php

@@ -29,7 +29,7 @@ class ItemController extends BaseController {
         } 
         } 
 
 
         $item = D("Item")->where("item_id = '$item_id' ")->find();
         $item = D("Item")->where("item_id = '$item_id' ")->find();
-        if (!$item) {
+        if (!$item || $item['is_del'] == 1) {
             sleep(1);
             sleep(1);
             $this->sendError(10101,'项目不存在或者已删除');
             $this->sendError(10101,'项目不存在或者已删除');
             return false;
             return false;
@@ -63,13 +63,13 @@ class ItemController extends BaseController {
         
         
         }else{
         }else{
             //获取所有父目录id为0的页面
             //获取所有父目录id为0的页面
-            $pages = D("Page")->where("cat_id = '0' and item_id = '$item_id' ")->order(" `s_number` asc  ")->field("page_id,author_uid,cat_id,page_title,addtime")->select();
+            $pages = D("Page")->where("cat_id = '0' and item_id = '$item_id' and is_del = 0")->order(" `s_number` asc  ")->field("page_id,author_uid,cat_id,page_title,addtime")->select();
             //获取所有二级目录
             //获取所有二级目录
             $catalogs = D("Catalog")->where("item_id = '$item_id' and level = 2  ")->order(" `s_number` asc  ")->select();
             $catalogs = D("Catalog")->where("item_id = '$item_id' and level = 2  ")->order(" `s_number` asc  ")->select();
             if ($catalogs) {
             if ($catalogs) {
                 foreach ($catalogs as $key => &$catalog) {
                 foreach ($catalogs as $key => &$catalog) {
                     //该二级目录下的所有子页面
                     //该二级目录下的所有子页面
-                    $temp = D("Page")->where("cat_id = '$catalog[cat_id]' ")->order(" `s_number` asc  ")->field("page_id,author_uid,cat_id,page_title,addtime")->select();
+                    $temp = D("Page")->where("cat_id = '$catalog[cat_id]' and is_del = 0")->order(" `s_number` asc  ")->field("page_id,author_uid,cat_id,page_title,addtime")->select();
                     $catalog['pages'] = $temp ? $temp: array();
                     $catalog['pages'] = $temp ? $temp: array();
 
 
                     //该二级目录下的所有子目录
                     //该二级目录下的所有子目录
@@ -79,7 +79,7 @@ class ItemController extends BaseController {
                         //获取所有三级目录的子页面
                         //获取所有三级目录的子页面
                         foreach ($catalog['catalogs'] as $key3 => &$catalog3) {
                         foreach ($catalog['catalogs'] as $key3 => &$catalog3) {
                             //该二级目录下的所有子页面
                             //该二级目录下的所有子页面
-                            $temp = D("Page")->where("cat_id = '$catalog3[cat_id]' ")->order(" `s_number` asc  ")->field("page_id,author_uid,cat_id,page_title,addtime")->select();
+                            $temp = D("Page")->where("cat_id = '$catalog3[cat_id]' and is_del = 0")->order(" `s_number` asc  ")->field("page_id,author_uid,cat_id,page_title,addtime")->select();
                             $catalog3['pages'] = $temp ? $temp: array();
                             $catalog3['pages'] = $temp ? $temp: array();
                         }                        
                         }                        
                     }               
                     }               
@@ -181,7 +181,15 @@ class ItemController extends BaseController {
     //我的项目列表
     //我的项目列表
     public function myList(){
     public function myList(){
         $login_user = $this->checkLogin();        
         $login_user = $this->checkLogin();        
-        $items  = D("Item")->field("item_id,item_name,last_update_time,item_description")->where("uid = '$login_user[uid]' or item_id in ( select item_id from ".C('DB_PREFIX')."item_member where uid = '$login_user[uid]' ) ")->order("item_id asc")->select();
+        $items  = D("Item")->field("item_id,item_name,last_update_time,item_description,is_del")->where("uid = '$login_user[uid]' or item_id in ( select item_id from ".C('DB_PREFIX')."item_member where uid = '$login_user[uid]' ) ")->order("item_id asc")->select();
+        
+        foreach ($items as $key => $value) {
+            //如果项目已标识为删除
+            if ($value['is_del'] == 1) {
+                unset($items[$key]);
+            }
+        }
+
         //读取需要置顶的项目
         //读取需要置顶的项目
         $top_items = D("ItemTop")->where("uid = '$login_user[uid]'")->select();
         $top_items = D("ItemTop")->where("uid = '$login_user[uid]'")->select();
         if ($top_items) {
         if ($top_items) {
@@ -198,11 +206,9 @@ class ItemController extends BaseController {
                     array_unshift($items,$tmp) ;
                     array_unshift($items,$tmp) ;
                 }
                 }
             }
             }
-
-            $items = array_values($items);
         }
         }
 
 
-        $items = $items ? $items : array();
+        $items = $items ? array_values($items) : array();
         $this->sendResult($items);
         $this->sendResult($items);
 
 
     }
     }
@@ -323,11 +329,7 @@ class ItemController extends BaseController {
         }
         }
 
 
 
 
-        D("Page")->where("item_id = '$item_id' ")->delete();
-        D("Catalog")->where("item_id = '$item_id' ")->delete();
-        D("PageHistory")->where("item_id = '$item_id' ")->delete();
-        D("ItemMember")->where("item_id = '$item_id' ")->delete();
-        $return = D("Item")->where("item_id = '$item_id' ")->delete();
+        $return = D("Item")->soft_delete_item($item_id);
 
 
         if (!$return) {
         if (!$return) {
             $this->sendError(10101);
             $this->sendError(10101);

+ 2 - 2
server/Application/Api/Controller/PageController.class.php

@@ -7,7 +7,7 @@ class PageController extends BaseController {
     public function info(){
     public function info(){
         $page_id = I("page_id/d");
         $page_id = I("page_id/d");
         $page = D("Page")->where(" page_id = '$page_id' ")->find();
         $page = D("Page")->where(" page_id = '$page_id' ")->find();
-        if (!$page) {
+        if (!$page  || $page['is_del'] == 1) {
             sleep(1);
             sleep(1);
             $this->sendError(10101);
             $this->sendError(10101);
             return false;
             return false;
@@ -37,7 +37,7 @@ class PageController extends BaseController {
 
 
         if ($page) {
         if ($page) {
             
             
-            $ret = D("Page")->where(" page_id = '$page_id' ")->delete();
+            $ret = D("Page")->softDeletePage($page_id);
             //更新项目时间
             //更新项目时间
             D("Item")->where(" item_id = '$page[item_id]' ")->save(array("last_update_time"=>time()));
             D("Item")->where(" item_id = '$page[item_id]' ")->save(array("last_update_time"=>time()));
 
 

+ 44 - 0
server/Application/Api/Controller/ScriptCronController.class.php

@@ -0,0 +1,44 @@
+<?php
+namespace Api\Controller;
+use Think\Controller;
+/*
+    由网站前台脚本触发的周期任务
+ */
+class ScriptCronController extends BaseController {
+
+
+    public function run(){
+        set_time_limit(100);
+        ini_set('memory_limit','800M');
+        ignore_user_abort(true);
+
+        //定期清理已删除项目和已删除页面
+        $this->clean_deleted_data();
+
+    }
+
+
+    //定期清理已删除项目和已删除页面
+    public function clean_deleted_data(){
+        //30天前的已删除项目
+        $items = D("Item")->where(" is_del = 1 and last_update_time < ".(time() - 30*24*60*60))->select();
+        if ($items) {
+            foreach ($items as $key => $value) {
+                $ret = D("Item")->delete_item($value['item_id']);
+            }
+        }
+
+
+        $pages = D("Page")->where(" is_del = 1 and addtime < ".(time() - 30*24*60*60))->select();
+        if ($pages) {
+            foreach ($pages as $key => $value) {
+                $ret = D("Page")->deletePage($value['page_id']);
+            }
+        }
+
+    }
+
+
+
+
+}

+ 5 - 0
server/Application/Api/Model/ItemModel.class.php

@@ -189,4 +189,9 @@ class ItemModel extends BaseModel {
 
 
     }
     }
     
     
+    //软删除项目
+    public function soft_delete_item($item_id){
+        return $this->where("item_id = '$item_id' ")->save(array("is_del"=>1 ,"last_update_time"=>time()));
+    }
+
 }
 }

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

@@ -87,5 +87,16 @@ class PageModel extends BaseModel {
         return $page_id ;
         return $page_id ;
     }
     }
 
 
-	
+   //软删除页面
+   public function softDeletePage($page_id){
+      $ret = M("Page")->where(" page_id = '$page_id' ")->save(array("is_del"=>1 ,"addtime"=>time()));
+      return $ret;
+   }
+
+   //删除页面
+   public function deletePage($page_id){
+      $ret = M("Page")->where(" page_id = '$page_id' ")->delete();
+      return $ret;
+   }
+
 }
 }

+ 7 - 0
web_src/src/components/user/Login.vue

@@ -87,7 +87,12 @@ export default {
       change_v_code_img(){
       change_v_code_img(){
         var rand = '&rand='+Math.random();
         var rand = '&rand='+Math.random();
         this.v_code_img += rand ;
         this.v_code_img += rand ;
+      },
+      script_cron(){
+        var url = DocConfig.server+'/api/ScriptCron/run';
+        this.axios.get(url);
       }
       }
+
   },
   },
   mounted() {
   mounted() {
     var that = this ;
     var that = this ;
@@ -101,6 +106,8 @@ export default {
         });
         });
       }
       }
     });
     });
+
+    this.script_cron();
   },
   },
   beforeDestroy(){
   beforeDestroy(){
     /*去掉添加的背景色*/
     /*去掉添加的背景色*/