瀏覽代碼

回收站列表

wzq 5 年之前
父節點
當前提交
50c62b22ac
共有 3 個文件被更改,包括 104 次插入0 次删除
  1. 38 0
      app/Http/Controllers/Post/PostController.php
  2. 63 0
      app/Repositories/Post/PostRepository.php
  3. 3 0
      routes/api.php

+ 38 - 0
app/Http/Controllers/Post/PostController.php

@@ -70,6 +70,44 @@ class PostController extends Controller
         return $data;
     }
 
+    /**
+     * 回收站列表
+     */
+    public function waste(Request $request)
+    {
+        return $request;
+        $productList = $this->postRepository->waste($request->all());
+        $fractal = new Manager();
+        $resource = new Collection($productList, new PostTransformer());
+        $resource->setPaginator(new IlluminatePaginatorAdapter($productList));
+        $data = $fractal->createData($resource)->toArray();
+        $data['extra'] = [
+            'filters' => [
+                'content',
+                'topic_ids',
+                'category_ids',
+                'created_at',
+                'sort'
+            ],
+            'columns' => [
+                'id',
+                'created_at',
+                'uid',
+                'topic',
+                'content',
+                'location',
+                'pv',
+                'praise_count',
+                'share_count',
+                'comment_count',
+                'collect_count',
+                'create_bean',
+                'is_suggest',
+            ]
+        ];
+        return $data;
+    }
+
     /**
      * 内容详情
      */

+ 63 - 0
app/Repositories/Post/PostRepository.php

@@ -327,6 +327,69 @@ class PostRepository
             ->paginate($perPage);
     }
 
+    /**
+     * 回收站列表
+     */
+    public function waste($request)
+    {
+        $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
+        $where = [];
+        if(isset($request['content'])){
+            $where[] = ['content', 'like', "%{$request['content']}%"];
+        }
+        if(isset($request['is_suggest'])){
+            $where[] = ['is_suggest', $request['is_suggest']];
+        }
+        if(isset($request['type'])){
+            $where[] = ['type', $request['type']];
+        }
+
+        $sort = 'post.id';
+        if(isset($request['sort']) && in_array($request['sort'], ['praise_count', 'share_count', 'pv', 'comment_count', 'create_bean'])){
+            $sort = $request['sort'];
+        }
+
+        return $this->post
+            ->onlyTrashed()
+            ->join('post_data', 'post_data.post_id', '=', 'post.id')
+            ->select('post.*')
+            ->where($where)
+            ->where(function($query) use ($request){
+                if(isset($request['keyword'])){
+                    $query->where('uid', '=', $request['keyword'])
+                        ->orWhere('username', 'like', "%{$request['keyword']}%")
+                        ->orWhere('mobile', 'like', "%{$request['keyword']}%");
+                }
+            })
+            ->where(function($query) use ($request){
+                if(isset($request['created_at'])){
+                    $time = explode('_', $request['created_at']);
+                    $query->whereBetween('post.created_at', $time);
+                }
+            })
+            ->where(function ($query) use ($request){
+                if(isset($request['category_ids']) || isset($request['topic_ids'])){
+                    $ids = [];
+                    if (isset($request['category_ids'])) {
+                        $categoryIds = explode('_', $request['category_ids']);
+                        $ids = $this->categoryTopic->whereIn('category_id', $categoryIds)->pluck('topic_id')->toArray();
+                    }
+                    if (isset($request['topic_ids'])) {
+                        $ids = array_merge($ids, explode('_', $request['topic_ids']));
+                    }
+                    foreach ($ids as $key=>$id) {
+                        if ($key==0) {
+                            $query = $query->whereRaw('FIND_IN_SET('.$id.',topic_ids)');
+                        } else {
+                            $query = $query->orWhereRaw('FIND_IN_SET('.$id.',topic_ids)');
+                        }
+                    }
+                }
+            })
+            ->orderBy($sort,'desc')
+            ->paginate($perPage);
+    }
+
     /**
      * 内容详情
      */

+ 3 - 0
routes/api.php

@@ -45,6 +45,9 @@ $api->version('v1', [
             //删除评论
             $api->delete('post/comment/delete', 'PostController@commentDelete');
 
+            //回收站列表
+            $api->get('post/waste', 'PostController@waste');
+
             //日志列表
             $api->get('post/log', 'PostController@log');