<?php // +---------------------------------------------------------------------- // | ThinkCMF [ WE CAN DO IT MORE SIMPLE ] // +---------------------------------------------------------------------- // | Copyright (c) 2013-2019 http://www.thinkcmf.com All rights reserved. // +---------------------------------------------------------------------- // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) // +---------------------------------------------------------------------- // | Author: 老猫 <thinkcmf@126.com> // +---------------------------------------------------------------------- namespace app\portal\controller; use cmf\controller\HomeBaseController; use app\portal\model\CityCategoryModel; use app\portal\model\PortalPostModel; use think\Db; class IndexController extends HomeBaseController { public function index(){ $serverModel = new ServerController(); //统计访问量 $serverModel->statistics(); //banner轮播图 // $coverImg = cache('coverImg'); // if(!$coverImg){ $coverImg = $this->getCoverImg(CityCategoryModel::indexImg,10); // cache('coverImg',$coverImg); // } $this->assign('coverImg',$coverImg); //星球奇境,城市分类 // $city = cache('res_city'); // if(!$city){ $city[1]['id'] = CityCategoryModel::asia; $city[2]['id'] = CityCategoryModel::europe; $city[3]['id'] = CityCategoryModel::africa; $city[4]['id'] = CityCategoryModel::oceania; $city[5]['id'] = CityCategoryModel::north; $city[6]['id'] = CityCategoryModel::south; $city[20]['id'] = CityCategoryModel::antarctica; $city[43]['id'] = CityCategoryModel::arctic; $city_name = $this->getCity(array_column($city,'id')); foreach($city as &$value){ $k = 0; foreach($city_name as $value1){ $k += 0; if($value['id'] == $value1['pid']){ $value['name'][$k]['name'] = $value1['name']; $value['name'][$k]['id'] = $value1['id']; $k++; } } } // cache('res_city', $city); // } $this->assign('res_city',$city); //星享体验 // $month = cache('res_month'); // if(!$month){ $res_month = $this->getMonthArticle(); $month = []; foreach($res_month['data'] as &$value){ $month[$value['month']]['id'] = $value['id']; $month[$value['month']]['month'] = $value['month']; $month[$value['month']]['post_title'] = $value['post_title']; $month[$value['month']]['index_thumbnail'] = $value['index_thumbnail']; foreach($res_month['category_name'] as $value1){ if($value['id'] == $value1['post_id']){ $month[$value['month']]['category_name'] = $value1['name']; } } } // cache('res_month', $month); // } $this->assign('res_month',$month); //星域秀场->首页宣传 // $res_xqyy = cache('res_xqyy'); // if(!$res_xqyy){ // $position = CityCategoryModel::xqyy; // $field = 'id,more,index_thumbnail'; // $res_xqyy = $this->getVideoIndex($position,$field,1); // foreach($res_xqyy as &$value){ // $video = json_decode($value['more'],true); // $value['video'] = $video['video']; // } $position = CityCategoryModel::xqyy; $city_id = CityCategoryModel::syxc; $field = 'id,more,index_thumbnail'; $res_xqyy = $this->getVideo($position,$city_id,$field,1,1); foreach($res_xqyy as &$value){ $video = json_decode($value['more'],true); $value['video'] = $video['video']; } if($res_xqyy){ $res_xqyy = $res_xqyy[0]; } // cache('res_xqyy', $res_xqyy); // } $this->assign('res_xqyy',$res_xqyy); //推广视频 // $res_djxq = cache('res_djxq'); // if(!$res_djxq){ $position = CityCategoryModel::xqyy; $city_id = CityCategoryModel::djxq; $field = 'id,more,index_thumbnail'; $res_djxq = $this->getVideo($position,$city_id,$field,1,1); foreach($res_djxq as &$value){ $video = json_decode($value['more'],true); $value['video'] = $video['video']; } if($res_djxq){ $res_djxq = $res_djxq[0]; } // cache('res_djxq', $res_djxq); // } $this->assign('res_djxq',$res_djxq); //星域秀场->明星访谈 // $res_mxft = cache('res_mxft'); // if(!$res_mxft){ $position = CityCategoryModel::mxft; $field = 'id,full_name,position,trade,post_excerpt,thumbnail avatar'; $res_mxft = $this->getChildArticle($position,$field,1); if($res_mxft){ $res_mxft = $res_mxft[0]; } // cache('res_mxft',$res_mxft); // } $this->assign('res_mxft',$res_mxft); //星域秀场->星域画廊 // $res_xyhl = cache('res_xyhl'); // if(!$res_xyhl){ $position = CityCategoryModel::xyhl; $field = 'id,thumbnail'; $res_xyhl = $this->getChildArticle($position,$field,4); // cache('res_xyhl',$res_xyhl); // } $this->assign('res_xyhl',$res_xyhl); //星探推荐 // $res_xttj = cache('res_xttj'); // if(!$res_xttj){ $position = CityCategoryModel::xttj; $field = 'id,post_title,price,index_thumbnail,place'; $res_xttj = $this->getParentArticle($position,$field,4); // cache('res_xttj',$res_xttj); // } $this->assign('res_xttj',$res_xttj); //星际活动 // $res_xjhd = cache('res_xjhd'); // if(!$res_xjhd){ $position = CityCategoryModel::xjhd; $field = 'id,post_title,thumbnail'; $res_xjhd = $this->getParentArticle($position,$field,2); // cache('res_xjhd',$res_xjhd); // } $this->assign('res_xjhd',$res_xjhd); return $this->fetch(); } //根据父类查询文章 public function getParentArticle($position,$field,$limit = ''){ $pre = CityCategoryModel::pre; $limit = empty($limit)?0:$limit; $category_id = Db::table($pre.'portal_category') ->where('parent_id',$position) ->field('id') ->select() ->toArray(); $c_id = array_column($category_id,'id'); //查询文章id $post_id = Db::table($pre.'portal_category_post') ->whereIn('category_id',$c_id) ->field('post_id') ->select() ->toArray(); $post_id = array_column($post_id,'post_id'); //查询文章 $res = Db::table($pre.'portal_post') ->whereIn('id',$post_id) ->where('delete_time', 0) ->field($field) ->limit($limit) ->order('weigh desc') ->select() ->toArray(); return $res; } //根据子类获取文章 public function getChildArticle($position,$field,$limit=''){ $pre = CityCategoryModel::pre; $limit = empty($limit)?0:$limit; $post_id = Db::table($pre.'portal_category_post') ->whereIn('category_id',$position) ->field('post_id') ->select() ->toArray(); $post_id = array_column($post_id,'post_id'); //查询文章 $res = Db::table($pre.'portal_post') ->whereIn('id',$post_id) ->where('delete_time', 0) ->field($field) ->limit($limit) ->order('weigh desc') ->select() ->toArray(); return $res; } //获取显示首页视频 public function getVideoIndex($position,$field,$limit=''){ $pre = CityCategoryModel::pre; $limit = empty($limit)?0:$limit; $post_id = Db::table($pre.'portal_category_post') ->whereIn('category_id',$position) ->field('post_id') ->select() ->toArray(); $post_id = array_column($post_id,'post_id'); //查询文章 $res = Db::table($pre.'portal_post') ->whereIn('id',$post_id) ->where(['delete_time'=>0,'is_show'=>1]) ->field($field) ->limit($limit) ->order('weigh desc') ->select() ->toArray(); return $res; } //获取推荐视频 public function getVideo($position,$city_id,$field,$limit='',$extension=''){ $pre = CityCategoryModel::pre; $limit = empty($limit)?0:$limit; $post_id = Db::table($pre.'portal_category_post') ->whereIn('category_id',$position) ->field('post_id') ->select() ->toArray(); $post_id = array_column($post_id,'post_id'); //查询文章 if(!empty($extension)){ $where = ['city_id'=>$city_id,'is_show'=>1]; }else{ $where = ['city_id'=>$city_id]; } $res = Db::table($pre.'portal_post') ->whereIn('id',$post_id) ->where($where) ->where('delete_time', 0) ->field($field) ->limit($limit) ->order('weigh desc') ->select() ->toArray(); return $res; } //获取各洲对应的城市 private function getCity($city_ids){ $pre = CityCategoryModel::pre; $res = Db::table($pre.'city_category') ->whereIn('pid',$city_ids) ->where('is_show',1) ->where('delete_time', 0) ->field('id,pid,name') ->order('weigh desc') ->select() ->toArray(); return $res; } //获取封面图 public function getCoverImg($type,$limit){ $res = Db::name('image') ->where(['type'=>$type]) ->field('id,image') ->limit($limit) ->order('weigh desc') ->select() ->toArray(); return $res; } //根据月份查询文章(星享体验) private function getMonthArticle(){ $position = CityCategoryModel::xxty; $pre = CityCategoryModel::pre; $category_id = Db::table($pre.'portal_category') ->where('parent_id',$position) ->field('id') ->select() ->toArray(); $c_id = array_column($category_id,'id'); //查询文章 $res = Db::name('portal_post') ->alias('p') ->join('portal_category_post c','p.id = c.post_id','LEFT') ->whereIn('c.category_id',$c_id) ->where('p.is_show',1) ->where('p.delete_time', 0) ->field('p.id,p.month,p.post_title,p.index_thumbnail') ->order('weigh desc') ->group('month') ->select() ->toArray(); $arr = []; if($res){ $post_ids = array_column($res,'id'); $category_name = Db::name('portal_category_post') ->alias('c') ->join('portal_category p','c.category_id = p.id','LEFT') ->whereIn('post_id', $post_ids) ->field('c.post_id,p.name') ->select() ->toArray(); $arr['data'] = $res; $arr['category_name'] = $category_name; } return $arr; } //关于我们 public function aboutUs(){ $res = Db::name('about_us')->where('id',1)->find(); $contentModel = new PortalPostModel(); $res['content'] = $contentModel->getPostContentAttr($res['content']); $this->assign('res',$res); return $this->fetch(); } }