|
@@ -12,9 +12,15 @@ use App\Models\Channel\Channel; |
|
@@ -12,9 +12,15 @@ use App\Models\Channel\Channel; |
|
12
|
use App\Models\Com\KeywordVideoTask;
|
12
|
use App\Models\Com\KeywordVideoTask;
|
|
13
|
use App\Models\Domain\DomainInfo;
|
13
|
use App\Models\Domain\DomainInfo;
|
|
14
|
use App\Models\Manage\ManageHr;
|
14
|
use App\Models\Manage\ManageHr;
|
|
|
|
15
|
+use App\Models\Product\Category;
|
|
|
|
16
|
+use App\Models\Product\Keyword;
|
|
|
|
17
|
+use App\Models\Product\Product;
|
|
15
|
use App\Models\Project\DeployOptimize;
|
18
|
use App\Models\Project\DeployOptimize;
|
|
16
|
use App\Models\Project\Project;
|
19
|
use App\Models\Project\Project;
|
|
17
|
use App\Models\RankData\RankData;
|
20
|
use App\Models\RankData\RankData;
|
|
|
|
21
|
+use App\Models\RouteMap\RouteMap;
|
|
|
|
22
|
+use App\Services\ProjectServer;
|
|
|
|
23
|
+use Illuminate\Support\Facades\DB;
|
|
18
|
|
24
|
|
|
19
|
/**
|
25
|
/**
|
|
20
|
* @remark :优化
|
26
|
* @remark :优化
|
|
@@ -426,4 +432,58 @@ class OptimizeController extends BaseController |
|
@@ -426,4 +432,58 @@ class OptimizeController extends BaseController |
|
426
|
$optimizeModel->edit(['ai_video'=>$this->param['status']],['project_id'=>$this->param['project_id']]);
|
432
|
$optimizeModel->edit(['ai_video'=>$this->param['status']],['project_id'=>$this->param['project_id']]);
|
|
427
|
$this->response('success');
|
433
|
$this->response('success');
|
|
428
|
}
|
434
|
}
|
|
|
|
435
|
+
|
|
|
|
436
|
+ /**
|
|
|
|
437
|
+ * @remark :锚文本链接
|
|
|
|
438
|
+ * @name :anchorTextList
|
|
|
|
439
|
+ * @author :lyh
|
|
|
|
440
|
+ * @method :post
|
|
|
|
441
|
+ * @time :2024/7/17 14:04
|
|
|
|
442
|
+ */
|
|
|
|
443
|
+ public function anchorTextList(){
|
|
|
|
444
|
+ $this->request->validate([
|
|
|
|
445
|
+ 'project_id' => 'required',
|
|
|
|
446
|
+ ], [
|
|
|
|
447
|
+ 'project_id.required' => 'project_id不能为空',
|
|
|
|
448
|
+ ]);
|
|
|
|
449
|
+ // 获取当前网站正式域名
|
|
|
|
450
|
+ $domainModel = new DomainInfo();
|
|
|
|
451
|
+ $domainInfo = $domainModel->read(['project_id' => $this->param['project_id']], ['domain']);
|
|
|
|
452
|
+ if ($domainInfo === false) {
|
|
|
|
453
|
+ $this->fail('请先设置域名');
|
|
|
|
454
|
+ }
|
|
|
|
455
|
+ $domain = 'https://' . $domainInfo['domain'] . '/';
|
|
|
|
456
|
+ $data = [];
|
|
|
|
457
|
+ ProjectServer::useProject($this->param['id']);
|
|
|
|
458
|
+ $productModel = new Product();
|
|
|
|
459
|
+ $this->processChunkedList($productModel, ['status' => $productModel::STATUS_ON], ['id', 'title', 'route'], $domain, $data, 'product');
|
|
|
|
460
|
+ $productCategoryModel = new Category();
|
|
|
|
461
|
+ $this->processChunkedList($productCategoryModel, ['status' => $productCategoryModel::STATUS_ACTIVE], ['id', 'title', 'route'], $domain, $data, 'product_category');
|
|
|
|
462
|
+ $productKeywordModel = new Keyword();
|
|
|
|
463
|
+ $this->processChunkedList($productKeywordModel, ['status' => $productKeywordModel::STATUS_ACTIVE], ['id', 'title', 'route'], $domain, $data, 'product_keyword');
|
|
|
|
464
|
+ DB::disconnect('custom_mysql');
|
|
|
|
465
|
+ $this->response('success', Code::SUCCESS, $data);
|
|
|
|
466
|
+ }
|
|
|
|
467
|
+
|
|
|
|
468
|
+ /**
|
|
|
|
469
|
+ * @remark :分片查询
|
|
|
|
470
|
+ * @name :processChunkedList
|
|
|
|
471
|
+ * @author :lyh
|
|
|
|
472
|
+ * @method :post
|
|
|
|
473
|
+ * @time :2024/7/17 14:55
|
|
|
|
474
|
+ */
|
|
|
|
475
|
+ public function processChunkedList($model, $conditions, $fields, $domain, &$data, $key) {
|
|
|
|
476
|
+ $offset = 1;
|
|
|
|
477
|
+ $chunkSize = 5000; // 每次查询的记录数
|
|
|
|
478
|
+ while (true) {
|
|
|
|
479
|
+ $chunk = $model->lists($conditions,$offset,$chunkSize, 'id', $fields);
|
|
|
|
480
|
+ if (count($chunk['list']) == 0) {
|
|
|
|
481
|
+ break;
|
|
|
|
482
|
+ }
|
|
|
|
483
|
+ foreach ($chunk['list'] as $item) {
|
|
|
|
484
|
+ $data[$key][] = $domain . $item['route'] . '/{' . $item['title'] . '}';
|
|
|
|
485
|
+ }
|
|
|
|
486
|
+ $offset++;
|
|
|
|
487
|
+ }
|
|
|
|
488
|
+ }
|
|
429
|
} |
489
|
} |