123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- <?php
- namespace 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]);
- }
- }
|