<?php
/**
 * Created by JetBrains PhpStorm.
 * User: user
 * Date: 15-11-26
 * Time: 下午5:32
 * To change this template use File | Settings | File Templates.
 */
require_once 'config.php';
set_time_limit(0);
$flag = APPLICATION_PATH . '/../data/log/getRumalTrackingInfo.lock';

if (@file_exists($flag)) {
    echo "Another process is running.\r\n";
    echo "{$flag}\r\n";
    exit();
}

$handler = fopen($flag, 'wb');
fclose($handler);
$RumalObj=new Service_RumalApiProcess();
$start=date('Y-m-d H:i:s');
echo '[', $start, '] Starting.', "\r\n";
$timespace = strtotime("-2 months",strtotime(date("Y-m-d")));
    $condition = array(
        'order_status_Arr' => array(11, 12), 
        'sm_code_Arr'=>array('Rumall-RU-EP','Rumall-RU-G'),
        'add_time_start'=>date("Y-m-d H:i:s",$timespace),
//         'order_code'=>'SOE01740023597',
    );
    $total = Service_Orders::getByCondition($condition,'count(*)');
    $pageSize = 20;
    $totalPage = ceil($total/$pageSize);
    for($page=1;$page<=$totalPage;$page++){
        $ordersList = Service_Orders::getByCondition($condition,"*",$pageSize,$page,'order_id asc');
        foreach($ordersList as $orderRow){
            
            if($orderRow['customer_code']=="E0207"||$orderRow['customer_code']=="E0110") continue;
            $shipOrder = Service_ShipOrder::getByField($orderRow['order_code'],"order_code","*");
            if(empty($shipOrder)) continue;
            if(empty($orderRow['reference_no'])){
                                continue;      
            }
            $result=$RumalObj->getTrackeTracking($orderRow['reference_no']);
            if($result['Head']=='OK'){
                 krsort($result['Body']['RouteResponse']['Rote']);
                foreach($result['Body']['RouteResponse']['Rote'] as $trace){
                    $condtion=array(
                        'order_code'=>$orderRow['order_code'],
                        'sot_info_type'=>$trace['opCode'],
                        'sot_location'=>$trace['accept_address'],
                    );
                    $exitTracking=  Service_ShipOrderTracking::getByCondition($condtion,'count(*)');
                    if(!$exitTracking){
                        $shipTracking=array(
                            'order_code'=>$orderRow['order_code'],
                            'sot_location'=>$trace['accept_address'],
                            'sot_add_time'=>$start,
                            'sot_time_offset'=>$trace['accept_time'],
                            'warehouse_id'=>$orderRow['warehouse_id'],
                            'sot_description'=>$trace['remark'],
                            'sot_info_type'=>$trace['opCode'],
                            'tracking_number'=>$shipOrder['tracking_number'],
                            'ref_tracking_number'=>$orderRow['reference_no'],
                        );
                        Service_ShipOrderTracking::add($shipTracking);
                       if($trace['opCode']=='80'){
                            $updateOrder = array(
                              'order_status' => 13
                          );
                          $orderLog = array(
                              'order_id'=>$v['order_id'],
                              'order_code'=>$v['order_code'],
                              'ol_type'=>'1',
                              'order_status_from'=>$v['order_status'],
                              'order_status_to'=>13,
                              'ol_add_time'=>date("Y-m-d H:i:s"),
                              'user_id'=>0,
                              'ol_comments'=>'自动取运输轨迹,已签收'
                          );
                          Service_Orders::update($updateOrder, $orderRow['order_code']);
                          Service_OrderLog::add($orderLog);
                       }
                    }
                }
            }else{
                $errorText= "订单".$v['order_code']."查询轨迹: action: " . $result['Remark']."\n";
                $errorLog=array(
                     'order_code'=>$orderRow['order_code'],
                     'sm_code'=>$orderRow['sm_code'],
                     'content'=>$errorText,
                 );
                 Service_TrackingErrorLog::add($errorLog);
                 echo $errorText;
                 continue ;
            }
            
        }
    }

echo '[', date('Y-m-d H:i:s'), '] End run', "\r\n";
@unlink($flag);