subsiteRepository = $subsiteRepository; $this->tplRepository = $tplRepository; } public function getSiteId() { $site_module = explode('.', request()->server('HTTP_HOST'))[0]; $subsite_array = $this->getSiteDomain(); if (!empty($subsite_array[$site_module])) { return $subsite_array[$site_module]; } return 0; /*$main_domain_lenth=count(explode('.', config('app.url'))); $host_array=explode('.', request()->getHost()); //域名最多两级且最后一级只能是www: www.aa.bb.cc.91caiqing.com(主域名就是bb.cc.91caiqing.com) if (count($host_array)>($main_domain_lenth + 2)) { return false; } if (count($host_array) == ($main_domain_lenth + 2) && $host_array[0] != 'www') { return false; } //主站 if (count($host_array) == $main_domain_lenth || (count($host_array) == ($main_domain_lenth + 1) && $host_array[0] == 'www')) { return 0; } //分站 $subsite_array=$this->getSiteDomain(); if (count($host_array) == ($main_domain_lenth + 2) && $host_array[0] == 'www') { $sub_domain=$host_array[1]; return isset($subsite_array[$sub_domain])?$subsite_array[$sub_domain]:false; } $sub_domain=$host_array[0]; return isset($subsite_array[$sub_domain])?$subsite_array[$sub_domain]:0;*/ } public function getSubsite($user) { $default = ['id' => 0, 'sitename' => '总站', 'domain' => config('app.url')]; $subsite = $this->subsiteRepository->getSubsite(); if ($user->subsite_id == 0) { return $subsite; } else { foreach ($subsite as $key => $val) { if ($user->subsite_id == $val['id']) { unset($subsite[$key]); } } array_unshift($subsite, $default); return $subsite; } } public function getAllSubsite() { $subsites = Cache::get('subsites_list'); if (is_null($subsites)) { $subsites[0] = ['id' => 0, 'sitename' => '总站', 'domain' => config('app.url')]; $list = $this->subsiteRepository->getSubsite(); if (!$list) { return null; } foreach ($list as $value) { $subsites[$value['id']] = $value; } Cache::forever('subsites_list', $subsites); } return $subsites; } public function getSubsiteDomain($subsite_id = 0) { $app_url = config('app.url'); if ($subsite_id > 0) { $subsites = $this->getAllSubsite(); $subsite = $subsites[$subsite_id]; $host = explode('.', parse_url($app_url)['host']); $app_url = str_replace('://' . $host[0], '://' . $subsite['domain'], $app_url); } if (!empty(request()->route()) && is_mobile_route()) { $app_url .= "/mobile"; } return $app_url; } public function getSiteDomain() { $sub_array = Cache::get('subsites_domain'); if (is_null($sub_array)) { $sub_array = $this->subsiteRepository->getSiteDomain(); Cache::forever('subsites_domain', $sub_array); } return $sub_array; } public function getSubsiteConfig($key, $default = null, $subsite_id = null) { $subsite_id = is_null($subsite_id) ? $this->getSiteId() : $subsite_id; if ($subsite_id == 0) { return config($key, $default); } else { $key_array = explode('.', $key); $subsite_array = $this->getAllSubsite(); $value = array_get($subsite_array[$subsite_id], end($key_array), $default); if (empty($value) && !is_numeric($value)) { return config($key, $default); } return $value; } } //获取模板名称 public function getSubsiteTpl($subsite_id) { $subsites = $this->getAllSubsite(); if ($subsite_id) { if (array_has($subsites, $subsite_id)) { $sub_info = $subsites[$subsite_id]; if (array_has($sub_info, 'tpl')) { $tpl_id = $sub_info['tpl']; $tpl_where = ['id' => $tpl_id, 'display' => 1]; $tpl_info = $this->tplRepository->getDefaultTpl($tpl_where); if ($tpl_info) { return $tpl_info->blade_name; } } } } return ''; } }