* @Date: 2021-12-06 16:04:50 * @LastEditTime: 2022-08-15 13:30:05 * @LastEditors: TaoLer * @Description: 前端基础控制器设置 * @FilePath: \TaoLer\app\common\controller\BaseController.php * Copyright (c) 2020~2022 https://www.aieok.com All rights reserved. */ declare (strict_types = 1); namespace app\common\controller; use think\facade\Request; use think\facade\View; use think\facade\Db; use think\facade\Session; use think\facade\Cache; use app\facade\Article; use app\BaseController as BaseCtrl; use app\common\model\Cate; /** * 控制器基础类 */ class BaseController extends BaseCtrl { protected $uid = ''; /** * 初始化系统,导航,用户 */ protected function initialize() { $this->uid = Session::get('user_id'); //系统配置 $this->showSystem(); //变量赋给模板 View::assign([ //显示分类导航 'cateList' => $this->showNav(), //显示子分类导航 'subcatelist' => $this->showSubnav(), //当前登录用户 'user' => $this->showUser($this->uid), //多站点 'stationList' => $this->getStationList(), // 当前站点 'city' => input('city') ?: Db::name('station')->where('master',1)->value('city_ename') ]); } //判断是否已登录? protected function isLogged() { if(Session::has('user_id')){ $this->success('您已登录','/index/index/index'); } } //判断是否需要登录? protected function isLogin() { if(!Session::has('user_id')){ $this->error('请登录','/index/user/login'); } } // 显示导航nav protected function showNav() { $appname = app('http')->getName(); //1.查询分类表获取所有分类 // $cateList = Db::name('cate')->where(['status'=>1,'delete_time'=>0, 'appname' => $appname])->cache('catename' . $appname,3600)->select()->toArray(); $cate = new Cate(); $cateList = $cate->menu(); return getTree($cateList); } // 显示子导航subnav protected function showSubnav() { // dump($this->showNav()); //1.查询父分类id $pCate = Db::name('cate')->field('id,pid,ename,catename,is_hot')->where(['ename'=>input('ename'),'status'=>1,'delete_time'=>0])->find(); if(empty($pCate)) { // 没有点击任何分类,点击首页获取全部分类信息 $subCateList = $this->showNav(); } else { // 点击分类,获取子分类信息 $parentId = $pCate['id']; $subCate = Db::name('cate')->field('id,ename,catename,is_hot,pid')->where(['pid'=>$parentId,'status'=>1,'delete_time'=>0])->select()->toArray(); if(!empty($subCate)) { // 有子分类 $subCateList = array2tree($subCate); } else { //无子分类 if($pCate['pid'] == 0) { //一级菜单 $subCateList[] = $pCate; } else { //子菜单下如果无子菜单,则显示全部兄弟分类 $parament = Db::name('cate')->field('id,ename,catename,is_hot,pid')->where(['pid'=>$pCate['pid'],'status'=>1,'delete_time'=>0])->order(['sort' => 'asc'])->select()->toArray(); $subCateList = array2tree($parament); } } } return $subCateList; } //显示当前登录用户 protected function showUser($id) { $user = Cache::get('user'.$id); if(!$user){ //1.查询用户 $user = Db::name('user')->field('id,name,nickname,user_img,sex,area_id,auth,city,email,active,sign,point,vip,create_time')->find($id); Cache::tag('user')->set('user'.$id,$user,600); } return $user; } //热门标签 protected function getHotTag() { //热门标签 //return Article::getHotTags(); //转换为字符串 // $tagStr = implode(",",$tags); //转换为数组并去重 // return array_unique(explode(",",$tagStr)); $allTags = Db::name('tag')->field('name,ename')->select(); $tagHot = []; foreach($allTags as $v) { $tagHot[] = ['name'=>$v['name'],'url'=> (string) url('tag_list',['ename'=>$v['ename']])]; } return $tagHot; } //显示网站设置 protected function showSystem() { //1.查询分类表获取所有分类 $sysInfo = $this->getSystem(); $slider = new \app\common\model\Slider(); //头部链接 $head_links = $slider->getSliderList(10); //页脚链接 $foot_links = $slider->getSliderList(11); //友情链接 $friend_links = $slider->getSliderList(9); //获取热门标签 $hotTag = $this->getHotTag(); $assign = [ 'sysInfo' => $sysInfo, 'headlinks' => $head_links, 'footlinks' => $foot_links, 'flinks' => $friend_links, 'hotTag' => $hotTag, 'host' => Request::domain() . '/' ]; View::assign($assign); return $sysInfo; } // 多站点 protected function getStationList() { return $stationList = Db::name('station')->select()->toArray(); } // protected function getCity($cityname) { return Db::name('station')->field('city_name,city_ename')->where('city_ename', $cityname)->find(); } }