<?php
namespace wstmart\app\model;
use wstmart\common\model\Tags as T;
use think\Db;
/**
 * ============================================================================
 * 默认类
 */
class Index extends Base{
	/**
	 * 楼层
	 */
	public function pageQuery(){
		$limit = (int)input('post.currPage');//楼层页码
		if($limit>9)return;
		$cacheData = cache('MO_CATS_ADS'.$limit);
		if($cacheData)return $cacheData;
		$rs = Db::name('goods_cats')->where(['dataFlag'=>1,'isShow'=>1,'parentId'=>0,'isFloor'=>1])->field('catId,catName')->order('catSort asc')->limit($limit,1)->select();//按设定排序获取分类名称,异步下拉加载,传输楼层的层楼
		if($rs){
			$rs= $rs[0];//用select就选第一个,其实可以改成find
			$t = new T();
			$rs['ads'] = $t->listAds('mo-ads-'.$limit,'1');//获取手机版楼层页面的广告图
			$rs['goods'] = Db::name('goods')->alias('g')->join('__RECOMMENDS__ r','g.goodsId=r.dataId')
			->where(['r.goodsCatId'=>$rs['catId'],'g.isSale'=>1,'g.dataFlag'=>1,'g.goodsStatus'=>1,'r.dataSrc'=>0,'r.dataType'=>1])
			->field('g.goodsId,g.goodsName,g.goodsImg,g.shopPrice,g.saleNum')->order('r.dataSort asc')->limit(6)->select();
			if(empty($rs['goods'])){
				$rs['goods'] = Db::name('goods')->alias('g')
				->where(['g.goodsCatIdPath'=>['like',$rs['catId'].'_%'],'g.isSale'=>1,'g.dataFlag'=>1,'g.goodsStatus'=>1,'g.isHot'=>1])
				->field('g.goodsId,g.goodsName,g.goodsImg,g.shopPrice,g.saleNum')
				->order('saleNum desc,goodsId asc')->limit(6)->select();
			}
			$rs['currPage'] = $limit;
		}
		cache('MO_CATS_ADS'.$limit,$rs,86400);
		return $rs;
	}
	/**
	 * 猜你喜欢
	 */
	public function guess_like(){
		$userId=(int)session('WST_USER.userId');
		//$userId=50;
		$page = (int)input('post.page/d');		
		$cacheData = cache('APP_CATS_LIKE_'.$page.'_'.$userId);
		if($cacheData)return $cacheData;
		$pagesize = input('pagesize/d');
		$childId=[];
		$parentId=[];
		//$goods_result["Rows"]= '';//Db::name('goods')->alias('g')->join('__RECOMMENDS__ r','g.goodsId=r.dataId')
			//->where(['g.isSale'=>1,'g.dataFlag'=>1,'g.goodsStatus'=>1,'r.dataSrc'=>0,'r.dataType'=>1])
			//->field('g.goodsId,g.goodsName,g.goodsImg,g.shopPrice,g.saleNum')->order('rand()')->paginate($pagesize)->toArray();
		//用户登录状态
			// if($userId){
			// 	//查找登录账号浏览过的记录
			// 	$goods_ids=db('page_view')->where('userId',$userId)->field('count(goodsId)num,goodsId')
			// 	->group('goodsId')->order('num desc')->limit('18')->select();	
			// 	if($goods_ids){
			// 		foreach($goods_ids as $key=>$value){
			// 			$childId[]=$value['goodsId'];
			// 		}      
			// 		//根据查找到的商品分类,寻找最顶级商品分类
			// 		$goods_parents=$this->getParentIs($childId);
			// 		foreach($goods_parents as $k=>$v){
			// 			$parentId[]=$v;
			// 		}
			// 	}
				
			// }
		//用户未登录或顶级商品分类过少时进行全表查询
		if(!$userId || count($parentId)<3){
			
			$goods_ids=db('page_view')->where('1=1')->field('count(goodsId)num,goodsId')
			->group('goodsId')->order('num desc,id desc')->limit('18')->select();
			foreach($goods_ids as $key=>$value){
				$childId[]=$value['goodsId'];
			}      
			////根据查找到的商品分类,寻找最顶级商品分类
			$goods_parents=$this->getParentIs($childId);
			foreach($goods_parents as $k=>$v){
				$parentId[]=$v;
			}
		}	
		//根据父级分类查找所有子级商品
			$goods_child=$this->getChild('',$parentId);
			$pagesize = input('pagesize/d');
			//展现顶级分类下所有子级分类的商品
			$goods_result=db('goods')->whereIn('goodsCatId',$goods_child)->order('visitNum desc')
			->where(['isSale'=>1,'dataFlag'=>1,'goodsStatus'=>1,'isHot'=>1])
			->field('goodsId,goodsName,goodsImg,shopPrice,saleNum')
			->paginate($pagesize)->toArray();
		// if(empty($goods_result["Rows"])){
		// 	$goods_result = Db::name('goods')->alias('g')
		// 	->where(['g.isSale'=>1,'g.dataFlag'=>1,'g.goodsStatus'=>1,'g.isHot'=>1])
		// 	->field('g.goodsId,g.goodsName,g.goodsImg,g.shopPrice,g.saleNum')
		// 	->order('rand()')->paginate($pagesize)->toArray();
		// }

		cache('APP_CATS_LIKE_'.$page.'_'.$userId,$goods_result,3600);
		return $goods_result;
	}
	/**
	 * 热卖推荐
	 */
	public function getHotGoods(){
		$page = (int)input('page',1);
		$cacheData = cache('QLG_HOT_GOODS_'.$page);
		if($cacheData)return $cacheData;
		$rs = Db::name('goods')
			->where(['isSale'=>1,'dataFlag'=>1,'goodsStatus'=>1])
			->field('goodsId,goodsName,goodsImg,shopPrice,saleNum,discountRate')
			->order('discountRate DESC,goodsId DESC')
			->paginate(input('pageSize/d',10))->toArray();
		cache('QLG_HOT_GOODS_'.$page,$rs,3600);
		return $rs;
	}
	/**
	 * 迭代获取下级
	 * 获取一个分类下的所有子级分类id
	 */
	public function getChild($data,$pid){
		if(!$pid){
			return;
		}
		$childId = db('goods_cats')->where("dataFlag=1")->whereIn('parentId',$pid)->field('catId,parentId')->select();
		//获取该分类id下的所有子级分类id
		foreach($childId as $key=>$value){
			$child[]=$value['catId'];
		}
		static $ids = array();
		foreach($childId as $k=>$v){
			//dump($childId);
			$ids[] = $v['catId'];//将找到的下级分类id放入静态数组
				//再找下当前id是否还存在下级id
			$this->getChild($childId, $v['catId']);
		}
			return $ids;
	}
	/**
	 * 根据子分类获取其父级分类
	 */
	public function getParentIs($id,$data = array()){
		$data[] = $id;
		$parentId = db('goods_cats')->where("dataFlag=1")->whereIn('catId',$id)->field('parentId')->select();
		foreach($parentId as $key=>$value){
			$parent[]=$value['parentId'];
		}
		
		if(!isset($parent)){
			krsort($data);
			//判断是否有值为0的数组元素;
			foreach ($data as $k => $v) {
				foreach ($v as $key => $value) {
					if(!$value){
					unset($v[$key]);
					}
				}
				if(!$v){
					unset($data[$k]);
				}
			}
			$da=array_unique(current($data));
			return $da;
		}else{
			return $this->getParentIs($parent,$data);
		}
	}
	//获取所有小广告位
	public function getIndexAds(){
		$cacheData = cache('APP_CATS_ADS');
		if($cacheData)return $cacheData;
		$where['positionCode'] = ['LIKE','%mo-ads-index-%'];
		$where['positionType'] = 3;
		$where['dataFlag'] = 1;
		$positions_list = Db::name('ad_positions')->where($where)->field('positionId,positionName')->cache(true,86400)->select();
		unset($where['positionCode'] );
		$date = date('Y-m-d');
		$where['adStartDate'] = ['<=',$date];
		$where['adEndDate'] = ['>=',$date];
		$list=[];
		foreach($positions_list as &$v){
			$where['adPositionId'] = $v['positionId'];
			$list[$v['positionId']]['name'] = $v['positionName'];
			$ads_list = Db::name('ads')->where($where)->field('adFile,adURL,targetType')->cache(true,86400)->select();
			$list[$v['positionId']]['list'] = $ads_list;			
		}
		cache('APP_CATS_ADS',$list,86400);
		return $list;
	}
	//获取首页轮播图
	public function getIndexTopImg(){
		$cacheData = cache('APP_TOP_IMG');
		if($cacheData)return $cacheData;
		$ads_list=[];
		$ads_list = listAds('mo-ads-index',9,86400);
		cache('APP_TOP_IMG',$ads_list,86400);
		return $ads_list;
	}
	//获取首页横图
	public function getIndexCrossImg(){
		$cacheData = cache('APP_CROSS_IMG');
		if($cacheData)return $cacheData;
		$ads_list=[];
		$ads_list['cross_top'] = listAds('mo-index-cross-top',6,86400);
		$ads_list['cross_bottom'] = listAds('mo-index-cross-down',6,86400);
		cache('APP_CROSS_IMG',$ads_list,86400);
		return $ads_list;
	}
	/**
	* 获取系统消息
	*/
	function getSysMsg($msg='',$order=''){
		$data = [];
		$userId = (int)session('WST_USER.userId');
		if($msg!=''){
			$data['message']['num'] = Db::name('messages')->where(['receiveUserId'=>$userId,'msgStatus'=>0,'dataFlag'=>1])->count();
		}
		if($order!=''){
			$data['order']['waitPay'] = Db::name('orders')->where(['userId'=>$userId,'orderStatus'=>-2,'dataFlag'=>1])->count();
			$data['order']['waitSend'] = Db::name('orders')->where(['userId'=>$userId,'orderStatus'=>0,'dataFlag'=>1])->count();
			$data['order']['waitReceive'] = Db::name('orders')->where(['userId'=>$userId,'orderStatus'=>1,'dataFlag'=>1])->count();
			$data['order']['waitAppraise'] = Db::name('orders')->where(['userId'=>$userId,'orderStatus'=>2,'isAppraise'=>0,'dataFlag'=>1])->count();
			$data['order']['cancelNum'] = 0;//Db::name('orders')->where('userId='.$userId.' AND (orderStatus=-1 OR orderStatus=-3)')->count();

		}
		return $data;
	}
}