作者 李宇航

合并分支 'lyh-server' 到 'master'

oa端增加根据文件更新项目tdk



查看合并请求 !2254
... ... @@ -9,10 +9,24 @@
namespace App\Console\Commands\Tdk;
use App\Models\Blog\Blog;
use App\Models\Blog\BlogCategory;
use App\Models\Com\NoticeLog;
use App\Models\CustomModule\CustomModuleCategory;
use App\Models\CustomModule\CustomModuleContent;
use App\Models\News\News;
use App\Models\News\NewsCategory;
use App\Models\Product\Category;
use App\Models\Product\Keyword;
use App\Models\Product\Product;
use App\Models\Project\Project;
use App\Models\RouteMap\RouteMap;
use App\Services\ProjectServer;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Redis;
use PhpOffice\PhpSpreadsheet\IOFactory;
use function Aws\default_http_handler;
class UpdateProjectTdk extends Command
{
... ... @@ -40,32 +54,48 @@ class UpdateProjectTdk extends Command
continue;
}
$info = $noticeLogModel->read(['id'=>$task_id]);
if($info === false){
if($info !== false){
echo 'start--'.PHP_EOL;
$project_id = $info['data']['project_id'] ?? 0;
if(empty($project_id)){
echo date('Y-m-d H:i:s').'未获取到项目id.'.PHP_EOL;
$noticeLogModel->edit(['status'=>$noticeLogModel::STATUS_FAIL],['id'=>$task_id]);
continue;
}
ProjectServer::useProject($project_id);
$url = $info['data']['url'] ?? '';
if(empty($url)){
echo date('Y-m-d H:i:s').'未获取到项目更新文件.项目id为:'.$project_id.PHP_EOL;
//未获取到文件,跳过
$noticeLogModel->edit(['status'=>$noticeLogModel::STATUS_SUCCESS],['id'=>$task_id]);
$noticeLogModel->edit(['status'=>$noticeLogModel::STATUS_FAIL],['id'=>$task_id]);
DB::disconnect('custom_mysql');
continue;
}
if (!file_exists($url)) {
return '文件不存在';
}
// 下载到 Laravel storage 的临时路径
$tempPath = storage_path('app/temp_url.xlsx');
file_put_contents($tempPath, file_get_contents($url));
// 载入 Excel
$spreadsheet = IOFactory::load($url);
$sheet = $spreadsheet->getActiveSheet();
$rows = $sheet->toArray();
dd($rows);
// 假设第一行是表头
$header = $rows[0];
try {
$spreadsheet = IOFactory::load($tempPath);
$sheet = $spreadsheet->getActiveSheet();
$rows = $sheet->toArray();
unlink($tempPath);
}catch (\Exception $e){
echo '文件打不开'.PHP_EOL;
$noticeLogModel->edit(['status'=>$noticeLogModel::STATUS_FAIL],['id'=>$task_id]);
DB::disconnect('custom_mysql');
continue;
}
$dataRows = array_slice($rows, 1);
foreach ($dataRows as $item){
//获取路由
$route = trim($item[0],'/');
$route = basename($route);
$this->updateTdk($route,$item);
}
echo date('Y-m-d H:i:s').',end'.PHP_EOL;
$noticeLogModel->edit(['status'=>$noticeLogModel::STATUS_SUCCESS],['id'=>$task_id]);
DB::disconnect('custom_mysql');
}
}
return true;
... ... @@ -93,4 +123,60 @@ class UpdateProjectTdk extends Command
}
return $task_id;
}
/**
* @remark :更新tdk
* @name :updateTdk
* @author :lyh
* @method :post
* @time :2025/7/2 14:59
*/
public function updateTdk($route,$item){
$routeMapModel = new RouteMap();
$routeInfo = $routeMapModel->read(['route'=>$route]);
if($routeInfo === false){
return false;
}
switch ($routeInfo['source']){
case $routeMapModel::SOURCE_PRODUCT:
$productModel = new Product();
$productModel->edit(['seo_mate'=>json_encode(['title'=>$item[1],'description'=>$item[2],'keyword'=>$item[3]])],['id'=>$routeInfo['source_id']]);
break;
case $routeMapModel::SOURCE_PRODUCT_CATE:
$productCategoryModel = new Category();
$productCategoryModel->edit(['seo_title'=>$item[1],'seo_des'=>$item[2],'seo_keywords'=>$item[3]],['id'=>$routeInfo['source_id']]);
break;
case $routeMapModel::SOURCE_PRODUCT_KEYWORD:
$productKeywordModel = new Keyword();
$productKeywordModel->edit(['seo_title'=>$item[1],'seo_description'=>$item[2],'seo_keywords'=>$item[3]],['id'=>$routeInfo['source_id']]);
break;
case $routeMapModel::SOURCE_BLOG:
$blogModel = new Blog();
$blogModel->edit(['seo_title'=>$item[1],'seo_description'=>$item[2],'seo_keywords'=>$item[3]],['id'=>$routeInfo['source_id']]);
break;
case $routeMapModel::SOURCE_BLOG_CATE:
$blogCateModel = new BlogCategory();
$blogCateModel->edit(['seo_title'=>$item[1],'seo_des'=>$item[2],'seo_keywords'=>$item[3]],['id'=>$routeInfo['source_id']]);
break;
case $routeMapModel::SOURCE_NEWS:
$newsModel = new News();
$newsModel->edit(['seo_title'=>$item[1],'seo_description'=>$item[2],'seo_keywords'=>$item[3]],['id'=>$routeInfo['source_id']]);
break;
case $routeMapModel::SOURCE_NEWS_CATE:
$newsCateModel = new NewsCategory();
$newsCateModel->edit(['seo_title'=>$item[1],'seo_des'=>$item[2],'seo_keywords'=>$item[3]],['id'=>$routeInfo['source_id']]);
break;
case $routeMapModel::SOURCE_MODULE:
$contentModel = new CustomModuleContent();
$contentModel->edit(['seo_title'=>$item[1],'seo_description'=>$item[2],'seo_keywords'=>$item[3]],['id'=>$routeInfo['source_id']]);
break;
case $routeMapModel::SOURCE_MODULE_CATE:
$categoryModel = new CustomModuleCategory();
$categoryModel->edit(['seo_title'=>$item[1],'seo_description'=>$item[2],'seo_keywords'=>$item[3]],['id'=>$routeInfo['source_id']]);
break;
default:
break;
}
return true;
}
}
... ...