作者 赵彬吉
... ... @@ -106,11 +106,11 @@ class HtmlCustomCollect extends Command
// 'https://www.citymax-group.com/case/field-experiment-crop-lettuce/',
// ];
$project_id = 626;
$project_site = 'v6-m342g.globalso.site';
$pages = [
'https://a574.goodao.net/project_catalog/project/',
'https://a574.goodao.net/project_catalog/project/page/2/',
// $project_id = 626;
// $project_site = 'v6-m342g.globalso.site';
// $pages = [
// 'https://a574.goodao.net/project_catalog/project/',
// 'https://a574.goodao.net/project_catalog/project/page/2/',
// 'https://www.lecusostreetlight.com/project/560pcs-250w-smart-led-street-light-in-manila-city-philippines/',
// 'https://www.lecusostreetlight.com/project/3200pcs-8m-150w-solar-street-light-in-cebu-philippines/',
// 'https://lecusostreetlight.com/project/170pcs-100w-split-lithium-battery-solar-street-light-in-tanzania/',
... ... @@ -134,7 +134,7 @@ class HtmlCustomCollect extends Command
// 'https://www.lecusostreetlight.com/project/198pcs-8m-80w-zc-series-all-in-two-solar-light-in-philippines/',
// 'https://www.lecusostreetlight.com/project/5m-30w-morden-led-garden-light-in-russian/',
// 'https://www.lecusostreetlight.com/project/135pcs-all-in-one-solar-street-light-in-uae-dubai-park/'
];
// ];
// $project_id = 633;
// $project_site = 'v6-ke5nz.globalso.site';
... ... @@ -175,6 +175,19 @@ class HtmlCustomCollect extends Command
// 'https://www.mach-sales.com/case/cooperation-win-win-and-starting-anew-sumec-creates-a-new-sample-of-strong-enterprise-cooperation/'
// ];
$project_id = 549;
$project_site = 'v6-myz64.globalso.site';
$pages = [
'https://sryled.goodao.net/event-staging/page/2/',
'https://sryled.goodao.net/event-staging/page/3/',
'https://sryled.goodao.net/event-staging/page/4/',
'https://sryled.goodao.net/advertising-3/page/2/',
'https://sryled.goodao.net/advertising-3/page/3/',
'https://sryled.goodao.net/advertising-3/page/4/',
'https://sryled.goodao.net/indoor/page/2/',
'https://sryled.goodao.net/indoor/page/3/',
];
foreach ($pages as $page) {
$this->start_collect(urldecode($page), $project_id, $project_site);
}
... ... @@ -314,6 +327,14 @@ class HtmlCustomCollect extends Command
$source[] = $check_vv2;
}
}
preg_match_all('/<iframe\s+[^>]*?src\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i', $html, $result_video_3);
$video_3 = $result_video_3[2] ?? [];
foreach ($video_3 as $vv3) {
$check_vv3 = $this->url_check($vv3, $project_id, $domain, $web_url_domain, $home_url);
if ($check_vv3 && (!in_array($check_vv3, $source))) {
$source[] = $check_vv3;
}
}
//css
preg_match_all('/<link\s+[^>]*?href\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i', $html, $result_css);
... ... @@ -401,7 +422,12 @@ class HtmlCustomCollect extends Command
foreach ($source as $vs) {
if ($vs['download']) {
$new_source = CosService::uploadRemote($project_id, 'source', $vs['url_complete']);
if (in_array(substr($vs['url_complete'], -3), ['pdf', 'zip', 'rar', '.gz'])) {
//可下载类资源要保持原名称
$new_source = CosService::uploadRemote($project_id, 'source', $vs['url_complete'], '', '', 1);
} else {
$new_source = CosService::uploadRemote($project_id, 'source', $vs['url_complete']);
}
if ($new_source) {
CollectSource::insert([
'project_id' => $project_id,
... ...
... ... @@ -257,4 +257,23 @@ class KeywordController extends BaseController
$id = $keywordPageModel->addReturnId($this->param);
$this->response('success',Code::SUCCESS,['id'=>$id]);
}
/**
* @remark :删除关联关系
* @name :delRelated
* @author :lyh
* @method :post
* @time :2024/11/28 10:30
*/
public function delRelated(KeywordLogic $logic){
$this->request->validate([
'keyword_id'=>'required',
'product_id'=>'required',
],[
'keyword_id.required' => '关键词id不能为空',
'product_id.required' => '产品id不为空',
]);
$logic->delRelated($this->param['keyword'],$this->param['product_id']);
$this->response('success');
}
}
... ...
... ... @@ -42,6 +42,7 @@ class KeywordLogic extends BaseLogic
if($info !== false){
$info['url'] = $this->user['domain'] . $info['route'];
$info['related_news_info'] = News::whereIn('id', $info['related_news_ids'])->select(['id', 'name'])->get();
$info['product_list'] = $this->getProduct($info['id']);
}
return $this->success($info);
}
... ... @@ -298,4 +299,41 @@ class KeywordLogic extends BaseLogic
}
return $this->success();
}
/**
* @remark :根据关键字获取产品
* @name :getProduct
* @author :lyh
* @method :post
* @time :2024/11/28 9:26
*/
public function getProduct($keyword_id){
$productList = [];
$keywordRelatedModel = new KeywordRelated();
$productIdArr = $keywordRelatedModel->selectField(['keyword_id'=>$keyword_id],'product_id');
if(!empty($productIdArr)){
$productModel = new Product();
$productList = $productModel->list(['id'=>['in',$productIdArr]],['id','title']);
}
return $this->success($productList);
}
/**
* @remark :对应删除关联关系
* @name :delRelated
* @author :lyh
* @method :post
* @time :2024/11/28 9:46
*/
public function delRelated($keyword_id,$product_id){
$productModel = new Product();
$productModel->where('id', $product_id)
->update(['keyword_id' => DB::raw("REPLACE(keyword_id, ',$keyword_id,' , ',')"),'keyword_video_id' => DB::raw("REPLACE(keyword_video_id, ',$keyword_id,' , ',')")]);
$productModel->where('id', $product_id)->where('keyword_id',',')->orWhere('keyword_video_id',',')
->update(['keyword_id' => DB::raw("REPLACE(keyword_id, ',' , '')"),'keyword_video_id' => DB::raw("REPLACE(keyword_video_id, ',' , '')")]);
$keywordRelatedModel = new KeywordRelated();
$keywordRelatedModel->del(['product_id'=>$product_id,'keyword_id'=>$keyword_id]);
return $this->success();
}
}
... ...
... ... @@ -43,6 +43,7 @@ class ProductLogic extends BaseLogic
$extend = $this->handleExtent();
//单独处理分类
$category_ids = $this->handleCategory();
$keyword_arr = $this->param['keyword_id'] ?? [];
//处理其他字段
$this->param = $this->handleSaveParam($this->param);
try {
... ... @@ -66,7 +67,7 @@ class ProductLogic extends BaseLogic
}
//产品分类关联
CategoryRelated::saveRelated($id, $category_ids);
KeywordRelated::saveRelated($id,$category_ids);
KeywordRelated::saveRelated($id,$keyword_arr);
//更新产品新描述
$detailLogic = new DetailLogic();
$detailLogic->saveDetail($id,$this->param['data'] ?? []);
... ...
... ... @@ -296,4 +296,5 @@ class Base extends Model
$data = $this->filterRequestData($data);
return $this->formatQuery($data)->pluck($filed)->toArray();
}
}
... ...
... ... @@ -281,6 +281,7 @@ Route::middleware(['bloginauth'])->group(function () {
Route::post('keyword/batchAdd', [\App\Http\Controllers\Bside\Product\KeywordController::class, 'batchAdd'])->name('product_keyword_batchAdd');
Route::post('keyword/batchDel', [\App\Http\Controllers\Bside\Product\KeywordController::class, 'batchDel'])->name('product_keyword_batchDel');
Route::any('keyword/delete', [\App\Http\Controllers\Bside\Product\KeywordController::class, 'delete'])->name('product_keyword_delete');
Route::any('keyword/delRelated', [\App\Http\Controllers\Bside\Product\KeywordController::class, 'delRelated'])->name('product_keyword_delRelated');
Route::any('keyword/batchUpdateKeyword', [\App\Http\Controllers\Bside\Product\KeywordController::class, 'batchUpdateKeyword'])->name('product_keyword_batchUpdateKeyword');
Route::any('keyword/batchKeywordIsVideo', [\App\Http\Controllers\Bside\Product\KeywordController::class, 'batchKeywordIsVideo'])->name('product_keyword_batchKeywordIsVideo');
Route::any('keyword/batchKeywordFiled', [\App\Http\Controllers\Bside\Product\KeywordController::class, 'batchKeywordFiled'])->name('product_keyword_batchKeywordFiled');
... ...