RegionController.php 7.2 KB
<?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 think\Db;
//星域秀场
class RegionController extends HomeBaseController
{
    private $index_limit = 16;//首页分页
    private $more_limit = 8;//更多列表分页
    public function index(){
        //星球影院
        $position['category_id'] = CityCategoryModel::xqyy;
        $field = 'id,more';
        $res_xqyy = $this->getChildArticle($position,$field,1);
        foreach($res_xqyy as &$value){
            $more = json_decode($value['more'],true);
            $value['video'] = $more['video'];
        }
        $this->assign('res_xqyy',$res_xqyy);

        //明星访谈
        $position['category_id'] = CityCategoryModel::mxft;
        $field = 'id,thumbnail avatar,full_name,position,trade,post_excerpt';
        $res_mxft = $this->getChildArticle($position,$field,1);
        $this->assign('res_mxft',$res_mxft);

        //星球故事
        $position['category_id'] = CityCategoryModel::xqgs;
        $field = 'id,thumbnail,post_excerpt,more';
        $res_xqgs = $this->getChildArticle($position,$field,$this->index_limit);
        foreach($res_xqgs as &$value){
            $more = json_decode($value['more'],true);
            $value['audio'] = $more['audio'];
        }
        $this->assign('res_xqgs',$res_xqgs);

        //星域画廊
        $position['category_id'] = CityCategoryModel::xyhl;
        $field = 'id,thumbnail';
        $res_xyhl = $this->getChildArticle($position,$field,$this->index_limit);
        $this->assign('res_xyhl',$res_xyhl);

        //独角快报
        $position['category_id'] = CityCategoryModel::djkb;
        $field = 'id,thumbnail,post_title,post_excerpt,create_time';
        $res_djkb = $this->getChildArticle($position,$field,3);
        $this->assign('res_djkb',$res_djkb);

        //独角日志
        $position['category_id'] = CityCategoryModel::djrz;
        $field = 'id,thumbnail avatar,post_title,post_excerpt,more';
        $res_djrz = $this->getChildArticle($position,$field,3);
        foreach($res_djrz as &$value){
            $more = json_decode($value['more'],true);
            if(isset($more['photos']) && !empty($more['photos'])){
                $value['thumbnail'] = $more['photos'][0]['url'];
            }else{
                $value['thumbnail'] = '';
            }
        }
        $this->assign('res_djrz',$res_djrz);

        //童趣未来
        $position['category_id'] = CityCategoryModel::tqwl;
        $field = 'id,thumbnail,post_title,post_excerpt';
        $res_tqwl = $this->getChildArticle($position,$field,$this->index_limit);
        $this->assign('res_tqwl',$res_tqwl);

        return $this->fetch();
    }

    //根据子类获取文章
    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['category_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 getChildArticlePage($position,$field,$page,$limit=''){
        $pre = CityCategoryModel::pre;
        $limit = empty($limit)?$this->more_limit:$limit;
        $post_id = Db::table($pre.'portal_category_post')
            ->whereIn('category_id',$position['category_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)
            ->page($page,$limit)
            ->order('weigh desc')
            ->select()
            ->toArray();
        return $res;
    }

    //获取城市分类
    public function getCityCategory($id){
        $city_name = Db::table('cmf_city_category')
            ->where('id',$id)
            ->field('name')
            ->find();
        return $city_name['name'];
    }

    //星球影院更多(按照城市查询)
    public function getMoreVideo(){
        $page = $this->request->param('page',1,'intval');
        $city_id = $this->request->param('city_id',1,'intval');
        $position['city_id'] = $city_id;
        $position['category_id'] = CityCategoryModel::xqyy;
        $field = 'id,post_title,framing,release_time,city_id,more';
        $star = new StarController();
        $res = $star->getChildArticlePage($position,$field,$page);
        foreach($res as &$value){
            $more = json_decode($value['more'],true);
            $value['video'] = $more['video'];
            $value['city_name'] = $this->getCityCategory($value['city_id']);
        }
        $this->assign('res',$res);
    }

    //明星访谈更多
    public function getMoreStar(){
        $page = $this->request->param('page',1,'intval');
        $position['category_id'] = CityCategoryModel::mxft;
        $field = 'id,thumbnail avatar,full_name,position,trade,post_excerpt';
        $res = $this->getChildArticlePage($position,$field,$page,5);
        $this->assign('res',$res);
    }

    //星球故事更多
    public function getMoreStory(){
        $page = $this->request->param('page',1,'intval');
        $position['category_id'] = CityCategoryModel::xqgs;
        $field = 'id,thumbnail,post_excerpt,more,create_time';
        $res = $this->getChildArticlePage($position,$field,$page);
        foreach($res as &$value){
            $more = json_decode($value['more'],true);
            $value['audio'] = $more['audio'];
        }
        $this->assign('res',$res);
    }

    //星域画廊更多
    public function getMoreGallery(){
        $page = $this->request->param('page',1,'intval');
        $position['category_id'] = CityCategoryModel::xyhl;
        $field = 'id,thumbnail';
        $res = $this->getChildArticlePage($position,$field,$page,16);
        $this->assign('res',$res);
    }

    //独角快报更多
    public function getMoreNews(){
        $page = $this->request->param('page',1,'intval');
        $position['category_id'] = CityCategoryModel::djkb;
        $field = 'id,thumbnail,post_title,post_excerpt,create_time';
        $res = $this->getChildArticlePage($position,$field,$page,6);
        $this->assign('res',$res);
    }
}