Browse Source

社媒对接

moshaorui 12 hours ago
parent
commit
00499079e3

+ 63 - 48
app/Console/Commands/TimerSsmPost.php

@@ -63,58 +63,70 @@ class TimerSsmPost extends Command
             $sendLog = SmmPostLog::getSendLog(5);
             $logIds = [];
             foreach ($sendLog as $log) {
-                Log::info('开始发送社媒帖子,id:'. $log->id);
-                echo '开始发送社媒帖子,id:'. $log->id. "\n";
-                if ($log->media_name == 'Twitter' && SmmPostLog::twitterCanSend() == false) {
-                    //15分钟内不重复发送
-                    Log::info('twitter可发送时间未到,暂时无法发送,ID'.$log->id);
-                    continue;
-                }
-                Log::info('开始发送社媒帖子,把状态改为发送中');
-                //发送社媒帖子中
-                $log->status = 1;//发送中
-                $log->request_count = $log->request_count + 1;
-                $log->remark = '';
-                $log->updated_at = Carbon::now();
-                $log->save();
-                //发送社媒帖子中 end
-
-                $logIds[] = $log->id;
-                //获取帖子内容
-                $post = SmmPost::getPostById($log->post_id);
-                $message = $post->message;
-                $imageVideoUrl = $post->image_video_url;
-                $mediaName = $log->media_name;
-                $postType = $post->post_type;
-                $accountInfo = SmmUserAccount::getAccountById($log->account_id);
-                $accessToken = $accountInfo->access_token;
-                //发送帖子
-                $configData = ['accountInfo' => $accountInfo->toArray(),'postData'=>$post->toArray()];
-                $ssmService = new SmmService($mediaName,$configData);
-                if ($postType == 0) {
-                    //图片帖子
-                    $imageVideoUrl = explode(',', $imageVideoUrl);
-                    foreach ($imageVideoUrl as $key => $url) {
-                        $imageVideoUrl[$key] = CommonHelper::ossUrl($url);
+                try {
+                    Log::info('开始发送社媒帖子,id:'. $log->id);
+                    echo '开始发送社媒帖子,id:'. $log->id. "\n";
+                    if ($log->media_name == 'Twitter' && SmmPostLog::twitterCanSend() == false) {
+                        //15分钟内不重复发送
+                        Log::info('twitter可发送时间未到,暂时无法发送,ID'.$log->id);
+                        continue;
                     }
-                    $response = $ssmService->postImage($message, $imageVideoUrl,$accessToken);
-                    Log::info('图片帖子返回'.json_encode($response));
-                } else {
-                    $imageVideoUrl = CommonHelper::ossUrl($imageVideoUrl);
-                    $response = $ssmService->postVideo($message, $imageVideoUrl,$accessToken);
-                    Log::info('视频帖子返回'.json_encode($response));
-                }
-                $responseIds = isset($response['data']['responseIds'])? $response['data']['responseIds'] : [];
-                //更新post_logs表
-                if ($response['status'] == true) {
-                    $log->status = 2;//发送成功
-                    $log->response_ids = json_encode($responseIds);
+                    Log::info('开始发送社媒帖子,把状态改为发送中');
+                    //发送社媒帖子中
+                    $log->status = 1;//发送中
+                    $log->request_count = $log->request_count + 1;
+                    $log->remark = '';
                     $log->updated_at = Carbon::now();
-                    $log->send_time = Carbon::now();
                     $log->save();
-                } else {
+                    //发送社媒帖子中 end
+                    $logIds[] = $log->id;
+                    //获取帖子内容
+                    $post = SmmPost::getPostById($log->post_id);
+                    $message = $post->message;
+                    $imageVideoUrl = $post->image_video_url;
+                    $mediaName = $log->media_name;
+                    $postType = $post->post_type;
+                    $accountInfo = SmmUserAccount::getAccountById($log->account_id);
+                    if (!$accountInfo) {
+                        Log::info('帐号不存在,id:'. $log->account_id);
+                        throw new \Exception('帐号不存在,id:'. $log->account_id);
+                    }
+                    $accessToken = $accountInfo->access_token;
+                    //发送帖子
+                    $configData = ['accountInfo' => $accountInfo->toArray(),'postData'=>$post->toArray()];
+                    $ssmService = new SmmService($mediaName,$configData);
+                    if ($postType == 0) {
+                        //图片帖子
+                        $imageVideoUrl = explode(',', $imageVideoUrl);
+                        foreach ($imageVideoUrl as $key => $url) {
+                            $imageVideoUrl[$key] = CommonHelper::ossUrl($url);
+                        }
+                        $response = $ssmService->postImage($message, $imageVideoUrl,$accessToken);
+                        Log::info('图片帖子返回'.json_encode($response));
+                    } else {
+                        $imageVideoUrl = CommonHelper::ossUrl($imageVideoUrl);
+                        $response = $ssmService->postVideo($message, $imageVideoUrl,$accessToken);
+                        Log::info('视频帖子返回'.json_encode($response));
+                    }
+                    $responseIds = isset($response['data']['responseIds'])? $response['data']['responseIds'] : [];
+                    //更新post_logs表
+                    if ($response['status'] == true) {
+                        $log->status = 2;//发送成功
+                        $log->response_ids = json_encode($responseIds);
+                        $log->updated_at = Carbon::now();
+                        $log->send_time = Carbon::now();
+                        $log->save();
+                    } else {
+                        $log->status = 3;//发送失败
+                        $log->remark = $response['data'];
+                        $log->updated_at = Carbon::now();
+                        $log->send_time = Carbon::now();
+                        $log->save();
+                    }
+                } catch (\Exception $e) {
+                    Log::info('foreach 发送社媒帖子失败:'.$e->getMessage());
                     $log->status = 3;//发送失败
-                    $log->remark = $response['data'];
+                    $log->remark = $e->getMessage();
                     $log->updated_at = Carbon::now();
                     $log->send_time = Carbon::now();
                     $log->save();
@@ -211,10 +223,13 @@ class TimerSsmPost extends Command
 
     public function ossUpload()
     {
+        //把上传时间大于10分钟,则把状态oss_upload改为0,重新上传
         $has = SmmPost::hasOssUploadingPost();
         if ($has == true) {
+            Log::info('hasOssUploadingPost: false');
             return false;
         }
+        Log::info('hasOssUploadingPost: true');
         // 发送社媒帖子
         $ossUploadPost = SmmPost::getOssUploadPost();
         $disk = $this->disk('oss');

+ 1 - 1
app/Distributor/Controllers/SmmPostLogController.php

@@ -33,7 +33,7 @@ class SmmPostLogController extends AdminController
     {
         return Grid::make(SmmPostLog::with(['post', 'account']), function (Grid $grid) {
             $grid->column('id')->sortable();
-            $grid->column('account.name', admin_trans_label('account_name'));
+            $grid->column('account_name', admin_trans_label('account_name'));
             $grid->column('media_name',admin_trans_label('media_name'));
             //$grid->column('post.message',admin_trans_label('post_message'))->width('30%');
             $grid->column('created_at');

+ 6 - 6
app/Distributor/Repositories/SmmPostLog.php

@@ -58,12 +58,12 @@ class SmmPostLog extends EloquentRepository
             return [];
         }
         //找出是否有帖子正在上传到Oss如果有,则不发送
-        $ossUploadPost = SmmPost::getOssUploadPost();
-
-        if ($ossUploadPost->isNotEmpty())  {
-            Log::info('有帖子正在上传到oss,不发送帖子');
-            return [];
-        }
+//        $ossUploadPost = SmmPost::getOssUploadPost();
+//
+//        if ($ossUploadPost->isNotEmpty())  {
+//            Log::info('有帖子正在上传到oss,不发送帖子');
+//            return [];
+//        }
 
         //找出待发送与发送失败的日志,重试2次
         $result = $log->wherein('status', [0,3])->where('request_count', '<=', 2)->where('send_time', '<', Carbon::now())->limit($limit)->get();