作者 刘锟

Merge remote-tracking branch 'origin/master' into akun

... ... @@ -54,157 +54,28 @@ class UpdateRoute extends Command
*/
public function handle(){
$projectModel = new Project();
$lists = $projectModel->list(['is_upgrade'=>0,'id'=>['>',167],'type'=>['!=',0]]);
$lists = $projectModel->list(['is_upgrade'=>0,'type'=>['!=',0]]);
foreach ($lists as $k => $v){
echo date('Y-m-d H:i:s') . ' start: 项目id为' . $v['id'] . PHP_EOL;
ProjectServer::useProject($v['id']);
// $this->setProductRoute($v['id']);
$this->setProductKeywordRoute($v['id']);
// $this->setBlogRoute($v['id']);
// $this->setNewsRoute($v['id']);
// $this->setBlogCateRoute($v['id']);
// $this->setNewsCateRoute($v['id']);
$this->getProductKeyword($v['id']);
DB::disconnect('custom_mysql');
}
echo date('Y-m-d H:i:s') . ' end: 项目id为' . $v['id'] . PHP_EOL;
}
/**
* @remark :设置路由
* @name :setRoute
* @remark :产品关键字
* @name :getProductKeyword
* @author :lyh
* @method :post
* @time :2023/11/20 15:30
* @time :2023/12/8 11:13
*/
public function setProductRoute($project_id){
$productModel = new Product();
$productList = $productModel->list(['status'=>['!=',2]],'id',['id','route']);
foreach ($productList as $v){
$route = preg_replace('/-2-1-product.*/', '', $v['route']);
$route = preg_replace('/-1-1-product.*/', '', $route);
$route = preg_replace('/-2-product.*/', '', $route);
$route = preg_replace('/-1-product.*/', '', $route);
$route = preg_replace('/-product.*/', '', $route);
$i = 0;
$routes = $this->productRoute($route,$v['id'],$i);
$route = RouteMap::setRoute($routes, RouteMap::SOURCE_PRODUCT, $v['id'], $project_id);
echo date('Y-m-d H:i:s') . ' 路由表返回的route:' . $route . PHP_EOL;
$productModel->edit(['route'=>$route],['id'=>$v['id']]);
}
return true;
}
/**
* @remark :产品新增单独处理路由
* @name :setProductRoute
* @author :lyh
* @method :post
* @time :2023/11/21 18:48
*/
public function productRoute($route,$id,$i){
echo date('Y-m-d H:i:s') . ' 打印$i:' . $i . PHP_EOL;
if($i == 0){
$routes = $route.'-product';
}else{
$routes = $route.'-'.$i.'-product';
}
$routeMapModel = new RouteMap();
$routeInfo = $routeMapModel->read(['route'=>$routes,'source'=>'product','source_id'=>['!=',$id]]);
if($routeInfo == false){
echo date('Y-m-d H:i:s') . ' route:' . $routes . PHP_EOL;
return $routes;
}else{
echo date('Y-m-d H:i:s') . ' 数据:' . $routeInfo['id'] . PHP_EOL;
$i = $i + 1;
return $this->productRoute($route,$id,$i);
}
}
/**
* @remark :设置路由
* @name :setRoute
* @author :lyh
* @method :post
* @time :2023/11/20 15:30
*/
public function setNewsRoute($project_id){
$newsModel = new News();
$newsList = $newsModel->list(['status'=>['!=',2]],'id',['id','url']);
foreach ($newsList as $v){
RouteMap::setRoute($v['url'], RouteMap::SOURCE_NEWS, $v['id'], $project_id);
}
return true;
}
/**
* @remark :设置路由
* @name :setRoute
* @author :lyh
* @method :post
* @time :2023/11/20 15:30
*/
public function setNewsCateRoute($project_id){
$newsCateModel = new NewsCategory();
$newsList = $newsCateModel->list([],'id',['id','alias']);
foreach ($newsList as $v){
RouteMap::setRoute($v['alias'], RouteMap::SOURCE_NEWS_CATE, $v['id'], $project_id);
}
return true;
}
/**
* @remark :设置路由
* @name :setRoute
* @author :lyh
* @method :post
* @time :2023/11/20 15:30
*/
public function setBlogRoute($project_id){
$blogModel = new Blog();
$blogList = $blogModel->list(['status'=>['!=',2]],'id',['id','url']);
foreach ($blogList as $v){
RouteMap::setRoute($v['url'], RouteMap::SOURCE_BLOG, $v['id'], $project_id);
}
return true;
}
/**
* @remark :设置路由
* @name :setRoute
* @author :lyh
* @method :post
* @time :2023/11/20 15:30
*/
public function setBlogCateRoute($project_id){
$blogCateModel = new BlogCategory();
$blogList = $blogCateModel->list([],'id',['id','alias']);
foreach ($blogList as $v){
RouteMap::setRoute($v['alias'], RouteMap::SOURCE_BLOG_CATE, $v['id'], $project_id);
}
return true;
}
/**
* @remark :设置路由
* @name :setRoute
* @author :lyh
* @method :post
* @time :2023/11/20 15:30
*/
public function setProductKeywordRoute($project_id){
public function getProductKeyword($id){
$keywordModel = new Keyword();
$keywordList = $keywordModel->list([],'id',['id','route']);
if(!empty($keywordList)){
foreach ($keywordList as $v){
// if(!ends_with($v['route'],'-tag')){
// $route = $v['route'].'-tag';
// $keywordModel->edit(['route'=>$route],['id'=>$v['id']]);
// }
$routeMapModel = new RouteMap();
$routeMapModel->edit(['route'=>$v['route']],['source_id'=>$v['id'],'source'=>RouteMap::SOURCE_PRODUCT_KEYWORD]);
RouteMap::setRoute($v['route'], RouteMap::SOURCE_PRODUCT_KEYWORD, $v['id'], $project_id);
$lists = $keywordModel->list(['route'=>['like','%-1-2-%']]);
if(!empty($lists)){
echo date('Y-m-d H:i:s') . ' 错误id:' . $id . PHP_EOL;
}
}
return true;
}
}
... ...
... ... @@ -60,9 +60,16 @@ class RouteMap extends Base
}
$i=1;
$sign = generateRoute($title);
$route = $sign;
$suffix = '';
if($source == self::SOURCE_PRODUCT_KEYWORD){
$suffix = '-tag';
}
if($source == self::SOURCE_PRODUCT){
$suffix = '-product';
}
$route = $sign.$suffix;
while(self::isExist($route, $source, $source_id, $project_id)){
$route = $sign .'-'.$i;
$route = $sign .'-'.$i.$suffix;
$i++;
}
return $route;
... ... @@ -83,17 +90,8 @@ class RouteMap extends Base
if(in_array($route, $fixed)){
return true;
}
$path = '';
if($source == self::SOURCE_NEWS){
$path = self::SOURCE_NEWS;
}elseif ($source == self::SOURCE_BLOG){
$path = self::SOURCE_BLOG.'s';
}
$where = [
'project_id' => $project_id,
'route' => $route,
'path' => $path,
'project_id' => $project_id, 'route' => $route,
];
$route = self::where($where)->first();
if($route){
... ... @@ -122,25 +120,11 @@ class RouteMap extends Base
}
try {
$route_map = self::where('project_id', $project_id)->where('source_id', $source_id)->where('source', $source)->first();
//上线项目 不能修改链接了
// if($route_map){
// $project = ProjectLogic::instance()->getInfo($project_id);
// if($project['type'] !== Project::STATUS_ONE){
// return $route_map->route;
// }
// }
if(!$route_map){
$route_map = new self();
$route_map->source = $source;
$route_map->source_id = $source_id;
$route_map->project_id = $project_id;
if ($source == self::SOURCE_PRODUCT_KEYWORD){
$route = self::setKeywordRoute($route);
//查看当前路由是否存在
}elseif ($source == self::SOURCE_PRODUCT){
//产品单独处理路由
$route = self::setProductRoute($route);
}
}
if($source == self::SOURCE_NEWS){
$route_map->path = self::SOURCE_NEWS;
... ...