load->library('session'); $this->load->_model('Model_shop','shop'); } public function _remap($arg,$arg_array) { if($arg=="contentpage"){ $this->$arg(); }elseif($arg=="trafficsource"){ $this->$arg(); }elseif($arg=="chart"){ $this->$arg(); }elseif($arg=="productinfo"){ $this->$arg($arg_array); }elseif($arg=="regionproduct"){ $this->$arg($arg_array); }elseif($arg=="goals"){ $this->$arg(); }else{ $this->_index(); } } public function _index(){ $url="http://getdata.mywigs.com/index/index"; if(isset($_SESSION['api'])) { $user = $this->user->get_api($_SESSION['api']); $usp = $user; $fgshop = "";$sid = ""; $usersp = explode('|',trim($user['shop'],'|')); foreach ($usersp as $value) { $fgshop .= " shop = ".$value." or"; $sid .= " id = ".$value." or"; } if($user['vip'] == 1) { $vip = 1; } else { $vip = 0; } } else { $vip = 0; } $wlshop = $this->shop->find_all('1=1 and '.rtrim($sid,'or')); $this->data['wlshop'] = $wlshop; $post = $this->input->post(NULL, TRUE); $shop = $this->input->post('shop', TRUE); if(!$shop){ $shop=$wlshop[0]; } $this->data['shop'] = $shop; if(isset($post['shop'])) { $param=[]; $days=intval($post['days']); if($shop>6){ echo json_encode(array('msg'=>'无权限或者店铺不存在','success'=>false));exit; } $param['store']=$shop; $param['start']=date('Y-m-d',time()-3600*24*$days); $param['end']=date('Y-m-d',time()); $url=$url.'?'.http_build_query($param); $data=$this->_curl([],$url,300,"GET"); $data=json_decode($data,true); $last_data_url=$url.http_build_query([ 'store'=>$shop, 'start'=>date('Y-m-d',time()-3600*24*$days*2), 'end'=>date('Y-m-d',time()-3600*24*$days), ]); $last_data=$this->_curl([],$last_data_url,300,"GET"); $last_data=json_decode($last_data,true); if(!$data['status']||!$last_data['status']){ echo json_encode(array('msg'=>'获取失败,请重试','success'=>false));exit; }else{ $data=$data['data']; $last_data=$last_data['data']; $users=[]; $visitor=$data['visitor']; $geo=$data['geo']; foreach($visitor as $k=>$v){ if($v['userType']=="New Visitor"){ $users['new'][]=$v['newUsers']; $users['date'][]=date('Y-m-d',strtotime($v['date'])); }else{ $users['return'][]=$v['users']; } } $totalSellCount=array_sum(array_column($geo,'transactions')); $regionStr=""; foreach($geo as $k=>$v){ $percent=round($v['transactions']/$totalSellCount*100,2)."%"; $geo[$k]['percent']=$percent; } $sell=[]; $sell['date']['hour']=array_column($data['sell']['hour'],'dateHour'); $sell['date']['day']=array_column($data['sell']['day'],'date'); $sell['date']['week']=array_column($data['sell']['week'],'isoYearIsoWeek'); $sell['date']['month']=array_column($data['sell']['month'],'yearMonth'); $sell['date']['hour']=array_map(function($item){ return date('m/d H',strtotime($item."00")).":00"; },$sell['date']['hour']); $sell['date']['day']=array_map(function($item){ return date('m/d',strtotime($item)); },$sell['date']['day']); $sell['date']['week']=array_map(function($item){ return date('Y/W',strtotime(substr_replace($item,"W",-2,0))); },$sell['date']['week']); $sell['date']['month']=array_map(function($item){ return date('Y/m',strtotime($item)); },$sell['date']['month']); foreach($data['sell'] as $k=>$v){ foreach($v as $item){ if(isset($item['date'])&&!empty($item['date'])){ $date=date('m/d',strtotime($item['date'])); } if(isset($item['dateHour'])&&!empty($item['dateHour'])){ $date=date('m/d H',strtotime($item['dateHour']."00")).":00"; } if(isset($item['yearMonth'])&&!empty($item['yearMonth'])){ $date=date('Y-m',strtotime($item['yearMonth'])); } if(isset($item['isoYearIsoWeek'])&&!empty($item['isoYearIsoWeek'])){ $date=date('Y/W',strtotime(substr_replace($item['isoYearIsoWeek'],"W",-2,0))); } $item['date']=$date; // $date=$item['date']??($item['dateHour']??($item['yearWeek']??$item['yearMonth'])); $sell['data'][$k][$date]=$item; } } foreach($last_data['sell'] as $k=>$v){ foreach($v as $item){ $last_sell[$k][]=$item['itemQuantity']; } } $data['store']['广告-销量']=0; $data['store']['广告-订单数']=0; $data['store']['广告-收入']=0; $data['store']['广告-点击次数']=0; $data['store']['广告-成本']=0; foreach($data['ads'] as $k=>$v){ if($v['campaign']=="(not set)"){ continue; } $data['store']['广告-销量'] +=$v['itemQuantity']; $data['store']['广告-订单数'] +=$v['transactions']; $data['store']['广告-收入'] +=$v['transactionRevenue']; $data['store']['广告-点击次数'] +=$v['adClicks']; $data['store']['广告-成本'] +=$v['adCost']; } $data['store']['广告-收入']=round($data['store']['广告-收入'],2); $data['store']['广告-成本']=round($data['store']['广告-成本'],2); $page=array_slice($data['page'],0,99); foreach($page as $k=>$v){ $page[$k]['pageValue']=round($v['pageValue'],2); } $rows=array( 'success'=>1, 'data'=>[ 'users'=>$users, 'geo'=>$geo, 'product'=>$data['product'], 'ads'=>$data['ads'], 'sell'=>$sell, 'last_sell'=>$last_sell, 'store'=>$data['store'], 'page'=>$page, 'channel'=>$data['channel'] ] ); echo json_encode($rows);exit; } } $this->_Template('ga_index',$this->data); } public function getStoreData(){ $base_url="http://getdata.mywigs.com/index/index"; $post = $this->input->post(NULL, TRUE); // $shop=$post['store']; // $days=intval($post['days']); $shop=3; $days=15; $param['store']=$shop; $param['start']=date('Y-m-d',time()-3600*24*$days); $param['end']=date('Y-m-d',time()); $url=$base_url.'?'.http_build_query($param); $data=$this->_curl([],$url,300,"GET"); $data=json_decode($data,true); $param1['store']=$shop; $param1['start']=date('Y-m-d',time()-3600*24*($days*2+1)); $param1['end']=date('Y-m-d',time()-3600*24*($days+1)); $url=$base_url.'?'.http_build_query($param1); $last_data=$this->_curl([],$url,300,"GET"); $last_data=json_decode($last_data,true); if(!$data['status']||!$last_data['status']){ echo json_encode(array('msg'=>'获取失败,请重试','success'=>false));exit; }else{ $storeData=$data['data']['storeData']; $lastStoreData=$last_data['data']['storeData']; echo "
"; print_r($storeData);exit; $res=[ [ 'name'=>'销量', 'value'=>$storeData['transactions'], // 'compare'=>round(($storeData['transactions']-$lastStoreData['transactions'])/$lastStoreData['transactions']*100,2)."%", 'compare'=>round(($lastStoreData['transactions']-$storeData['transactions'])/$lastStoreData['transactions']*100,2)."%", ], // [ // 'name'=> // ] ]; echo json_encode($res); exit; } } public function contentpage(){ $url="http://getdata.mywigs.com/index/contentpage"; $post = $this->input->post(NULL, TRUE); if(isset($post['page'])) { $page = $this->input->post('page',true); $perpage = $this->input->post('perpage',true); if(empty($page)) { $start = 0; $perpage = 1; } else { $start = ($page - 1)*$perpage; } $param=[]; $param['limit']=$perpage; $param['page']=$page; $url=$url.'?'.http_build_query($param); $data=$this->_curl([],$url,300,"GET"); $data=json_decode($data,true); if(!$data['status']){ echo json_encode(array('msg'=>'获取失败,请重试','success'=>false));exit; }else{ $data=$data['data']; $total=$data['total']; $items=$data['items']; foreach($items as $k=>$v){ $items[$k]['avgTimeOnPage']=round($items[$k]['avgTimeOnPage'],2); $items[$k]['bounceRate']=round($items[$k]['bounceRate'],2); $items[$k]['exitRate']=round($items[$k]['exitRate'],2); $items[$k]['pageValue']=round($items[$k]['pageValue'],2); unset($items[$k]['created_at']); } $pagenum = ceil($total/$perpage); $over = $total-($start+$perpage); $rows = array('total'=>$total,'over'=>$over,'pagenum'=>$pagenum,'rows'=>($items)); echo json_encode($rows);exit; } } $this->_Template('ga_contentpage',$this->data); } // public function Trafficsource(){ // $url="http://getdata.mywigs.com/index/source"; // $post = $this->input->post(NULL, TRUE); // if(isset($post['page'])) { // $page = $this->input->post('page',true); // $perpage = $this->input->post('perpage',true); // if(empty($page)) // { // $start = 0; // $perpage = 1; // } // else // { // $start = ($page - 1)*$perpage; // } // $param=[]; // $param['limit']=$perpage; // $param['page']=$page; // $url=$url.'?'.http_build_query($param); // $data=$this->_curl([],$url,300,"GET"); // $data=json_decode($data,true); // if(!$data['status']){ // echo json_encode(array('msg'=>'获取失败,请重试','success'=>false));exit; // }else{ // $data=$data['data']; // $total=$data['total']; // $items=$data['items']; // foreach($items as $k=>$v){ // $items[$k]['pageviewsPerSession']=round($items[$k]['pageviewsPerSession'],2); // $items[$k]['bounceRate']=round($items[$k]['bounceRate'],2); // $items[$k]['avgSessionDuration']=round($items[$k]['avgSessionDuration'],2); // $items[$k]['transactionsPerVisit']=round($items[$k]['transactionsPerVisit'],2); // unset($items[$k]['created_at']); // } // $pagenum = ceil($total/$perpage); // $over = $total-($start+$perpage); // $rows = array('total'=>$total,'over'=>$over,'pagenum'=>$pagenum,'rows'=>($items)); // echo json_encode($rows);exit; // } // } // $this->_Template('ga_trafficsource',$this->data); // } public function Trafficsource(){ $url="http://getdata.mywigs.com/index/statistic"; if(isset($_SESSION['api'])) { $user = $this->user->get_api($_SESSION['api']); $usp = $user; $fgshop = "";$sid = ""; $usersp = explode('|',trim($user['shop'],'|')); foreach ($usersp as $value) { $fgshop .= " shop = ".$value." or"; $sid .= " id = ".$value." or"; } if($user['vip'] == 1) { $vip = 1; } else { $vip = 0; } } else { $vip = 0; } $wlshop = $this->shop->find_all('1=1 and '.rtrim($sid,'or')); $this->data['wlshop'] = $wlshop; $post = $this->input->post(NULL, TRUE); $shop = $this->input->post('shop', TRUE); if(!$shop){ $shop=$wlshop[0]; } $this->data['shop'] = $shop; if(isset($post['shop'])) { $param=[]; $days=intval($post['days']); if($shop>6){ echo json_encode(array('msg'=>'无权限或者店铺不存在','success'=>false));exit; } $param['store']=$shop; $param['start']=date('Y-m-d',time()-3600*24*$days); $param['end']=date('Y-m-d',time()); $url=$url.'?'.http_build_query($param); $data=$this->_curl([],$url,300,"GET"); $data=json_decode($data,true); if(!$data['status']){ echo json_encode(array('msg'=>'获取失败,请重试','success'=>false));exit; }else{ $data=$data['data']; $users=[]; $visitor=$data['visitor']; $sell=$data['sell']; foreach($visitor as $k=>$v){ if($v['userType']=="New Visitor"){ $users['new'][]=$v['newUsers']; $users['date'][]=date('Y-m-d',strtotime($v['date'])); }else{ $users['return'][]=$v['users']; } } $totalSellCount=array_sum(array_column($sell,'transactions')); // echo $totalSellCount;exit; $regionStr=""; foreach($sell as $k=>$v){ $percent=round($v['transactions']/$totalSellCount*100,2)."%"; $sell[$k]['percent']=$percent; } $rows=array( 'success'=>1, 'data'=>[ 'users'=>$users, 'sell'=>$sell, 'product'=>$data['product'], ] ); echo json_encode($rows);exit; } } $this->_Template('ga_chart',$this->data); } public function productinfo($arg_array=[]){ $url="http://getdata.mywigs.com/index/productinfo"; $shop=$arg_array[0]; $days=intval($arg_array[1])??7; $productName=base64_decode($arg_array[2]); if(isset($productName)&&!empty($productName)) { $param=[]; $param['store']=$shop; $param['productName']=$productName; $param['start']=date('Y-m-d',time()-3600*24*$days); $param['end']=date('Y-m-d',time()); $url=$url.'?'.http_build_query($param); $data=$this->_curl([],$url,300,"GET"); $data=json_decode($data,true); if(!$data['status']){ echo json_encode(array('msg'=>'获取失败,请重试','success'=>false));exit; }else{ $data=$data['data']; $sell=[]; $sell['date']['hour']=array_column($data['sell']['hour'],'dateHour'); $sell['date']['day']=array_column($data['sell']['day'],'date'); $sell['date']['week']=array_column($data['sell']['week'],'isoYearIsoWeek'); $sell['date']['month']=array_column($data['sell']['month'],'yearMonth'); $sell['date']['hour']=array_map(function($item){ return date('m/d H',strtotime($item."00")).":00"; },$sell['date']['hour']); $sell['date']['day']=array_map(function($item){ return date('m/d',strtotime($item)); },$sell['date']['day']); $sell['date']['week']=array_map(function($item){ return date('Y/W',strtotime(substr_replace($item,"W",-2,0))); },$sell['date']['week']); $sell['date']['month']=array_map(function($item){ return date('Y/m',strtotime($item)); },$sell['date']['month']); // echo ""; // print_r($data['sell']['week']); foreach($data['sell'] as $k=>$v){ foreach($v as $item){ if(isset($item['date'])&&!empty($item['date'])){ $date=date('m/d',strtotime($item['date'])); } if(isset($item['dateHour'])&&!empty($item['dateHour'])){ $date=date('m/d H',strtotime($item['dateHour']."00")).":00"; } if(isset($item['yearMonth'])&&!empty($item['yearMonth'])){ $date=date('Y-m',strtotime($item['yearMonth'])); } if(isset($item['isoYearIsoWeek'])&&!empty($item['isoYearIsoWeek'])){ $date=date('Y/W',strtotime(substr_replace($item['isoYearIsoWeek'],"W",-2,0))); } $item['date']=$date; // $date=$item['date']??($item['dateHour']??($item['yearWeek']??$item['yearMonth'])); $sell['data'][$k][$date]=$item; } } } // echo ""; // print_r($sell);exit; $this->data['sell']=json_encode($sell,true); $this->data['sku']=json_encode($data['sku'],true); $this->data['days']=$days; } $this->data['productName']=$productName; $this->_Template('ga_productinfo',$this->data); } public function regionproduct($arg_array=[]){ $url="http://getdata.mywigs.com/index/region-product"; $shop=$arg_array[0]; $days=intval($arg_array[1])??7; $region=base64_decode($arg_array[2]); if(isset($region)&&!empty($region)) { $param=[]; $param['store']=$shop; $param['region']=$region; $param['start']=date('Y-m-d',time()-3600*24*$days); $param['end']=date('Y-m-d',time()); $url=$url.'?'.http_build_query($param); $data=$this->_curl([],$url,300,"GET"); $data=json_decode($data,true); if(!$data['status']){ echo json_encode(array('msg'=>'获取失败,请重试','success'=>false));exit; }else{ $data=$data['data']; } $this->data['info']=$data[0]; } $this->_Template('ga_productinfo',$this->data); } public function goals(){ $url="http://getdata.mywigs.com/index/goals"; if(isset($_SESSION['api'])) { $user = $this->user->get_api($_SESSION['api']); $usp = $user; $fgshop = "";$sid = ""; $usersp = explode('|',trim($user['shop'],'|')); foreach ($usersp as $value) { $fgshop .= " shop = ".$value." or"; $sid .= " id = ".$value." or"; } if($user['vip'] == 1) { $vip = 1; } else { $vip = 0; } } else { $vip = 0; } $wlshop = $this->shop->find_all('1=1 and '.rtrim($sid,'or')); $this->data['wlshop'] = $wlshop; $post = $this->input->post(NULL, TRUE); $shop = $this->input->post('shop', TRUE); if(!$shop){ $shop=$wlshop[0]; } $this->data['shop'] = $shop; if(isset($post['page'])) { $param=[]; $timetk = $this->input->post('timetk',true); $timetj = $this->input->post('timetj',true); // $days=intval($post['days']); if($shop>6){ echo json_encode(array('msg'=>'无权限或者店铺不存在','success'=>false));exit; } $param['store']=$shop; $param['start']=date('Y-m-d',strtotime($timetk)); $param['end']=date('Y-m-d',strtotime($timetj)); $url=$url.'?'.http_build_query($param); $data=$this->_curl([],$url,300,"GET"); $data=json_decode($data,true); if(!$data['status']){ echo json_encode(array('msg'=>'获取失败,请重试','success'=>false));exit; }else{ $data=$data['data']; // foreach($sell as $k=>$v){ // $percent=round($v['transactions']/$totalSellCount*100,2)."%"; // $sell[$k]['percent']=$percent; // } $row=[ $data['pageviews'], $data['sessions'], $data['users'], $data['newUsers'], round($data['bounceRate'],2).'%', $data['cartCompletions'], round($data['cartConversionRate'],2).'%', $data['orderCompletions'], round($data['orderConversionRate'],2).'%', $data['transactionRevenue'], round($data['revenuePerTransaction'],2), ]; $rows = array('rows'=>[$row]); echo json_encode($rows);exit; } } $this->_Template('ga_goals',$this->data); } public function _curl($data,$url,$timeout=300,$httptype="POST",$date_type=false,$header=array(),$userpwd='') { if ($date_type == 'http_build_query') { $data = http_build_query($data); } else if ($date_type == 'json') { $data = json_encode($data); } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POSTFIELDS,$data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); switch ($httptype) { case "GET": curl_setopt($ch, CURLOPT_HTTPGET, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); break; case "POST": curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); break; case "PUT": curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); break; case "DELETE": curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE"); break; } $isSecure = strpos($url, "https://"); if ($isSecure === 0) { curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); } if(!empty($header)) { curl_setopt($ch, CURLOPT_SSLVERSION , 6); //NEW ADDITION curl_setopt($ch,CURLOPT_HTTPHEADER,$header); } if(!empty($userpwd)) { curl_setopt($ch,CURLOPT_USERPWD,$userpwd); } curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); $result = curl_exec($ch); curl_close($ch); return $result; } }