| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 | <?phpnamespace App\Http\Controllers\Admin;use App\Http\Constant\CacheConstant;use App\Http\Models\LinkTask;use App\Http\Models\LinkTaskDetail;use App\Http\Models\Site;use App\Http\Models\SiteProcess;use GuzzleHttp\Client;use Illuminate\Http\Request;use App\Http\Controllers\Controller;use Illuminate\Support\Facades\Cache;use Illuminate\Support\Facades\DB;use Illuminate\Support\Str;use GuzzleHttp\Psr7\Response;use GuzzleHttp\Pool;class ToolController extends Controller{    public function upload(Request $request)    {        $file = $request->file('file');        if (!$file) {            return response()->json(['message' => '没有上传文件'], 422);        }        $name = strtolower(str_replace(' ', '-', $file->getClientOriginalName()));        $array = explode('.', $name);        if (!count($array) || count($array) > 2) {            return response()->json(['message' => '命名格式不对,不允许文件名中出现 "."'], 422);        }        $fileName = $array[0] . '_' . date('YmdHis');        $name = $fileName . '.' . $array[1];        $fileData['file_url'] = $file->storeAs(date('Ym'), $name, 'public');        $fileData['file_url'] = $request->input('notAsset') ? sprintf('/storage/%s', $fileData['file_url']) : asset('storage/' . $fileData['file_url']);        $fileData['original_name'] = $file->getClientOriginalName();        $fileData['time'] = date('Y-m-d H:i:s');        return response()->json(['message' => '上传成功', 'data' => $fileData]);    }    public function excelUpload(Request $request)    {        $file = $request->file('file');        if (!$file) return response()->json(['message' => '没有上传文件'], 422);        $name = sprintf('%s.%s', Str::random(40), $file->getClientOriginalExtension());        $fileData['file_url'] = $file->storeAs(date('Ym') . '/' . $file->getClientOriginalExtension(), $name, 'public');        $fileData['original_name'] = $file->getClientOriginalName();        $fileData['time'] = time();        return response()->json(['message' => '上传成功', 'data' => $fileData]);    }    public function download(Request $request)    {        $path = str_replace(config('app.url'), '', $request->input('file_url'));        if (!file_exists(public_path($path))) {            abort(404, '文件不存在');        }        return response()->download(public_path($path));    }    public function clearProcess($siteId)    {        SiteProcess::query()->where([            'site_id' => $siteId        ])->whereNotIn('process_id', [1, 2, 12, 7])->delete();        SiteProcess::query()->where(['site_id' => $siteId, 'process_id' => 1])->update([            'active' => 1        ]);        SiteProcess::query()->where(['site_id' => $siteId, 'process_id' => 2])->update([            'active' => 2        ]);        SiteProcess::query()->where(['site_id' => $siteId, 'process_id' => 12])->update([            'active' => 2        ]);        SiteProcess::query()->where(['site_id' => $siteId, 'process_id' => 7])->update([            'active' => 2        ]);        dd('success');    }    public function resetTask(Request $request)    {        $taskId = 63;        $task = LinkTask::query()->where(['id' => $taskId])->first();        dd($task);        $task->status = 3;        $task->save();        LinkTaskDetail::query()->where(['task_id' => $task->id])->update(['status' => 3]);        dd('success');    }    public function generateReport()    {        ignore_user_abort(true);        set_time_limit(0);        $projectYm = date('Ym', strtotime('first day of -1 month'));        $rankConn = DB::connection('rank');        $projectIds = $rankConn->table('webmaster_flow')->select(['project_id'])->where(['flow_ym' => $projectYm, 'status' => 1])->pluck('project_id')->toArray();        $taskUrls = [];        foreach ($projectIds as $item) {            $taskUrls[] = sprintf("https://rank.yinqingli.cn/webmaster/report?projectId=%s", base64_encode($item));        }        $client = new Client([            'verify' => false,            'timeout' => 30        ]); //并发请求链接地址        $requests = function () use ($client, $taskUrls) {            foreach ($taskUrls as $item) {                if (empty($item))                    continue;                yield new \GuzzleHttp\Psr7\Request('GET', $item);            }        };        $result = [];        $fails = [];        $pool = new Pool($client, $requests(), [            'concurrency' => 10, //同时并发抓取几个            'fulfilled' => function (Response $response, $index) use (&$result) {                $result[] = $index;            },            'rejected' => function (\Throwable $throwable, $index) use (&$fails) {                $fails[] = $index;            },        ]);        $promise = $pool->promise();        $promise->wait();        return response()->json(['message' => '操作成功']);    }    public function rmCacheKey()    {        $cacheList = [            CacheConstant::NOW_MONTH_KEY_WORDS_CACHE_KEY,            CacheConstant::LAST_MONTH_KEY_WORDS_CACHE_KEY,            CacheConstant::LAST_MONTH_BQ_KEY_WORDS_CACHE_KEY,            CacheConstant::NOW_MONTH_INQUIRE_CACHE_KEY,            CacheConstant::LAST_MONTH_INQUIRE_CACHE_KEY,            CacheConstant::LAST_MONTH_BQ_INQUIRE_CACHE_KEY,            CacheConstant::NOW_MONTH_FLOW_CACHE_KEY,            CacheConstant::LAST_MONTH_FLOW_CACHE_KEY,            CacheConstant::LAST_MONTH_BQ_FLOW_CACHE_KEY,        ];        foreach ($cacheList as $value) {            Cache::forget($value);        }        return response()->json(['message' => '操作成功']);    }    public function bulkUpload(Request $request)    {        $images = [];        if ($request->hasFile('files')) {            foreach ($request->file('files') as $file) {                $name = sprintf('%s.%s', Str::random(40), $file->getClientOriginalExtension());                $fileData['file_url'] = $file->storeAs(date('Ym') . '/' . $file->getClientOriginalExtension(), $name, 'public');                $fileData['file_url'] = $request->input('notAsset') ? sprintf('/storage/%s', $fileData['file_url']) : asset('storage/' . $fileData['file_url']);                $fileData['original_name'] = $file->getClientOriginalName();                $fileData['time'] = time();                $images[] = $fileData;            }        }        return response()->json(['message' => '上传成功', 'data' => $images]);    }}
 |