<?php
/**
  * @method 跑街令统计
  * @author soul
  * @copyright 2019/5/8
  */
class PjlTj extends PjlBase
{
	/**
	  * @method 招商栏目统计日报表生成
	  * @author soul
	  * @copyright 2020/4/30
	  * @return 
	  */
	public function zsTongji()
	{
		//查找上一次执行的最后日期
		$firstDate = '20200720';
		$res = $this->get('zs_zhaoshang_report', ['max(zsr_date) as zsr_date'], '', true);
		if(empty($res['data']['zsr_date']))
			$res = $this->get('zs_zhaoshang_show', ["min(zs_date) as zsr_date"], '', true);
		if(!empty($res['data']['zsr_date'])) 
			$firstDate = $res['data']['zsr_date'];

		$dateArr = [];
		$dateArr = array_map( function ($n) { return date('Ymd', $n);}, range(strtotime($firstDate), strtotime(date('Ymd')), 24 * 3600));
		asort($dateArr);

		foreach($dateArr as $date)
		{
			$this->PjlDb->Begin();

			//清空最后日期的数据统计
			$this->del('zs_zhaoshang_report', ' and zsr_date = '.$date);
			
			//
			$anyAddArr = [];
			
			//电话点击数
			$telArr = [];
			$where = sprintf(" and zc_date=%d and zc_type= 'tel' and zc_zsl_id > 0 GROUP BY zc_zsl_id, zsr_pid, zsr_cid", $date);
			$res = $this->get('zs_zhaoshang_click', ["zc_zsl_id, json_unquote(zc_pcts->'$.pid') as zsr_pid, json_unquote(zc_pcts->'$.cid') as zsr_cid, count(*) as count"], $where);
			foreach($res['data'] as $vs)
			{
				$telArr[$vs['zc_zsl_id'].'@'.$vs['zsr_pid'].'@'.$vs['zsr_cid']] = $vs['count'];
			}
			
			//显示数
			$where = sprintf(" and zs_date=%d and zs_zsl_id > 0 GROUP BY zs_zsl_id, zsr_pid, zsr_cid", $date);
			$res = $this->get('zs_zhaoshang_show', ["zs_zsl_id, json_unquote(zs_pcts->'$.pid') as zsr_pid, json_unquote(zs_pcts->'$.cid') as zsr_cid, count(*) as zsr_show, count(distinct zs_view_uid) as zsr_user, count(distinct zs_ip) as zsr_ip"], $where);
			foreach($res['data'] as $vs)
			{
				$anyAddArr[] = [
					'zsr_date'=>$date,	
					'zsr_zsl_id'=>$vs['zs_zsl_id'],
					'zsr_pid'=>$vs['zsr_pid'],
					'zsr_cid'=>$vs['zsr_cid'],
					'zsr_show'=>$vs['zsr_show'],
					'zsr_tel_count'=>(int)$telArr[$vs['zs_zsl_id'].'@'.$vs['zsr_pid'].'@'.$vs['zsr_cid']],
					'zsr_user'=>$vs['zsr_user'],
					'zsr_ip'=>$vs['zsr_ip'],
				];
			}
			if(!empty($anyAddArr)) $this->addAny('zs_zhaoshang_report', array_keys($anyAddArr[0]), $anyAddArr);

			//只保留最近10天的历史记录
			$delDate = date('Ymd', strtotime($date)-3600*24*10);
			$this->del('zs_zhaoshang_show', sprintf(" and zs_date <= %d", $delDate));
			$this->PjlDb->End();
		}
		return LibFc::ReturnData(true);
    }
}