| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 | <?php defined('BASEPATH') OR exit('No direct script access allowed');class Webhook extends Start_Controller {    public function __construct(){		parent::__construct();        $this->load->library('session');        $this->load->_model('Model_fullorder','fullorder');		$this->load->_model('Model_fullordertt','fullordertt');		$this->load->_model('Model_fullordersmt','fullordersmt');		$this->load->_model('Model_als','als');		$this->load->_model('Model_notice','notice');		$this->load->_model('Model_express','express');		$this->load->_model('Model_shop','shop');    }    public function _remap($arg,$arg_array)    {		if($arg == '17track')        {             $this->_17track();        }		else		{			 $this->_index();		}	}		public function _17track()	{		$xq = array();		$j = file_get_contents('PHP://input');		$j = json_decode($j, true);		if(isset($j['data']) && isset($j['sign']))		{			$sh = hash("sha256",$j['event'].'/'.json_encode($j['data']).'/0811AC1711EAABB7D764D04B824F8C2D');			if($j['data']['number'] != '')			{				$f = 'fullorder';				$d = $this->fullorder->get_waybill($j['data']['number']);				if(!$d)				{					$f = 'fullordersmt';					$d = $this->fullordersmt->get_waybill($j['data']['number']);				}				if(!$d)				{					exit;				}				if($j['data']['track']['e'] == 0)//查询不到				{					$exstate = 0;//无信息				}				else if($j['data']['track']['e'] == 10)//运输途中				{					$exstate = 3;//在途中				}				else if($j['data']['track']['e'] == 20)//运输过久				{					$exstate = 3;//在途中				}				else if($j['data']['track']['e'] == 30)//到达待取				{					$exstate = 5;//派送中				}				else if($j['data']['track']['e'] == 35)//投递失败				{					$exstate = 1;//派送异常				}				else if($j['data']['track']['e'] == 40)//成功签收				{					$exstate = 6;//签收				}				else if($j['data']['track']['e'] == 50)//可能异常				{					$exstate = 1;//派送异常				}				if(isset($j['data']['track']['z1'][0]))				{				    foreach ($j['data']['track']['z1'] as $v) 				    {					    $xq .= $v['a'].' ['.$v['c'].'] '.$v['z'].'<br />';// a日期 c地址 z状态				    }				}				$this->$f->save(array('expressstate'=>$exstate,'excontent'=>$xq),$d['id']);				$time = time();				$notice = $this->notice->find_all("message = '1' and state = '1' and type = '2' and ktime < '$time' and jtime > '$time' and shop = '".$d['shop']."' and logisticstatus = '".$exstate."'");				if($notice && $d['wlyc'] == '0' && $d['wltype'] != '1' && $d['source'] != '1' && stripos($d['wlcontent'],$notice[0]['title']) === false)				{					$this->_sdfs($d,$notice[0]['id']);				}			}		}	}		public function _sdfs($fullorder,$id)//手动发送信息	{		$time = time();		$notice = $this->notice->read($id);//无条件同模板匹配		$shop = $this->shop->read($fullorder['shop']);		$express = $this->express->read($fullorder['express']);		if($notice['type'] == '1')		{			$fslx = 'tab';			$content = '自动发送';			$stripos = '1-';		}		else if ($notice['type'] == '2')		{			$fslx = 'logisticstatus';			$content = $notice['title'];			$stripos = $notice['type'].'-'.$notice[$fslx].'|';		}		if(stripos($fullorder['zdstate'],$stripos) === false && $fullorder['wltype'] == '0')//如果没发送过并且允许发送		{		    $go = $this->notice->get_god($fullorder,$shop,$express,$notice['content'],$notice['message'],$notice['emailtitle']);		    if($go == 1)		    {				if($notice['type'] == '1')				{			       $this->fullorder->save(array('content'=>$fullorder['content'].$content.'-成功;','zdstate'=>$fullorder['zdstate'].$notice['type'].'-'.$notice[$fslx].'|','exstateerror'=>''),$fullorder['id']);				}				else if ($notice['type'] == '2')				{					$this->fullorder->save(array('wlcontent'=>$fullorder['wlcontent'].$content.'-成功;','wlfstime'=>time(),'zdstate'=>$fullorder['zdstate'].$notice['type'].'-'.$notice[$fslx].'|','exstateerror'=>''),$fullorder['id']);				}			     return 1;		    }		    else		    {				if($notice['type'] == '1')				{			        $this->fullorder->save(array('exstateerror'=>$content.'发送失败:'.date('Y-m-d H',time()).'-'.$go.'('.$notice['type'].'-'.$notice[$fslx].')'),$fullorder['id']);				}				else if ($notice['type'] == '2')				{					$this->fullorder->save(array('wlerror'=>$content.'发送失败:'.date('Y-m-d H',time()).'-'.$go.'('.$notice['type'].'-'.$notice[$fslx].')'),$fullorder['id']);				}		    }		}	}}
 |