123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- <?php
- namespace App\Http\Middleware;
- use App\Services\PreviewTemplateUpdater;
- use Closure;
- use Illuminate\Http\Request;
- use Symfony\Component\HttpFoundation\Response;
- use App\Helpers\SiteCache;
- use App\Services\TemplateUpdater;
- use App\Services\LiquidRenderer;
- /**
- * Class LoadDistData 用中间件来获取distm网店信息
- */
- class LoadDistData
- {
- /**
- * Handle an incoming request.
- *
- * @param
- */
- public function handle(Request $request, Closure $next): Response
- {
- // 获取请求的域名
- $domain = getHost();
- //$domain = 'internal-demo-site.mietubl.com.cn';
- // 从缓存中获取站点配置并反序列化
- $dist = SiteCache::getDist($domain);
- $dist = $dist ? unserialize($dist) : null;
- // 如果找不到匹配的数据,直接返回404响应
- if (!$dist) {
- abort(404, 'site not found.');
- }
- // 检查模板是否需要更新
- if(!empty($dist?->publishList?->template_update_code)) {
- if (
- !$dist?->publishList?->template_local_code ||
- $dist?->publishList?->template_update_code !== $dist?->publishList?->template_local_code
- ) {
- // dd('update template');
- // 更新模板
- TemplateUpdater::updateTemplates($dist);
- // 清除缓存并重新获取
- SiteCache::clearDistCache($domain);
- $dist = SiteCache::getDist($domain);
- $dist = $dist ? unserialize($dist) : null;
- if (!$dist) {
- abort(404, 'site not found.');
- }
- }
- }
- //补充domain
- $dist->domain=$domain;
- // 全局共享 数据
- app()->instance('dist', $dist);
- // 将找到的 dist 数据添加到请求中,方便后续使用
- //$request->attributes->set('dist', $dist);
- $menus_header=SiteCache::getMenu($domain,0,$dist->id);
- $menus_footer=SiteCache::getMenu($domain,1,$dist->id);
- app()->instance('menus_header', $menus_header);// 头部菜单
- app()->instance('menus_footer', $menus_footer);// 底部菜单
- $currentUrl = url()->current();
- $secureUrl = preg_replace('/^http:/i', 'https:', $currentUrl);
- app()->instance('current_url', $secureUrl);// 当前页面
- // 预览模式
- $preview = $request->get('mtb-preview');
- if ($preview) {
- $update = PreviewTemplateUpdater::updateTemplates($dist);
- if ($update) {
- die($update);
- }
- }
- // 预览模式结束
- return $next($request);
- }
- }
|