LoadDistData.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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(!empty($dist?->publishList?->template_update_code)) {
  32. if (
  33. !$dist?->publishList?->template_local_code ||
  34. $dist?->publishList?->template_update_code !== $dist?->publishList?->template_local_code
  35. ) {
  36. // dd('update template');
  37. // 更新模板
  38. TemplateUpdater::updateTemplates($dist);
  39. // 清除缓存并重新获取
  40. SiteCache::clearDistCache($domain);
  41. $dist = SiteCache::getDist($domain);
  42. $dist = $dist ? unserialize($dist) : null;
  43. if (!$dist) {
  44. abort(404, 'site not found.');
  45. }
  46. }
  47. }
  48. //补充domain
  49. $dist->domain=$domain;
  50. // 全局共享 数据
  51. app()->instance('dist', $dist);
  52. // 将找到的 dist 数据添加到请求中,方便后续使用
  53. //$request->attributes->set('dist', $dist);
  54. $menus_header=SiteCache::getMenu($domain,0,$dist->id);
  55. $menus_footer=SiteCache::getMenu($domain,1,$dist->id);
  56. app()->instance('menus_header', $menus_header);// 头部菜单
  57. app()->instance('menus_footer', $menus_footer);// 底部菜单
  58. return $next($request);
  59. }
  60. }