ShopFrontendRoute.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * Name: 芸众商城系统
  5. * Author: 广州市芸众信息科技有限公司
  6. * Profile: 广州市芸众信息科技有限公司位于国际商贸中心的广州,专注于移动电子商务生态系统打造,拥有芸众社交电商系统、区块链数字资产管理系统、供应链管理系统、电子合同等产品/服务。官网 :www.yunzmall.com www.yunzshop.com
  7. * Date: 2021/8/20
  8. * Time: 14:24
  9. */
  10. namespace app\common\route;
  11. use app\common\exceptions\AppException;
  12. use app\common\exceptions\UniAccountNotFoundException;
  13. use app\common\middleware\BasicInformation;
  14. use Illuminate\Support\Str;
  15. class ShopFrontendRoute extends AbstractShopRoute
  16. {
  17. public $namespace = 'app\\frontend';
  18. protected $middleware = [BasicInformation::class];
  19. public function __construct($path)
  20. {
  21. parent::__construct($path);
  22. $shop = \Setting::get('shop.shop');
  23. if ($shop['close'] == 1) {
  24. throw new AppException('站点已关闭', -1);
  25. }
  26. }
  27. public function shopMatch($routes, $first)
  28. {
  29. $namespace = $this->namespace;
  30. $class_name = '';
  31. $action = '';
  32. if (class_exists($namespace.'\\controllers\\'.ucfirst(Str::camel($first)).'Controller')) {
  33. $class_name = $namespace.'\\controllers\\'.ucfirst(Str::camel($first)).'Controller';
  34. $action = array_shift($routes);
  35. } else {
  36. $namespace .= '\\modules\\'.$first;
  37. $namespace_module = $namespace;
  38. foreach ($routes as $route) {
  39. if ($class_name) {
  40. $action = $route;
  41. break;
  42. }
  43. $controller = ucfirst(Str::camel($route)).'Controller';
  44. if (class_exists($namespace.'\\controllers\\'.$controller)) {
  45. $class_name = $namespace.'\\controllers\\'.$controller;
  46. } elseif (class_exists($namespace_module.'\\controllers\\'.$controller)) {
  47. $class_name = $namespace_module.'\\controllers\\'.$controller;
  48. } else {
  49. $namespace .= '\\'.$route;
  50. $namespace_module .= '\\modules\\'.$route;
  51. }
  52. }
  53. }
  54. return [$class_name,$action];
  55. }
  56. }