LoadDistData.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. namespace App\Http\Middleware;
  3. use Closure;
  4. use Illuminate\Http\Request;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use App\Helpers\SiteCache;
  7. use App\Services\TemplateUpdater;
  8. use App\Services\LiquidRenderer;
  9. /**
  10. * Class LoadDistData 用中间件来获取distm网店信息
  11. */
  12. class LoadDistData
  13. {
  14. /**
  15. * Handle an incoming request.
  16. *
  17. * @param
  18. */
  19. public function handle(Request $request, Closure $next): Response
  20. {
  21. // 获取请求的域名
  22. $domain = getHost();
  23. // 从缓存中获取站点配置并反序列化
  24. $dist = SiteCache::getDist($domain);
  25. $dist = $dist ? unserialize($dist) : null;
  26. // 如果找不到匹配的数据,直接返回404响应
  27. if (!$dist) {
  28. abort(404, 'site not found.');
  29. }
  30. // 检查模板是否需要更新
  31. if ( !$dist->publishList->template_local_code ||
  32. $dist->publishList->template_update_code !== $dist->publishList->template_local_code) {
  33. // dd('update template');
  34. // 更新模板
  35. TemplateUpdater::updateTemplates($dist);
  36. // 清除缓存并重新获取
  37. SiteCache::clearDistCache($domain);
  38. $dist = SiteCache::getDist($domain);
  39. $dist = $dist ? unserialize($dist) : null;
  40. if (!$dist) {
  41. abort(404, 'site not found.');
  42. }
  43. }
  44. // 全局共享 数据
  45. app()->instance('dist', $dist);
  46. // 将找到的 dist 数据添加到请求中,方便后续使用
  47. //$request->attributes->set('dist', $dist);
  48. $menus=SiteCache::getMenu($domain,$dist->id);
  49. app()->instance('menus', $menus);
  50. return $next($request);
  51. }
  52. }