作者 lyh

gx锚文本

... ... @@ -12,9 +12,15 @@ use App\Models\Channel\Channel;
use App\Models\Com\KeywordVideoTask;
use App\Models\Domain\DomainInfo;
use App\Models\Manage\ManageHr;
use App\Models\Product\Category;
use App\Models\Product\Keyword;
use App\Models\Product\Product;
use App\Models\Project\DeployOptimize;
use App\Models\Project\Project;
use App\Models\RankData\RankData;
use App\Models\RouteMap\RouteMap;
use App\Services\ProjectServer;
use Illuminate\Support\Facades\DB;
/**
* @remark :优化
... ... @@ -426,4 +432,58 @@ class OptimizeController extends BaseController
$optimizeModel->edit(['ai_video'=>$this->param['status']],['project_id'=>$this->param['project_id']]);
$this->response('success');
}
/**
* @remark :锚文本链接
* @name :anchorTextList
* @author :lyh
* @method :post
* @time :2024/7/17 14:04
*/
public function anchorTextList(){
$this->request->validate([
'project_id' => 'required',
], [
'project_id.required' => 'project_id不能为空',
]);
// 获取当前网站正式域名
$domainModel = new DomainInfo();
$domainInfo = $domainModel->read(['project_id' => $this->param['project_id']], ['domain']);
if ($domainInfo === false) {
$this->fail('请先设置域名');
}
$domain = 'https://' . $domainInfo['domain'] . '/';
$data = [];
ProjectServer::useProject($this->param['id']);
$productModel = new Product();
$this->processChunkedList($productModel, ['status' => $productModel::STATUS_ON], ['id', 'title', 'route'], $domain, $data, 'product');
$productCategoryModel = new Category();
$this->processChunkedList($productCategoryModel, ['status' => $productCategoryModel::STATUS_ACTIVE], ['id', 'title', 'route'], $domain, $data, 'product_category');
$productKeywordModel = new Keyword();
$this->processChunkedList($productKeywordModel, ['status' => $productKeywordModel::STATUS_ACTIVE], ['id', 'title', 'route'], $domain, $data, 'product_keyword');
DB::disconnect('custom_mysql');
$this->response('success', Code::SUCCESS, $data);
}
/**
* @remark :分片查询
* @name :processChunkedList
* @author :lyh
* @method :post
* @time :2024/7/17 14:55
*/
public function processChunkedList($model, $conditions, $fields, $domain, &$data, $key) {
$offset = 1;
$chunkSize = 5000; // 每次查询的记录数
while (true) {
$chunk = $model->lists($conditions,$offset,$chunkSize, 'id', $fields);
if (count($chunk['list']) == 0) {
break;
}
foreach ($chunk['list'] as $item) {
$data[$key][] = $domain . $item['route'] . '/{' . $item['title'] . '}';
}
$offset++;
}
}
}
... ...
... ... @@ -16,6 +16,7 @@ class Keyword extends Base
//连接数据库
protected $connection = 'custom_mysql';
const STATUS_ACTIVE = 1;
/**
* @remark :视频
* @name :getKeywordVideoAttribute
... ...
... ... @@ -281,6 +281,7 @@ Route::middleware(['aloginauth'])->group(function () {
Route::any('/setRobots', [Aside\Optimize\OptimizeController::class, 'setRobots'])->name('admin.optimize_setRobots');//设置robots开关
Route::any('/editBacklink', [Aside\Optimize\OptimizeController::class, 'editBacklink'])->name('admin.optimize_editBacklink');//设置backlink开关
Route::any('/setAiVideo', [Aside\Optimize\OptimizeController::class, 'setAiVideo'])->name('admin.optimize_setAiVideo');//设置backlink开关
Route::any('/anchorTextList', [Aside\Optimize\OptimizeController::class, 'anchorTextList'])->name('admin.optimize_anchorTextList');//设置backlink开关
Route::any('/editTranslateStatus', [Aside\Optimize\OptimizeController::class, 'editTranslateStatus'])->name('admin.optimize_editTranslateStatus');//设置robots开关
});
//生成关键字
... ...