host(); //兼容老数据,1=英文,或者传 us-en, zh-cn,jp $language = $request->param()['language_id']??'zh-cn'; if ($language == 'zh-cn') { $languageId = 1; } else { if (is_numeric($language)) { show(-999,lang('无效的语言包请求')); } $lang = new Language(); $info = $lang->where('code',$language)->where('status',0)->findOrEmpty()->toArray(); if (empty($info)) { show(-998,lang('语言包ID不正确')); } $languageId = $info['id']; } // 查找当前品牌所有的语言站点 $site = new Site(); $domain = []; $languageCode = ''; if (Cache::has('site_info')) { $siteInfo = Cache::get('site_info'); $languageCode = Cache::get('language_info_'.$languageId) ?: 'zh-cn'; $domain = array_column($siteInfo,'domain'); } else { $siteInfo = $site->where(['platform_id'=>1,'status'=>0])->select()->toArray(); $languageInfo = $site->where(['language_id'=>$languageId,'platform_id'=>1,'status'=>0])->select()->toArray(); if (!empty($languageInfo)) { $languageCode = $languageInfo[0]['code'] ?? 'zh-cn'; } if (!empty($siteInfo)) { $domain = array_column($siteInfo,'domain'); } Cache::set('site_info',$siteInfo,7200); Cache::set('language_info_'.$languageId,$languageCode,7200); } //检测域名是否合法,添加测试域名 $devDomain = ['setmspace.test','setmspace.com','setmspace.cn','dev.setm.f2b211.com']; $domain = array_column($domain,'domain'); $wholeDomain = array_merge($devDomain,$domain); if (!in_array($url,$wholeDomain)) { //表示请求域名不是绑定的域名,抛出异常 show(-995,lang("绑定域名不正确,请检查后台设置")); } //老站点英文站兼容密钥 $request->platform_id = 1;/*强制为1*/ $request->language_id = $languageId; $request->language_code = $languageCode; //组装语言ID请求数据 $post = $request->post(); $post['language_id'] = $languageId; $request->withPost($post); return $next($request); } }