<?php
class imAction extends baseAction
{
	
	function index()
	{

		LibTpl::Set('title', '聊天记录-跑街的');
		
		LibTpl::Put();
	}

	/**
	 * @method    imSearch  im 左侧搜索页面
	 * @author     廖
	 * @copyright 2018-07-09
	 */
	function imSearch()
	{
		LibTpl::Put();
	}

	/**
	 * @method    imList  im 右侧结果页面
	 * @author     廖
	 * @copyright 2018-07-09
	 */
	function imList()
	{
		$Params = MVC::$URL_PARAMS;
		$Params['user'] = [$Params['user1'],$Params['user2']];
		$Params['timeseq'] = $Params['timeseq'] ? 1 : 0;
		$where = '';
		$orderby = 'order by time desc';
		if (!empty($Params))
		{
			foreach ($Params as $key => $value) 
			{
				if ($value == '') continue;
				switch ($key) 
				{
					case 'status':
					    if(in_array($value, ['0','1']))
					    {
					    	$where .= sprintf('and readed=%s', $value);
					    }
						break;
					case 'user':
						$value = array_filter($value);
						if (count($value) > 1)
						{
							$user1 = LibFc::Escape($value[0]);
							$user2 = LibFc::Escape($value[1]);
							$where .= sprintf(" and from_uid in (select id from user where (u_name like '%%%s%%' or nick like '%%%s%%') or (u_name like '%%%s%%' or nick like '%%%s%%')) and to_uid in (select id from user where (u_name like '%%%s%%' or nick like '%%%s%%') or (u_name like '%%%s%%' or nick like '%%%s%%'))",$user1,$user1,$user2,$user2,$user1,$user1,$user2,$user2);
						} else if(count($value) == 1)
						{
							$user = LibFc::Escape(array_values($value)[0]);
							$where .= sprintf(" and (from_uid in (select id from user where u_name like '%%%s%%' or nick like '%%%s%%') or to_uid in (select id from user where u_name like '%%%s%%' or nick like '%%%s%%'))",$user,$user,$user,$user);
						}
						break;
					case 'addTime':
						$where .= sprintf(" and time >= %s",strtotime($value));
						break;
					case 'endTime':
						$where .= sprintf(" and time <= %s",strtotime($value) + 24*60*60);
						break;
					case 'content':
						$where .= sprintf(" and content like '%%%s%%'",LibFc::Escape($value));
						LibTpl::Set('keyword',$value);
						break;
					case 'Uid':
						if (LibFc::Int($value))
						{
							$where .= sprintf(" and from_uid = %s or to_uid = %s",
							$value,$value);
						}
						break;
					case 'timeseq':
						if ($value)
						{
							$orderby = 'order by time asc';
						}
						break;
				}
			}
		}

		//排序
		$perPage = isset($_COOKIE['perPage'])? $_COOKIE['perPage'] : 20;
		$nowpage = LibFc::Int($_GET['page']) ? LibFc::Int($_GET['page']) : 1;
		$ImBase = new ImBase();
		$total = $ImBase->get('msg',['count(*) as count'],$where,true);
		//分页
		$Page = LibPage::Show($total['data']['count'], $perPage);
		LibTpl::Set('Page', $Page);
		if ($total['data']['count'] > 0)
		{
			$where = sprintf('%s %s limit %s,%s',$where,$orderby,($nowpage-1)*$perPage,$perPage);
			$res = $ImBase->get('msg',['*'],$where);
			LibTpl::Set('list', $res['data']);

			//获取 user 信息
			$uIdArr = array_unique(array_merge(array_column($res['data'],'from_uid'),array_column($res['data'],'to_uid')));
			$uData = $ImBase->get('user',['id','nick'],sprintf("and id in (%s)",implode(',', $uIdArr)));
			$uData = array_column($uData['data'],'nick','id');
			LibTpl::Set('userArr', $uData);

			//是否有配件
			$proIdArr = [];
			foreach ($res['data'] as $value) 
			{
				if (preg_match('/pro_id\[\d+\]/', $value['content'],$m) > 0)
				{
					$proIdArr[$value['msgid']] = substr($m[0],7,-1);
				}
			}
			$proId = array_filter(array_unique($proIdArr));
			if (!empty($proId))
			{
				$B2cProduct = new B2cProduct();
				$res = $B2cProduct->getAnyProductInfo($proId);
				$proArr = [];
				foreach ($proIdArr as $key => $value) 
				{
					$proArr[$key] = $res['data'][$value] ? $res['data'][$value] : [];
				}
				LibTpl::Set('proArr', $proArr);
			}
		}

		LibTpl::Put();
	}

	/**
	 * @method    ajaxGetImUserInfo  ajax 获取用户nick名称
	 * @author     廖
	 * @copyright 2018-07-09
	 * @return   josn ['nick'=>xxx,...]
	 */
	function ajaxGetImUserInfo()
	{
		$Params = MVC::$URL_PARAMS;
		$val = LibFc::Escape($Params['val']);
		if (!empty($val))
		{
			$ImBase = new ImBase();
			$where = !empty($Params['val']) ? sprintf("and (nick like '%%%s%%' or u_name like '%%%s%%')",$val,$val) : '';
			$where .= sprintf('%s group by nick order by id asc',$where);
			$res = $ImBase->get('user',['nick','u_name'],$where);
			if (!empty($res['data']))
			{
				$newArr = [];
				foreach ($res['data'] as $key => $value) 
				{
					if ($value['nick'] == $value['u_name'])
					{
						$newArr[] = ['nick'=>$value['nick'],'name'=>$value['nick']];
					} else
					{
						$newArr[] = ['nick'=>$value['nick'],'name'=>$value['nick'].' [ '.$value['u_name'].' ]'];
					}
				}
			}
			LibFc::ajaxJsonEncode(['status'=>true,'data'=>$newArr]);
		}
	}

	/**
	 * [wordFilter 关键词过滤管理]
	 * @Author   Yangxing
	 * @DateTime 2020-06-10T14:43:58+0800
	 * @return   [type]                   [description]
	 */
	public function wordFilter()
	{
        LibRule::Check('AP00');
		$ypwBase = new YpwBase();
		$params = MVC::$URL_PARAMS;
		$where = '';
		if($params['word']){
			$where .= sprintf(" and word like'%%%s%%'",$params['word']);
		}
		//排序
		$perPage = isset($_COOKIE['perPage'])? $_COOKIE['perPage'] : 250;
		$nowpage = LibFc::Int($_GET['page']) ? LibFc::Int($_GET['page']) : 1;
		$ImBase = new ImBase();
		$total = $ypwBase->YpwDb->One(sprintf("select count(*) from an_filter_word where 1=1 %s",$where));
		//分页
		$Page = LibPage::Show($total, $perPage);
		LibTpl::Set('page', $Page);
		if ($total > 0)
		{
		    $orderby = 'order by CONVERT(word using gbk)';
			$where = sprintf('%s %s limit %s,%s',$where,$orderby,($nowpage-1)*$perPage,$perPage);
			$list = $ypwBase->YpwDb->Table(sprintf("select * from an_filter_word where 1=1 %s",$where));
			LibTpl::Set('list', $list);
		}
		LibTpl::Set('params',$params);
		LibTpl::Put();
	}

	/**
	 * [delWordFilter 删除或者批量删除]
	 * @Author   Yangxing
	 * @DateTime 2020-06-10T15:07:34+0800
	 * @return   [type]                   [description]
	 */
	public function delWordFilter()
	{
        LibRule::Check('AP00');
		$word = $_POST['ids'];
		if(empty($word)){
			LibFc::ajaxJsonEncode(['status' => false,'data' => '参数错误']);
		}
		$word = explode(',',$word);
		//$words = $params['word'];
		foreach ($word as $key => &$item) {
		    if(!empty($item)){
                $item = sprintf("'%s'",$item);
            }else{
		        unset($word[$key]);
            }
		}
		$baseModel = new YpwBase;
		$result = $baseModel->del("an_filter_word",sprintf(" and word in (%s)",implode(',',$word)));

        //替换文件
        $word = $baseModel->YpwDb->Table(sprintf("select * from an_filter_word"));
        if(!empty($word)){
            $word = array_values(array_column($word,'word'));
            LibFc::ArraySave($word,mvc::$cfg['ROOT_MVC'].'lib/lib/Filter.php');
        }

		LibFc::ajaxJsonEncode($result);
	}

	/**
	 * [addWordFilter 批量添加]
	 * @Author   Yangxing
	 * @DateTime 2020-06-10T15:11:15+0800
	 */
	public function addWordFilter()
	{
        LibRule::Check('AP00');
		$baseModel = new YpwBase;
        $separator = [  //分隔符
            '｜'=>'|',
            '＼'=>'\\',
            '：'=>':',
            '；'=>';',
            '”'=>'"',
            '’'=>'\'',
            '《'=>'<',
            '，'=>',',
            '》'=>'>',
            '。'=>'.',
            '？'=>'?',
            '、'=>'/'
        ];
        foreach ($separator as $index => $item)
        {
            $_POST['str'] = str_replace($index,"\n",$_POST['str']);
            $_POST['str'] = str_replace($item,"\n",$_POST['str']);
            unset($separator[$index]);
        }
        unset($item);
        $params = explode("\n",$_POST['str']);
        if(empty($params)){
            LibFc::ajaxJsonEncode(['status' => false,'data' => '敏感词分割错误']);
        }
		$word = [];
		$limit = [];
		$params = array_unique($params);
		foreach ($params as $key => $value) {
			$value = trim($value);
			if(!empty($value)){
				$word[]['word'] = $value;
				$limit[] = sprintf("'%s'",$value);
			}
		}
		$isExist = $baseModel->YpwDb->One(sprintf("select * from an_filter_word where word in (%s)",implode(',', $limit)));
		if(!empty($isExist)){
			LibFc::ajaxJsonEncode(['status' => false,'data' => $isExist.'已经存在']);
		}
		if(empty($word)){
			LibFc::ajaxJsonEncode(['status' => false,'data' => '失败']);
		}
		$result = $baseModel->addAny("an_filter_word",['word'],$word);

		//替换文件
        $word = $baseModel->YpwDb->Table(sprintf("select * from an_filter_word"));
        if(!empty($word)){
            $word = array_values(array_column($word,'word'));
            LibFc::ArraySave($word,mvc::$cfg['ROOT_MVC'].'lib/lib/Filter.php');
        }

		LibFc::ajaxJsonEncode($result);
	}
}