Bläddra i källkod

Merge branch 'develop' of http://git.caihongxingqiu.net/rainbow/community-manage into develop

zhangchangchun 5 år sedan
förälder
incheckning
e783539b19

+ 8 - 0
app/Http/Controllers/ConfigController.php

@@ -27,6 +27,14 @@ class ConfigController extends Controller
                 'video' => '视频',
                 'html' => '富文本',
             ],
+            //内容排序
+            'sort' => [
+                'praise_count' => '点赞数',
+                'share_count' => '分享数',
+                'pv' => '浏览量',
+                'comment_count' => '评论数',
+                'create_bean' => '彩虹豆数',
+            ],
             //日志类型
             'log_type' => [
                 'add_data' => '增加数据',

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

@@ -11,6 +11,7 @@ namespace App\Http\Controllers\Post;
 use App\Repositories\Post\PostRepository;
 use App\Transformers\Post\CommentTransformer;
 use App\Transformers\Post\DetailTransformer;
+use App\Transformers\Post\LogTransformer;
 use App\Transformers\Post\PostTransformer;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Validator;
@@ -69,6 +70,45 @@ class PostController extends Controller
         return $data;
     }
 
+    /**
+     * 回收站列表
+     */
+    public function waste(Request $request)
+    {
+        $params = $request->all();
+        $params['waste'] = 1;
+        $productList = $this->postRepository->lists($params);
+        $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;
+    }
+
     /**
      * 内容详情
      */
@@ -205,6 +245,20 @@ class PostController extends Controller
         return  $this->postRepository->delete($request->all());
     }
 
+    /**
+     * 复原内容
+     */
+    public function restore(Request $request)
+    {
+        $validator = Validator::make($request->all(), [
+            'id' => 'required|integer',
+        ]);
+        if ($validator->fails()) {
+            return $this->response->error($validator->errors()->first(), 500);
+        }
+        return  $this->postRepository->restore($request->all());
+    }
+
     /**
      * 删除评论
      */
@@ -233,4 +287,31 @@ class PostController extends Controller
         return  $this->postRepository->hide($request->all());
     }
 
+    /**
+     * 日志列表
+     */
+    public function log(Request $request)
+    {
+        $commentList = $this->postRepository->log($request->all());
+        $fractal = new Manager();
+        $resource = new Collection($commentList, new LogTransformer());
+        $resource->setPaginator(new IlluminatePaginatorAdapter($commentList));
+        $data = $fractal->createData($resource)->toArray();
+
+        $data['extra'] = [
+            'filters' => [
+                'log_type',
+                'created_at',
+            ],
+            'columns' => [
+                'id',
+                'username',
+                'log_type',
+                'created_at',
+                'content',
+            ]
+        ];
+        return $data;
+    }
+
 }

+ 65 - 5
app/Repositories/Post/PostRepository.php

@@ -165,20 +165,21 @@ class PostRepository
         $content = '';
         if($request['add_pv']){
             $postData->pv += $request['add_pv'];
-            $content .= '浏览数增加'.$request['add_pv'].'';
+            $content .= '浏览数增加'.$request['add_pv'].'';
         }
         if($request['add_praise_count']){
             $postData->praise_count += $request['add_praise_count'];
-            $content .= '点赞数增加'.$request['add_praise_count'].'';
+            $content .= '点赞数增加'.$request['add_praise_count'].'';
         }
         if($request['add_collect_count']){
             $postData->collect_count += $request['add_collect_count'];
-            $content .= '收藏数增加'.$request['add_collect_count'].'';
+            $content .= '收藏数增加'.$request['add_collect_count'].'';
         }
         if($request['add_share_count']){
             $postData->share_count += $request['add_share_count'];
-            $content .= '分享数增加'.$request['add_share_count'].';';
+            $content .= '分享数增加'.$request['add_share_count'];
         }
+        $content = rtrim($content, '、');
         DB::beginTransaction();
         try{
             $postData->save();
@@ -285,8 +286,12 @@ class PostRepository
         if(isset($request['sort']) && in_array($request['sort'], ['praise_count', 'share_count', 'pv', 'comment_count', 'create_bean'])){
             $sort = $request['sort'];
         }
+        $post = $this->post;
+        if(isset($request['waste']) && $request['waste'] == 1){
+            $post = $post->onlyTrashed();
+        }
 
-        return $this->post
+        return $post
             ->join('post_data', 'post_data.post_id', '=', 'post.id')
             ->select('post.*')
             ->where($where)
@@ -325,6 +330,7 @@ class PostRepository
             ->orderBy($sort,'desc')
             ->paginate($perPage);
     }
+    
 
     /**
      * 内容详情
@@ -415,6 +421,37 @@ class PostRepository
         }
     }
 
+    /**
+     * 复原内容
+     */
+    public function restore($request)
+    {
+        $post = $this->post->withTrashed()->where('id', $request['id'])->first();
+        if(!$post){
+            return Response::create([
+                'message'  => '获取内容信息失败',
+                'status_code'   => 500
+            ]);
+        }
+
+        DB::beginTransaction();
+        try{
+            $post->restore();
+
+            DB::commit();
+            return Response::create();
+
+        }catch (QueryException $exception){
+            DB::rollBack();
+            Log::debug('复原内容:'.$request['id'].$exception->getMessage());
+            return Response::create([
+                'message'  => '操作失败,请重试',
+                'error' => $exception->getMessage(),
+                'status_code'   => 500
+            ]);
+        }
+    }
+
     /**
      * 删除评论
      */
@@ -491,4 +528,27 @@ class PostRepository
         }
     }
 
+    /**
+     * 日志列表
+     */
+    public function log($request)
+    {
+        $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
+        $where = [];
+        if(isset($request['log_type'])){
+            $where[] = ['log_type', $request['log_type']];
+        }
+
+        return $this->postLog
+            ->where($where)
+            ->where(function($query) use ($request){
+                if(isset($request['created_at'])){
+                    $time = explode('_', $request['created_at']);
+                    $query->whereBetween('created_at', $time);
+                }
+            })
+            ->orderBy('id','desc')
+            ->paginate($perPage);
+    }
+
 }

+ 26 - 0
app/Transformers/Post/LogTransformer.php

@@ -0,0 +1,26 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: Administrator
+ * Date: 2019/6/10
+ * Time: 17:21
+ */
+
+namespace App\Transformers\Post;
+use App\Models\PostLog;
+use Illuminate\Support\Carbon;
+use League\Fractal\TransformerAbstract;
+
+class LogTransformer extends TransformerAbstract
+{
+    public function transform(PostLog $postLog)
+    {
+        return [
+            'id' => $postLog['id'],
+            'username' => $postLog['username'],
+            'log_type' => $postLog['log_type'],
+            'created_at' => Carbon::parse($postLog['created_at'])->toDateTimeString(),
+            'content' => $postLog['content'],
+        ];
+    }
+}

+ 8 - 0
routes/api.php

@@ -45,6 +45,14 @@ $api->version('v1', [
             //删除评论
             $api->delete('post/comment/delete', 'PostController@commentDelete');
 
+            //回收站列表
+            $api->get('post/waste', 'PostController@waste');
+            //回收站复原
+            $api->put('post/waste', 'PostController@restore');
+
+            //日志列表
+            $api->get('post/log', 'PostController@log');
+
         });
         //新增话题分类
         $api->post('categoryCreate', 'CategoryController@create');