<?php 
namespace model\import;
use model\smart\smart;
/**
 * 
 */
class custChange extends smart
{
	 /**
     * 标题 (用于消息提醒)
     */
	public $title = '客户国家修正'; //固定
	public $import = null;    //固定
	public $rules = null;    //规则
	public $demoData = null;  //样例数据
	public $demoremark = null;  //样例说明
	
	public function __construct()
	{
		parent::__construct(); //执行父类
		$this->import = new \lib\import();
		
		$this->rules = [
			['key' => 'scc_AccountNumber', 'caption' => lg('客户CRM编码')],
            ['key' => 'scc_cc_code', 'caption' => lg('国家编码')]
		];

		$this->demoData = [
			
		];

		$this->demoremark = '';
	}
	


	/**处理导入
     * @param array|string $src 数组或者文件名
     * @param isInit 是否是初始化
     * @return 可返回任意值(string|array|bool)，都会到前端
     */
    public function import($src,$isInit=false) //固定
    {
		$state = $this->import->execute($src, $this->rules);
		
		//数据重复验证 - 自己
		if($state && !empty($this->import->data))
		{
			$state = !$this->import->checkRepeat([
			    ['scc_AccountNumber']
		    ]);
		}
        $custArr = [];
        $cidArr = [];
        //验证数据
        if($state && !empty($this->import->data))
        {
            //客户guid
            $accNumArr = array_column($this->import->data,'scc_AccountNumber');
            $custArr =  $this->db->select('api_crm_customer',['AccountNumber','guid'],['AccountNumber'=>$accNumArr]);
            $custArr = array_column($custArr,'guid','AccountNumber');
            //国家
            $codeArr = array_column($this->import->data,'scc_cc_code');
            $cidArr =  $this->db->select('copy_pdc_crm_country',['cc_code','cc_id'],['cc_code'=>$codeArr]);
            $cidArr = array_column($cidArr,'cc_id','cc_code');
           
            foreach ($this->import->data as &$dv) {
                if(!$custArr[$dv['scc_AccountNumber']]){
                    $state = false;
					$dv['excelInfo']['error'] = '此CRM客户编号不存在';
					$this->import->lineNum = $dv['excelInfo']['line'];
					$this->import->lastError = $dv['excelInfo']['error'];
                    continue;
                } 
                if(!$cidArr[$dv['scc_cc_code']]){
                    $state = false;
					$dv['excelInfo']['error'] = '此国家不存在';
					$this->import->lineNum = $dv['excelInfo']['line'];
					$this->import->lastError = $dv['excelInfo']['error'];
                    continue;
                } 
            }
        }
		//入库
		if($state && !empty($this->import->data))
		{
			$this->db->Begin();
            //导入前清空
			$this->db->delete('smt_customer_change',[]);

			foreach($this->import->data as $k=>$mv)
			{
                if($k > 0 && $k%1000 === 0) errorLog(__CLASS__.$this->title.':'.$k, 'import');
                
				$set = [
                    'scc_c_id'=>$custArr[$mv['scc_AccountNumber']],
                    'scc_c_country'=>$cidArr[$mv['scc_cc_code']],
					'scc_AccountNumber'=>$mv['scc_AccountNumber'],
                    'scc_cc_code'=>$mv['scc_cc_code'],
				];
                $this->db->insert('smt_customer_change', $set);
			}
			$this->db->End();
		}
        return $this->import->output(); //生成处理结果
	}
}