moshaorui 5 өдөр өмнө
parent
commit
ca278bb7c4

+ 19 - 10
app/Distributor/Actions/SmmAddAccount.php

@@ -2,6 +2,7 @@
 namespace App\Distributor\Actions;
 
 use App\Distributor\Forms\ImportProduct;
+use App\Distributor\Repositories\SmmUserAccount;
 use App\Services\SmmService;
 use Dcat\Admin\Grid\RowAction;
 use Dcat\Admin\Grid\Tools\AbstractTool;
@@ -33,16 +34,16 @@ class SmmAddAccount extends RowAction
         $this->mediaName = $mediaName;
     }
 
-    public function confirm()
-    {
-        $click_privacy = "<a href='/privacy_policy.html' target='_blank'>".admin_trans_label('click_privacy')."</a>";
-        return [
-            // 确认弹窗 title
-            admin_trans_label('read_privacy'),
-            // 确认弹窗 content
-            $click_privacy
-        ];
-    }
+//    public function confirm()
+//    {
+//        $click_privacy = "<a href='/privacy_policy.html' target='_blank'>".admin_trans_label('click_privacy')."</a>";
+//        return [
+//            // 确认弹窗 title
+//            admin_trans_label('read_privacy'),
+//            // 确认弹窗 content
+//            $click_privacy
+//        ];
+//    }
 
     /**
      * 处理请求
@@ -53,7 +54,14 @@ class SmmAddAccount extends RowAction
         // 获取 parameters 方法传递的参数
         $name = $request->get('name');
         if ($name) {
+            //转小写
+            $row = SmmUserAccount::getAccountByName($name);
+            $url = $row->login_url;
+            return $this->response()->script(
+                "window.open('{$url}', '_blank')"
+            );
             //跳转到媒体受权页面
+            /*
             $ssmService = new SmmService($name);
             $result = $ssmService->login();
             if ($result['status']) {
@@ -67,6 +75,7 @@ class SmmAddAccount extends RowAction
             return $this
                 ->response()
                 ->error('获取授权失败,请检查媒体名称是否正确!');
+            */
         } else {
             return $this
                 ->response()

+ 34 - 0
app/Distributor/Controllers/ApiController.php

@@ -8,6 +8,8 @@ use App\Distributor\Repositories\DistVideo;
 use App\Distributor\Repositories\DistVideoCategory;
 use App\Distributor\Repositories\SitePages;
 use App\Distributor\Repositories\SitePagesTag;
+use App\Distributor\Repositories\SmmPostLog;
+use App\Distributor\Repositories\SmmUserAccount;
 use Illuminate\Http\Request;
 use Illuminate\Routing\Controller;
 
@@ -133,4 +135,36 @@ class ApiController extends Controller
         return $result;
     }
 
+
+    /*
+     * 得到要发送的日志(社发爬虫工具使用)
+     */
+    public function ssmGetSendLog(){
+        $result = SmmPostLog::getSendLogDist();
+        return response()->json(['status' => 1,'data' => $result]);
+    }
+
+    /*
+     * 更新发送日志状态(社发爬虫工具使用)
+     */
+    public function ssmUpdateSendLog(Request $request)
+    {
+        $id = $request->input('id');
+        $status = $request->input('status');
+        $request_count = $request->input('request_count');
+        $remark = $request->input('remark');
+        SmmPostLog::updateSendLogDist($id, $status, $request_count, $remark);
+        return response()->json(['status' => 1,'msg' => '更新成功']);
+    }
+
+    public function ssmSaveAccount(Request $request){
+        $mediaName = $request->input('media_name') ? $request->input('media_name') : '';
+        $accountId = $request->input('account_id') ? $request->input('account_id') : '';
+        $accountName = $request->input('account_name') ? $request->input('account_name') : '';
+        $cookieId = $request->input('cookie_id') ? $request->input('cookie_id') : '';
+        $cookieData = $request->input('cookie_data') ? $request->input('cookie_data') : '';
+        SmmUserAccount::createAccountIfMediaExistsCookie($mediaName, $accountId,$accountName, $cookieId,$cookieData);
+        return response()->json(['status' => 1,'msg' => '更新成功']);
+    }
+
 }

+ 62 - 9
app/Distributor/Repositories/SmmPostLog.php

@@ -2,6 +2,7 @@
 
 namespace App\Distributor\Repositories;
 
+use App\Libraries\CommonHelper;
 use App\Models\SmmPostLog as Model;
 use Carbon\Carbon;
 use Dcat\Admin\Repositories\EloquentRepository;
@@ -57,20 +58,11 @@ class SmmPostLog extends EloquentRepository
             Log::info('有正在发送中的帖子,返回[]');
             return [];
         }
-        //找出是否有帖子正在上传到Oss如果有,则不发送
-//        $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();
         return $result;
     }
 
-
     /*
      * 计算Twitter月配额,每月只能发送100个帖子,(只限发送帖子,其他接口,每个用户1个请求,15分钟内只允许发送一次)
      * 全站统计
@@ -172,4 +164,65 @@ class SmmPostLog extends EloquentRepository
         return true;
     }
 
+
+
+
+    /*
+     * 得到当前用户要发送帖子的日志
+     */
+    public static function getSendLogDist($limit = 5)
+    {
+        $log = new Model();
+        $result = $log->where('status', 1)->where('dist_id', getDistributorId())->first();//查找状态为1的日志,发送中的日志
+        if ($result) {
+            //updated_at与当前时间差距30分钟以上,则更新日志状态为3
+            $nowTime = Carbon::now();
+            $diffTime = $nowTime->diffInMinutes($result->updated_at);
+            if ($diffTime >= 30) {
+                Log::info('发送中的帖子超过30分钟,更新状态为3,发送失败');
+                $result->status = 3;
+                $result->save();
+            }
+            return [];
+        }
+        //找出待发送与发送失败的日志,重试2次
+        //$result = $log->wherein('status', [0,3])->where('request_count', '<=', 10)->where('send_time', '<', Carbon::now())->where('dist_id', getDistributorId())->limit($limit)->get();
+        $result = $log->where('id',22)->get();
+        $resultArray = $result->toArray();
+        foreach ($result as $k => $v) {
+            $image_video_url = explode(',', $v->post->image_video_url);
+            $tmp = [];
+            foreach ($image_video_url as $key => $value) {
+                $tmp[] = CommonHelper::ossUrl($value);
+            }
+            $image_video_url = implode(',', $tmp);
+            $resultArray[$k]['message'] = $v->post->message;
+            $resultArray[$k]['post_type'] = $v->post->post_type;
+            $resultArray[$k]['image_video_url'] = $image_video_url;
+            $resultArray[$k]['cookie_data'] = $v->account->cookie_data;
+            $resultArray[$k]['account_id'] = $v->account->account_id;
+            $resultArray[$k]['post_backup_field1'] = $v->post->backup_field1;
+        }
+        return $resultArray;
+    }
+
+    public static function updateSendLogDist($id, $status, $request_count = 0,$remark = '')
+    {
+        $log = new Model();
+        $result = $log->where('id', $id)->first();
+        if ($result) {
+            $result->status = $status;
+            $request_count = intval($request_count);
+            if ($request_count > 0) {
+                $result->request_count = $request_count;
+            } else {
+                $result->request_count = $result->request_count + 1;
+            }
+            $result->remark = $remark;
+            $result->save();
+            return true;
+        }
+        return false;
+    }
+
 }

+ 44 - 0
app/Distributor/Repositories/SmmUserAccount.php

@@ -59,6 +59,43 @@ class SmmUserAccount extends EloquentRepository
         return true;
     }
 
+    public static function createAccountIfMediaExistsCookie($mediaName, $accountId,$accountName, $cookieId,$cookieData)
+    {
+        if (empty($accountId)  || empty($cookieId) || empty($cookieData) || empty($mediaName)) {
+            return false;
+        }
+        $model = new Model();
+        // 查找匹配的社媒记录
+        $mediaRecord = $model->where('name', $mediaName)->first();
+        if (!$mediaRecord) {
+            return null;
+        }
+        // 查找是否存在相同的账号
+        $userRow = $model->where('account_id', $accountId)->where('dist_id',getDistributorId())->first();
+        if ($userRow) {
+            $userRow->cookie_id = $cookieId;
+            $userRow->cookie_data = $cookieData;
+            $userRow->name = $accountName;
+            $userRow->save();
+        } else {
+            // 创建新账号并关联父级
+            $data = [
+                'account_id'   => $accountId,
+                'name'        => $accountName,
+                'parent_id'    => $mediaRecord->id,
+                'dist_id'      => getDistributorId(),
+                'created_at'   => Carbon::now(),  // 自动生成时间戳
+                'updated_at'   => Carbon::now(),
+                'cookie_id' => $cookieId,
+                'cookie_data' => $cookieData, //备用字段
+            ];
+            $model->insert($data);
+        }
+        return true;
+    }
+
+
+
 
     /*
      * 查出dist_id=0和parent_id=0的账号
@@ -185,4 +222,11 @@ class SmmUserAccount extends EloquentRepository
         return ['status'=>true];
     }
 
+    public static function getAccountByName($name)
+    {
+        $model = new Model();
+        $account = $model->where('name', $name)->first();
+        return $account;
+    }
+
 }

+ 6 - 0
app/Distributor/routes.php

@@ -62,6 +62,11 @@ Route::group([
     $router->get('api/tag', 'ApiController@tag');
     $router->get('api/generate-slug', 'ApiController@generateSlug');
     $router->get('api/videos', 'ApiController@videos');
+    //社媒爬虫接口
+    $router->get('api/ssm-send-log', 'ApiController@ssmGetSendLog');
+    $router->post('api/ssm-update-send-log', 'ApiController@ssmUpdateSendLog');
+    //$router->get('api/ssm-save-account', 'ApiController@ssmSaveAccount');
+    $router->post('api/ssm-save-account', 'ApiController@ssmSaveAccount');
     // 定义切换语言的路由
     $router->get('language-switch','LanguageController@index');
     // 不需要登录的路由
@@ -84,6 +89,7 @@ Route::group([
     //社媒传单日志
     $router->get('ssm-post-log', 'SmmPostLogController@index');
     $router->get('ssm-post-log/{id}', 'SmmPostLogController@show');
+
     //社媒回调
     $router->get('callback/{name}', 'SmmUserAccountController@callback');
 });

+ 2 - 1
app/Http/Middleware/VerifyCsrfToken.php

@@ -12,6 +12,7 @@ class VerifyCsrfToken extends Middleware
      * @var array<int, string>
      */
     protected $except = [
-        //
+        '/dist/api/ssm-update-send-log',
+        '/dist/api/ssm-save-account',
     ];
 }