<?php
/**
 * Created by JetBrains PhpStorm.
 * User: user
 * Date: 14-10-13
 * Time: 下午5:10
 * To change this template use File | Settings | File Templates.
 */
require_once ('config.php');
error_reporting(E_ALL);
$flagFile = APPLICATION_PATH . '/../data/log/autoETK.lock';
if (@file_exists($flagFile)) {
    echo 'Another process is running.'."\r\n";
    echo $flagFile."\r\n";
    exit();
}
$link = fopen($flagFile, 'wb');
fclose($link);
define('RUNTIME', '[' . date('Y-m-d H:i:s') . '] ');
echo RUNTIME . "Starting.\r\n\r\n";
$ApiSign = "CSCMe_10ac44eb0d863fd1b86fae6daaf95fab";
$condition = array(
    'sm_code'=>'SZY-ETK',
    'order_status'=>'4',
    'order_mode_type' => '0', // 备货模式
);
$total = Service_Orders::getByCondition($condition,"count(*)");
$pageSize = 20;
$totalPage = ceil($total/$pageSize);
for($page=1;$page<=$totalPage;$page++){
    $orderList = Service_Orders::getByCondition($condition,'*',$pageSize,$page,'order_id desc');
    foreach($orderList as $k=>$v){
        // 数据过滤
        if ('SZY-ETK' !== trim($v['sm_code'])
            || 0 !== (int) $v['order_mode_type']
            || 4 !== (int) $v['order_status']
            || '' !== trim($v['ref_tracking_number'])) {
            continue ;
        }

        $orderXml = Service_EpacketWebService::getOrderContent($v['order_code']);
        $epaService = new Service_EpacketWebService();
        $result = $epaService->validate($orderXml);
        if($result['status']=="success"){
            $ret = $epaService->createEpacketOrder($orderXml);
            if(isset($ret['mailnum'])&&$ret['mailnum']!=""){
                $updateOrder = array(
                    'ref_tracking_number'=>$ret['mailnum']
                );
                $orderLog = array(
                    'order_id'=>$v['order_id'],
                    'order_code'=>$v['order_code'],
                    'ol_type'=>'1',
                    'order_status_from'=>$v['order_status'],
                    'order_status_to'=>$v['order_status'],
                    'ol_add_time'=>date("Y-m-d H:i:s"),
                    'user_id'=>0,
                    'ol_comments'=>'ETK自动取单号以及标签->autoETK.php'
                );
                Service_OrderLog::add($orderLog);
                Service_Orders::update($updateOrder,$v['order_id'],"order_id");
                $signStr = md5($ApiSign.$ret['mailnum']);
                $labelResult = $epaService->getETKLableByMailnum($ret['mailnum']);
                $fileStream = file_get_contents($pdfUrl,false,null);
                $zipFileStream = file_get_contents($labelResult['url'],false,null);
                $zipFileName = APPLICATION_PATH.'/../data/pdf/ETK/'.$v['order_code'].".zip";
                if(!file_exists($zipFileName)){
                    $fp= fopen($zipFileName,"w");
                    fclose($fp);
                }
                file_put_contents($zipFileName,$zipFileStream);
                $zip = new ZipArchive;
                if ($zip->open($zipFileName) === TRUE)
                {
                    $zip->extractTo(APPLICATION_PATH.'/../data/pdf/ETK/');
                    $pdfFileName = $zip->getNameIndex(0);
                    $zip->close();
                }
                rename(APPLICATION_PATH.'/../data/pdf/ETK/'.$pdfFileName,APPLICATION_PATH.'/../data/pdf/ETK/'.$v['order_code'].".pdf");
                unlink($zipFileName);
                echo "订单".$v['order_code']."获取单号".$ret['mailnum']."成功\n";
            }else{
                
                 $errorText=  "订单".$v['order_code']."提交出错:".$ret['description']."\n";
                     $errorLog=array(
                 'order_code'=>$v['order_code'],
                 'sm_code'=>$v['sm_code'],
                 'content'=>$errorText,
             );
             Service_TrackingErrorLog::add($errorLog);
             echo $errorText;
            }
        }else{
             $errorText= "订单".$v['order_code']."提交出错:".$result['description']."\n";
                 $errorLog=array(
                 'order_code'=>$v['order_code'],
                 'sm_code'=>$v['sm_code'],
                 'content'=>$errorText,
             );
             Service_TrackingErrorLog::add($errorLog);
             echo $errorText;
        }
    }
}
echo "[" . date('Y-m-d H:i:s') . "] End run\r\n";
@unlink($flagFile);