<?php
namespace wstmart\home\model;
/**
 * ============================================================================
 * 文章类
 */
use think\Db;
class Articles extends Base{
	/**
	 * 获取帮助左侧列表
	 */
	public function helpList(){
		$arts = cache('arts');
		if(!$arts){
			$rs = $this->alias('a')->join('article_cats ac','a.catId=ac.catId','inner')
				  ->field('a.articleId,a.catId,a.articleTitle,ac.catName')
				  ->where(['a.dataFlag'=>1,
				  	       'a.isshow'=>1,
				  		   'ac.dataFlag'=>1,
				  		   'ac.isShow'=>1,
				  		   'ac.parentId'=>7])
				  ->cache(true)
				  ->select();
			//同一分类下的文章放一起
			$catName = [];
			$arts = [];
			foreach($rs as $k=>$v){
				if(in_array($v['catName'],$catName)){
					$arts[$v['catName'].'-'.$v['catId']][] = $v;
				}else{
					$catName[] = $v['catName'];
					$arts[$v['catName'].'-'.$v['catId']][] = $v;
				}
			}
			cache('arts',$arts,86400);
		}
		return $arts;
	}
	/**
	*  根据id获取帮助文章
	*/
	public function getHelpById(){
		$id = (int)input('id');
		WSTArticleVisitorNum($id);// 统计文章访问量
		return $this->alias('a')->join('__ARTICLE_CATS__ ac','a.catId=ac.catId','inner')->where('ac.parentId=7 and  a.dataFlag=1 and a.isShow=1')->cache(true)->find($id);
	}
	/**
	*  根据id获取资讯文章
	*/
	public function getNewsById($id = 0){
		$id = $id>0?$id:(int)input('id');
		WSTArticleVisitorNum($id);// 统计文章访问量
	    return $this->alias('a')
					->field('a.*,ac.catName')
					->join('__ARTICLE_CATS__ ac','a.catId=ac.catId','inner')
					->where('a.catId<>7 and ac.parentId<>7 and a.dataFlag=1 and a.isShow=1')
					->cache(true)
					->find($id);
	}

	/**
	* 获取资讯列表【左侧分类】
	*/
	public function NewsList(){
		$list =  $this->getTree();
		foreach($list as $k=>$v){
			if(!empty($v['children'])){
				foreach($v['children'] as $k1=>$v1){
					// 二级分类下的文章总条数
					$list[$k]['children'][$k1]['newsCount'] = $this->where(['catId'=>$v1['catId'],
																	'dataFlag'=>1,'isShow'=>1])->cache(true)->count();
				}
			}
		}
		return $list;
	}

	public function getTree(){
		$artTree = cache('artTree');
		if(!$artTree){
			$data = Db::name('article_cats')->field('catName,catId,parentId')->where('parentId <> 7 and catId <> 7 and dataFlag=1 and isShow=1')->cache(true)->select();
			$artTree = $this->_getTree($data, 0);
			cache('artTree',$artTree,86400);
		}
		return $artTree;
	}
	public function _getTree($data,$parentId){
		$tree = [];
		foreach($data as $k=>$v){
			if($v['parentId']==$parentId){
				// 再找其下级分类
				$v['children'] = $this->_getTree($data,$v['catId']);
				$tree[] = $v;
			}
		}
		return $tree;
	}
	/**
	*	根据分类id获取文章列表
	*/
	public function nList(){
		$catId = (int)input('catId');
		$rs = $this->alias('a')
			  ->join('__ARTICLE_CATS__ ac','a.catId=ac.catId','inner')
			  ->field('a.*')
			  ->where(['a.catId'=>$catId,
			  	       'a.dataFlag'=>1,
			  	       'a.isShow'=>1,
			  		   'ac.dataFlag'=>1,
			  		   'ac.isShow'=>1,
			  		   'ac.parentId'=>['<>',7],
			  		   ])
			  ->cache(true)
			  ->paginate();
		return $rs;
	}
	/**
	* 面包屑导航
	*/
	public function bcNav(){
		$catId = (int)input('catId'); //分类id
		$artId = (int)input('id'); 	//文章id
		$data = Db::name('article_cats')->field('catId,parentId,catName')->cache(true)->select();
		if($artId){
			$catId = $this->where('articleId',$artId)->value('catId');
		}
		$bcNav = $this->getParents($data,$catId,$isClear=true);
		return $bcNav;

	}
	/**
	* 获取父级分类
	*/
	public function getParents($data, $catId,$isClear=false){
		static $bcNav = [];
		if($isClear)
			$bcNav = [];
		foreach($data as $k=>$v){
			if($catId == $v['catId']){
				if($catId!=0){
					$this->getParents($data, $v['parentId']);
					$bcNav[] = $v;
				}
			}
		}
		return $bcNav;
	}

	/**
	*  记录解决情况
	*/
	public function recordSolve(){
		$articleId =  (int)input('id');
		$status =  (int)input('status');
		if($status==1){
			$rs = $this->where('articleId',$articleId)->setInc('solve');
		}else{
			$rs = $this->where('articleId',$articleId)->setInc('unsolve');
		}
		if($rs!==false){
			return WSTReturn('操作成功',1);
		}else{
			return WSTReturn('操作失败',-1);
		}
	}

	/**
	* 获取资讯中心的子集分类id
	*/
	public function getChildIds(){
		$ids = [];
		$data = Db::name('article_cats')->cache(true)->select();
			foreach($data as $k=>$v){
				if($v['parentId']!=7 && $v['catId']!=7 && $v['parentId']!=0 ){
					$ids[] = $v['catId'];
				}
			}
		return $ids;
	}

	/**
	* 获取咨询中中心所有文章
	*/
	public function getArticles(){
		// 获取咨询中心下的所有分类id
		$ids = $this->getChildIds();
		$rs = $this->alias('a')
			  ->field('a.*')
			  ->join('__ARTICLE_CATS__ ac','a.catId=ac.catId','inner')
			  ->where(['a.catId'=>['in',$ids],
			  	       'a.dataFlag'=>1,
			  	       'a.isShow'=>1,
			  		   'ac.dataFlag'=>1,
			  		   'ac.isShow'=>1,
			  		   'ac.parentId'=>['<>',7],
			  		   ])
			  ->distinct(true)
			  ->cache(true)
			  ->paginate(15);
		return $rs;
	}

	/**
	 * 获取指定分类下的文章
	 */
	public function getArticlesByCat($catId){
        $ids = $this->getChildIds();
		$rs = $this->alias('a')
			  ->field('a.*')
			  ->join('__ARTICLE_CATS__ ac','a.catId=ac.catId','inner')
			  ->where(['a.catId'=>['in',$ids],
			  	       'a.dataFlag'=>1,
			  	       'a.isShow'=>1,
			  		   'ac.dataFlag'=>1,
			  		   'ac.isShow'=>1,
			  		   'ac.parentId'=>['<>',7],
			  		   ])
			  ->distinct(true)
			  ->cache(true)
			  ->select();
	    $data = [];
		if(!empty($rs)){
			foreach($rs as $key =>$v){
                $data[$v['articleId']] = $v;
			}
		}
		return $data;
	}
}