wzq преди 5 години
родител
ревизия
889ba70aa5

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

@@ -39,6 +39,7 @@ class ConfigController extends Controller
             'log_type' => [
                 'add_data' => '增加数据',
                 'delete' => '删除内容',
+                'update_topic' => '编辑内容话题',
             ],
             //是否推荐
             'is_suggest' => [

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

@@ -331,4 +331,19 @@ class PostController extends Controller
         $end = Carbon::parse(!empty($request['end']) ? Carbon::parse($request['end'])->endOfDay()->toDateTimeString() : Carbon::yesterday())->endOfDay()->toDateTimeString();
         return $this->postRepository->statistics($start,$end);
     }
+
+    /**
+     * 编辑内容话题
+     */
+    public function updateTopic(Request $request)
+    {
+        $validator = Validator::make($request->all(), [
+            'id' => 'required|integer',
+            'topic_ids' => 'required|string|max:64',
+        ]);
+        if ($validator->fails()) {
+            return $this->response->error($validator->errors()->first(), 500);
+        }
+        return  $this->postRepository->updateTopic($request->all());
+    }
 }

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

@@ -1060,5 +1060,69 @@ class PostRepository
         return $info;
     }
 
+    /**
+     * 编辑内容话题
+     */
+    public function updateTopic($request)
+    {
+        $token = JWTAuth::decode(JWTAuth::getToken());
+        if($token['type'] != 1){
+            return Response::create([
+                'message' => '只有运营才能删除内容',
+                'status_code' => 500
+            ]);
+        }
+        $post = $this->post->where('id', $request['id'])->first();
+        if (!$post) {
+            return Response::create([
+                'message' => '获取内容信息失败',
+                'status_code' => 500
+            ]);
+        }
+
+        //验证话题
+        $topicIdsArray = $this->topic->whereIn('id', explode(',', $request['topic_ids']))->pluck('id')->toArray();
+        $topicCount = count($topicIdsArray);
+        if ($topicCount == 0 || $topicCount > 5) {
+            return Response::create([
+                'message' => '所选话题必须1-5个',
+                'status_code' => 500
+            ]);
+        }
+        $topicIds = implode(',', $topicIdsArray);
+
+        $logData = [
+            'uid' => $token['user']->id,
+            'operator_type' => 'admin',
+            'post_id' => $request['id'],
+            'username' => $token['user']->username,
+            'log_type' => 'update_topic',
+            'content' => json_encode(['update_topic' => $request['id']]),
+        ];
+
+        DB::beginTransaction();
+        try {
+            $post->topic_ids = $topicIds;
+            $post->save();
+
+            $this->postLog->create($logData);
+
+            DB::commit();
+
+            Redis::HSET('post_info_'.$request['id'], 'topic_ids', $topicIds);
+
+            return Response::create();
+
+        } catch (QueryException $exception) {
+            DB::rollBack();
+            Log::debug('编辑内容话题:'.$post->id . $exception->getMessage());
+            return Response::create([
+                'message' => '编辑失败,请重试',
+                'error' => $exception->getMessage(),
+                'status_code' => 500
+            ]);
+        }
+    }
+
 
 }

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

@@ -21,6 +21,7 @@ class LogTransformer extends TransformerAbstract
             'add_collect_count' => '增加收藏数:',
             'add_share_count' => '增加分享数:',
             'delete' => '删除内容:',
+            'update_topic' => '编辑内容话题:',
         ];
         $data = json_decode($postLog['content']);
         $content = '';

+ 2 - 0
routes/api.php

@@ -40,6 +40,8 @@ $api->version('v1', [
             $api->get('statistics', 'PostController@statistics');
             //发布内容
             $api->post('post', 'PostController@create');
+            //编辑发布内容话题
+            $api->put('post/topic', 'PostController@updateTopic');
             //内容列表
             $api->get('post', 'PostController@index');
             //内容详情