|
...
|
...
|
@@ -20,6 +20,7 @@ use App\Models\RouteMap\RouteMap; |
|
|
|
use App\Services\ProjectServer;
|
|
|
|
use Illuminate\Console\Command;
|
|
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
use Illuminate\Support\Facades\Schema;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @remark :更新所有项目的路由
|
|
...
|
...
|
@@ -53,7 +54,7 @@ class UpdateRoute extends Command |
|
|
|
*/
|
|
|
|
public function handle(){
|
|
|
|
$projectModel = new Project();
|
|
|
|
$list = $projectModel->list(['id'=>688]);
|
|
|
|
$list = $projectModel->list(['id'=>['in',[358,951]]]);
|
|
|
|
$data = [];
|
|
|
|
foreach ($list as $v){
|
|
|
|
echo date('Y-m-d H:i:s') . 'project_id:'.$v['id'] . PHP_EOL;
|
|
...
|
...
|
@@ -119,14 +120,80 @@ class UpdateRoute extends Command |
|
|
|
// $keywordModel->edit(['route'=>$route],['id'=>$v['id']]);
|
|
|
|
// }
|
|
|
|
}else{
|
|
|
|
echo date('Y-m-d H:i:s') . 'route :'.$v['id'] . PHP_EOL;
|
|
|
|
$route = Translate::tran($v['title'], 'en');
|
|
|
|
echo date('Y-m-d H:i:s') . 'route :'.$route . PHP_EOL;
|
|
|
|
$route = RouteMap::setRoute($route, RouteMap::SOURCE_PRODUCT_KEYWORD, $v['id'], $v['project_id']);
|
|
|
|
$keywordModel->edit(['route'=>$route],['id'=>$v['id']]);
|
|
|
|
if(!empty($route)){
|
|
|
|
echo date('Y-m-d H:i:s') . $route . PHP_EOL;
|
|
|
|
$route = $this->setRoute($route, RouteMap::SOURCE_PRODUCT_KEYWORD, $v['id'], $v['project_id']);
|
|
|
|
$keywordModel->edit(['route'=>$route],['id'=>$v['id']]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// echo date('Y-m-d H:i:s') . 'end :' . PHP_EOL;
|
|
|
|
echo date('Y-m-d H:i:s') . 'end :' . PHP_EOL;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param $title
|
|
|
|
* @param $source
|
|
|
|
* @param $source_id
|
|
|
|
* @param int $project_id
|
|
|
|
* @return bool
|
|
|
|
* @throws \Exception
|
|
|
|
* @author zbj
|
|
|
|
* @date 2023/4/17
|
|
|
|
*/
|
|
|
|
public static function setRoute($title, $source, $source_id, $project_id = 0){
|
|
|
|
$route = self::generateRoute($title, $source, $source_id, $project_id);
|
|
|
|
if(!$route){
|
|
|
|
throw new \Exception('路由生成失败');
|
|
|
|
}
|
|
|
|
try {
|
|
|
|
$route_map = RouteMap::where('project_id', $project_id)->where('source_id', $source_id)->where('source', $source)->first();
|
|
|
|
if(!$route_map){
|
|
|
|
$route_map = new RouteMap();
|
|
|
|
$route_map->source = $source;
|
|
|
|
$route_map->source_id = $source_id;
|
|
|
|
$route_map->project_id = $project_id;
|
|
|
|
}
|
|
|
|
$route_map->route = $route;
|
|
|
|
$route_map->save();
|
|
|
|
}catch (\Exception $e){
|
|
|
|
throw new \Exception('路由映射失败');
|
|
|
|
}
|
|
|
|
return $route;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 生成路由标识
|
|
|
|
* @param $title
|
|
|
|
* @param $source
|
|
|
|
* @param $source_id
|
|
|
|
* @param $project_id
|
|
|
|
* @return string
|
|
|
|
* @author zbj
|
|
|
|
* @date 2023/4/17
|
|
|
|
*/
|
|
|
|
public static function generateRoute($title, $source, $source_id, $project_id){
|
|
|
|
$i=1;
|
|
|
|
$sign = generateRoute($title);
|
|
|
|
$length = strlen($sign);
|
|
|
|
if($length > 100){
|
|
|
|
$sign = trim(mb_substr($sign, 0, 100, 'UTF-8'),'-');
|
|
|
|
}
|
|
|
|
$info = RouteMap::where(['project_id' => $project_id, 'source' => $source, 'source_id'=>$source_id])->first();
|
|
|
|
$suffix = '';
|
|
|
|
if(empty($info)){
|
|
|
|
if($source == 'product'){
|
|
|
|
$suffix = '-product';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$route = $sign.$suffix;
|
|
|
|
while(RouteMap::isExist($route, $source_id, $project_id)){
|
|
|
|
$route = $sign .'-'.$i.$suffix;
|
|
|
|
$i++;
|
|
|
|
}
|
|
|
|
return $route;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
...
|
...
|
@@ -278,4 +345,55 @@ class UpdateRoute extends Command |
|
|
|
RouteMap::setRoute($v['route'],'product_keyword',$v['id'],569);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public function copyTable()
|
|
|
|
{
|
|
|
|
$sourceTable = 'gl_route_map';
|
|
|
|
$destinationTable = 'gl_route_map_copy';
|
|
|
|
|
|
|
|
if (!Schema::connection('custom_mysql')->hasTable($sourceTable)) {
|
|
|
|
$this->error("Source table {$sourceTable} does not exist.");
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
if (Schema::connection('custom_mysql')->hasTable($destinationTable)) {
|
|
|
|
Schema::connection('custom_mysql')->dropIfExists($destinationTable);
|
|
|
|
}
|
|
|
|
$columns = DB::connection('custom_mysql')->select(DB::raw("SHOW COLUMNS FROM {$sourceTable}"));
|
|
|
|
$columnsDefinition = collect($columns)->map(function($column) {
|
|
|
|
$columnDefinition = $column->Field . ' ' . $column->Type .
|
|
|
|
($column->Null === 'NO' ? ' NOT NULL' : '') .
|
|
|
|
($column->Default !== null ? " DEFAULT '" . $column->Default . "'" : '') .
|
|
|
|
($column->Extra ? ' ' . $column->Extra : '');
|
|
|
|
return $columnDefinition;
|
|
|
|
})->implode(', ');
|
|
|
|
// Add PRIMARY KEY to the id column
|
|
|
|
$primaryKey = collect($columns)->firstWhere('Field', 'id') ? 'PRIMARY KEY (id)' : '';
|
|
|
|
$columnsDefinition = $columnsDefinition . ($primaryKey ? ', ' . $primaryKey : '');
|
|
|
|
DB::connection('custom_mysql')->statement("CREATE TABLE {$destinationTable} ({$columnsDefinition})");
|
|
|
|
DB::connection('custom_mysql')->statement("INSERT INTO {$destinationTable} SELECT * FROM {$sourceTable}");
|
|
|
|
$this->info("Table {$sourceTable} has been copied to {$destinationTable} successfully.");
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @remark :routeMap去重
|
|
|
|
* @name :routeMapDeduplication
|
|
|
|
* @author :lyh
|
|
|
|
* @method :post
|
|
|
|
* @time :2024/5/28 11:31
|
|
|
|
*/
|
|
|
|
public function routeMapDeduplication(){
|
|
|
|
$routeMapModel = new RouteMap();
|
|
|
|
$lists = $routeMapModel->list(['source'=>'product_keyword'],'id',['id'],'asc');
|
|
|
|
foreach ($lists as $v){
|
|
|
|
echo date('Y-m-d H:i:s') . '关键字id:'.$v['id'] . PHP_EOL;
|
|
|
|
//查询当前数据详情
|
|
|
|
$info = $routeMapModel->read(['id'=>$v['id']],['id','source_id']);
|
|
|
|
if($info !== false){
|
|
|
|
//删除其他一样的数据
|
|
|
|
$routeMapModel->del(['id'=>['!=',$info['id']],'source'=>'product_keyword','source_id'=>$info['source_id']]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
} |
...
|
...
|
|