Merge branch 'master' of http://47.244.231.31:8099/zhl/globalso-v6 into lyh-server
正在显示
5 个修改的文件
包含
175 行增加
和
3 行删除
| 1 | <?php | 1 | <?php |
| 2 | 2 | ||
| 3 | +use App\Helper\Translate; | ||
| 3 | use App\Models\File\Image; | 4 | use App\Models\File\Image; |
| 4 | use App\Models\File\File as FileModel; | 5 | use App\Models\File\File as FileModel; |
| 5 | use App\Models\Project\DeployOptimize; | 6 | use App\Models\Project\DeployOptimize; |
| @@ -851,7 +852,7 @@ function getCustomRouteMap($module_route,$route = '') | @@ -851,7 +852,7 @@ function getCustomRouteMap($module_route,$route = '') | ||
| 851 | * @method :post | 852 | * @method :post |
| 852 | * @time :2023/11/10 14:29 | 853 | * @time :2023/11/10 14:29 |
| 853 | */ | 854 | */ |
| 854 | -function getRouteMap($source,$source_id,$is_upgrade = 0){ | 855 | +function getRouteMap($source,$source_id,$is_upgrade = 0, $returnModel = false){ |
| 855 | $route = ''; | 856 | $route = ''; |
| 856 | $routeMapModel = new RouteMap(); | 857 | $routeMapModel = new RouteMap(); |
| 857 | $info = $routeMapModel->read(['source'=>$source,'source_id'=>$source_id]); | 858 | $info = $routeMapModel->read(['source'=>$source,'source_id'=>$source_id]); |
| @@ -878,6 +879,9 @@ function getRouteMap($source,$source_id,$is_upgrade = 0){ | @@ -878,6 +879,9 @@ function getRouteMap($source,$source_id,$is_upgrade = 0){ | ||
| 878 | $route = $info['route']; | 879 | $route = $info['route']; |
| 879 | } | 880 | } |
| 880 | } | 881 | } |
| 882 | + if($returnModel){ | ||
| 883 | + return $info; | ||
| 884 | + } | ||
| 881 | return $route; | 885 | return $route; |
| 882 | } | 886 | } |
| 883 | 887 | ||
| @@ -1237,4 +1241,115 @@ function getDomain($url) { | @@ -1237,4 +1241,115 @@ function getDomain($url) { | ||
| 1237 | } | 1241 | } |
| 1238 | 1242 | ||
| 1239 | 1243 | ||
| 1244 | +/** | ||
| 1245 | + * 解析url的 route | ||
| 1246 | + * @param $pathInfo | ||
| 1247 | + * @return string | ||
| 1248 | + * @author zbj | ||
| 1249 | + * @date 2025/5/24 | ||
| 1250 | + */ | ||
| 1251 | +function analysisRoute($pathInfo) | ||
| 1252 | +{ | ||
| 1253 | + $language = ''; | ||
| 1254 | + $router = ""; | ||
| 1255 | + $page = null; | ||
| 1256 | + | ||
| 1257 | + $pathArr = explode("/", $pathInfo); | ||
| 1258 | + $pathArr = array_filter($pathArr); | ||
| 1259 | + $first = array_shift($pathArr); | ||
| 1260 | + $last = array_pop($pathArr); | ||
| 1261 | + $other = implode("/", $pathArr); | ||
| 1262 | + | ||
| 1263 | + $first = $first == "zh-ct" ? "zh-TW" : $first; | ||
| 1264 | + $tlsLang = array_keys(Translate::$tls_list); | ||
| 1265 | + if (in_array($first, $tlsLang)) { | ||
| 1266 | + $language = $first; | ||
| 1267 | + $first = ''; | ||
| 1268 | + } | ||
| 1269 | + $lastIsRoute = RouteMap::select("id")->where("route", $last)->first(); | ||
| 1270 | + if (is_numeric($last) && empty($lastIsRoute)) { | ||
| 1271 | + $page = $last; | ||
| 1272 | + $last = ''; | ||
| 1273 | + } | ||
| 1274 | + $router_array = compact('first', 'other', 'last'); | ||
| 1275 | + $router_array = array_filter($router_array); | ||
| 1276 | + | ||
| 1277 | + //解析路由5.0 + 6.0 | ||
| 1278 | + $keyword = new \App\Models\Product\Keyword(); | ||
| 1279 | + $topSearchRoute = $keyword->product_keyword_route; | ||
| 1280 | + if (isset($router_array['first'])) { | ||
| 1281 | + if (isset($router_array['other'])) { | ||
| 1282 | + if ($router_array['other'] == "page") { | ||
| 1283 | + $router = $router_array['first']; | ||
| 1284 | + } else { | ||
| 1285 | + $otherArr = explode("/", $router_array['other']); | ||
| 1286 | + $otherArr = array_filter($otherArr); | ||
| 1287 | + if (count($otherArr) >= 1) { | ||
| 1288 | + $router = $otherArr[0]; | ||
| 1289 | + } | ||
| 1290 | + } | ||
| 1291 | + } else { | ||
| 1292 | + if (isset($router_array['last'])) { | ||
| 1293 | + if (in_array($router_array['first'], $topSearchRoute)) { | ||
| 1294 | + $router = $router_array['first']; | ||
| 1295 | + $page = (int)$router_array['last']; | ||
| 1296 | + } else { | ||
| 1297 | + $router = $router_array['last']; | ||
| 1298 | + } | ||
| 1299 | + } else { | ||
| 1300 | + $router = $router_array['first']; | ||
| 1301 | + } | ||
| 1302 | + } | ||
| 1303 | + } else { | ||
| 1304 | + if (isset($router_array['last'])) { | ||
| 1305 | + if ($router_array['last'] != "page") { | ||
| 1306 | + if (isset($router_array['other']) && in_array($router_array['other'], $topSearchRoute)) { | ||
| 1307 | + $router = $router_array['other']; | ||
| 1308 | + $page = (int)$router_array['last']; | ||
| 1309 | + } else { | ||
| 1310 | + $router = $router_array['last']; | ||
| 1311 | + } | ||
| 1312 | + } else { | ||
| 1313 | + $otherArr = explode("/", $router_array['other']); | ||
| 1314 | + $otherArr = array_filter($otherArr); | ||
| 1315 | + if (count($otherArr) == 1) { | ||
| 1316 | + $router = $otherArr[0]; | ||
| 1317 | + } else { | ||
| 1318 | + $router = $otherArr[1]; | ||
| 1319 | + } | ||
| 1320 | + } | ||
| 1321 | + } else { | ||
| 1322 | + if (!empty($router_array)) { | ||
| 1323 | + $otherArr = explode("/", $router_array['other']); | ||
| 1324 | + $otherArr = array_filter($otherArr); | ||
| 1325 | + if (count($otherArr) == 3) { | ||
| 1326 | + $router = $otherArr[1]; | ||
| 1327 | + } else { | ||
| 1328 | + $router = $otherArr[0]; | ||
| 1329 | + } | ||
| 1330 | + } | ||
| 1331 | + } | ||
| 1332 | + } | ||
| 1240 | 1333 | ||
| 1334 | + //路由算法处理,路由只有一级,route_map表中route(规定),不考虑小语种 | ||
| 1335 | + //新增考虑小语种,判断是否小语种访问,有页面不说,当nginx 404页面之后进程序,生成当前小语种页面 | ||
| 1336 | + $lang = $language; | ||
| 1337 | + if ($page == null) { | ||
| 1338 | + if ($router != null) { | ||
| 1339 | + if ($lang != null) { | ||
| 1340 | + $tlsLang = array_keys(Translate::$tls_list); | ||
| 1341 | + $isLang = in_array($lang, $tlsLang); | ||
| 1342 | + if (!$isLang) { | ||
| 1343 | + $router = $lang; | ||
| 1344 | + } | ||
| 1345 | + } | ||
| 1346 | + } else { | ||
| 1347 | + $tlsLang = array_keys(Translate::$tls_list); | ||
| 1348 | + $isLang = in_array($lang, $tlsLang); | ||
| 1349 | + if (!$isLang) { | ||
| 1350 | + $router = $lang; | ||
| 1351 | + } | ||
| 1352 | + } | ||
| 1353 | + } | ||
| 1354 | + return $router; | ||
| 1355 | +} |
| @@ -61,7 +61,9 @@ class ProductController extends BaseController | @@ -61,7 +61,9 @@ class ProductController extends BaseController | ||
| 61 | $template_id = $this->getTemplateId(BTemplate::SOURCE_PRODUCT,BTemplate::IS_DETAIL);//获取模版id | 61 | $template_id = $this->getTemplateId(BTemplate::SOURCE_PRODUCT,BTemplate::IS_DETAIL);//获取模版id |
| 62 | $userModel = new User(); | 62 | $userModel = new User(); |
| 63 | foreach ($lists['list'] as $k=>$v){ | 63 | foreach ($lists['list'] as $k=>$v){ |
| 64 | - $v['url'] = $this->user['domain'] . getRouteMap(RouteMap::SOURCE_PRODUCT,$v['id']); | 64 | + $route = getRouteMap(RouteMap::SOURCE_PRODUCT,$v['id'], 0, true); |
| 65 | + $v['url'] = $this->user['domain'] . $route['route']; | ||
| 66 | + $v['pv'] = $route['pv']; | ||
| 65 | $v['category_id_text'] = $this->categoryName($v['id'],$cate_data); | 67 | $v['category_id_text'] = $this->categoryName($v['id'],$cate_data); |
| 66 | $v['keyword_id_text'] = $this->keywordName($v['keyword_id'],$key_data); | 68 | $v['keyword_id_text'] = $this->keywordName($v['keyword_id'],$key_data); |
| 67 | $v['created_uid_text'] = $userModel->getName($v['created_uid']); | 69 | $v['created_uid_text'] = $userModel->getName($v['created_uid']); |
| @@ -97,7 +99,9 @@ class ProductController extends BaseController | @@ -97,7 +99,9 @@ class ProductController extends BaseController | ||
| 97 | $template_id = $this->getTemplateId(BTemplate::SOURCE_PRODUCT,BTemplate::IS_DETAIL);//获取模版id | 99 | $template_id = $this->getTemplateId(BTemplate::SOURCE_PRODUCT,BTemplate::IS_DETAIL);//获取模版id |
| 98 | $userModel = new User(); | 100 | $userModel = new User(); |
| 99 | foreach ($lists['list'] as $k=>$v){ | 101 | foreach ($lists['list'] as $k=>$v){ |
| 100 | - $v['url'] = $this->user['domain'] . getRouteMap(RouteMap::SOURCE_PRODUCT,$v['id']); | 102 | + $route = getRouteMap(RouteMap::SOURCE_PRODUCT,$v['id'], 0, true); |
| 103 | + $v['url'] = $this->user['domain'] . $route['route']; | ||
| 104 | + $v['pv'] = $route['pv']; | ||
| 101 | $v['category_id_text'] = $this->categoryName($v['id'],$cate_data); | 105 | $v['category_id_text'] = $this->categoryName($v['id'],$cate_data); |
| 102 | $v['keyword_id_text'] = $this->keywordName($v['keyword_id'],$key_data); | 106 | $v['keyword_id_text'] = $this->keywordName($v['keyword_id'],$key_data); |
| 103 | $v['created_uid_text'] = $userModel->getName($v['created_uid']); | 107 | $v['created_uid_text'] = $userModel->getName($v['created_uid']); |
| @@ -197,4 +197,35 @@ class Keyword extends Base | @@ -197,4 +197,35 @@ class Keyword extends Base | ||
| 197 | $string_key = array_search($first_title, $this->firstNumWord); | 197 | $string_key = array_search($first_title, $this->firstNumWord); |
| 198 | return $string_key ?: 27; | 198 | return $string_key ?: 27; |
| 199 | } | 199 | } |
| 200 | + | ||
| 201 | + public $product_keyword_route = [ | ||
| 202 | + "top-search", | ||
| 203 | + "top-search-a", | ||
| 204 | + "top-search-b", | ||
| 205 | + "top-search-c", | ||
| 206 | + "top-search-d", | ||
| 207 | + "top-search-e", | ||
| 208 | + "top-search-f", | ||
| 209 | + "top-search-g", | ||
| 210 | + "top-search-h", | ||
| 211 | + "top-search-i", | ||
| 212 | + "top-search-j", | ||
| 213 | + "top-search-k", | ||
| 214 | + "top-search-l", | ||
| 215 | + "top-search-m", | ||
| 216 | + "top-search-n", | ||
| 217 | + "top-search-o", | ||
| 218 | + "top-search-p", | ||
| 219 | + "top-search-q", | ||
| 220 | + "top-search-r", | ||
| 221 | + "top-search-s", | ||
| 222 | + "top-search-t", | ||
| 223 | + "top-search-u", | ||
| 224 | + "top-search-v", | ||
| 225 | + "top-search-w", | ||
| 226 | + "top-search-x", | ||
| 227 | + "top-search-y", | ||
| 228 | + "top-search-z", | ||
| 229 | + "top-search-0", | ||
| 230 | + ]; | ||
| 200 | } | 231 | } |
| @@ -13,6 +13,7 @@ use App\Models\Project\AutoEmail; | @@ -13,6 +13,7 @@ use App\Models\Project\AutoEmail; | ||
| 13 | use App\Models\Project\AutoEmailLog; | 13 | use App\Models\Project\AutoEmailLog; |
| 14 | use App\Models\Project\InquiryFilterConfig; | 14 | use App\Models\Project\InquiryFilterConfig; |
| 15 | use App\Models\Project\Project; | 15 | use App\Models\Project\Project; |
| 16 | +use App\Models\RouteMap\RouteMap; | ||
| 16 | use App\Models\Subscribe\Email; | 17 | use App\Models\Subscribe\Email; |
| 17 | use App\Models\SyncSubmitTask\SyncSubmitTask; | 18 | use App\Models\SyncSubmitTask\SyncSubmitTask; |
| 18 | use App\Models\Visit\Visit; | 19 | use App\Models\Visit\Visit; |
| @@ -20,6 +21,7 @@ use App\Models\WebSetting\WebLanguage; | @@ -20,6 +21,7 @@ use App\Models\WebSetting\WebLanguage; | ||
| 20 | use App\Models\Workchat\MessagePush; | 21 | use App\Models\Workchat\MessagePush; |
| 21 | use App\Utils\LogUtils; | 22 | use App\Utils\LogUtils; |
| 22 | use Illuminate\Support\Facades\Cache; | 23 | use Illuminate\Support\Facades\Cache; |
| 24 | +use Illuminate\Support\Facades\DB; | ||
| 23 | use Illuminate\Support\Facades\Http; | 25 | use Illuminate\Support\Facades\Http; |
| 24 | use Illuminate\Support\Facades\Log; | 26 | use Illuminate\Support\Facades\Log; |
| 25 | use Illuminate\Support\Facades\URL; | 27 | use Illuminate\Support\Facades\URL; |
| @@ -337,6 +339,20 @@ class SyncSubmitTaskService | @@ -337,6 +339,20 @@ class SyncSubmitTaskService | ||
| 337 | } | 339 | } |
| 338 | Visit::saveData($visit_data, $visit_data['updated_date']); | 340 | Visit::saveData($visit_data, $visit_data['updated_date']); |
| 339 | 341 | ||
| 342 | + //pv | ||
| 343 | + try { | ||
| 344 | + $url_path = trim(parse_url($visit_data['url'], PHP_URL_PATH), '/'); | ||
| 345 | + if($url_path){ | ||
| 346 | + $route = analysisRoute($url_path); | ||
| 347 | + $row = RouteMap::where('route', $route)->increment('pv'); | ||
| 348 | + if(!$row){ | ||
| 349 | + Log::channel('visit')->info('route not found:' . $visit_data['url'] ); | ||
| 350 | + } | ||
| 351 | + } | ||
| 352 | + }catch (\Exception $e){ | ||
| 353 | + Log::channel('visit')->info('pv inc error:' . $visit_data['url'], [$e->getMessage(), $e->getFile(), $e->getLine()]); | ||
| 354 | + } | ||
| 355 | + | ||
| 340 | return true; | 356 | return true; |
| 341 | } | 357 | } |
| 342 | 358 |
| @@ -191,6 +191,12 @@ return [ | @@ -191,6 +191,12 @@ return [ | ||
| 191 | 'level' => 'debug', | 191 | 'level' => 'debug', |
| 192 | 'days' => 14, | 192 | 'days' => 14, |
| 193 | ], | 193 | ], |
| 194 | + 'visit' => [ | ||
| 195 | + 'driver' => 'daily', | ||
| 196 | + 'path' => storage_path('logs/visit/laravel.log'), | ||
| 197 | + 'level' => 'debug', | ||
| 198 | + 'days' => 14, | ||
| 199 | + ], | ||
| 194 | 'ai_blog' => [ | 200 | 'ai_blog' => [ |
| 195 | 'driver' => 'daily', | 201 | 'driver' => 'daily', |
| 196 | 'path' => storage_path('logs/ai_blog/laravel.log'), | 202 | 'path' => storage_path('logs/ai_blog/laravel.log'), |
-
请 注册 或 登录 后发表评论