Beispiel #1
0
 /**
  * 仓库订单状态实时推送给订单系统
  */
 public static function pushOrderStatus($shipOrderId, $status, $userId, $operateTime, $storeId = 1)
 {
     self::initDB();
     $rmq_config = C("RMQ_CONFIG");
     $rabbitMQClass = new RabbitMQClass($rmq_config['sendOrder'][1], $rmq_config['sendOrder'][2], $rmq_config['sendOrder'][4], $rmq_config['sendOrder'][0]);
     //队列对象
     $orderDataInfo = array();
     //基础信息
     //	$sql = "select originOrderId from `wh_shipping_order_relation` where shipOrderId={$shipOrderId}";
     //$query	   = self::$dbConn->query($sql);
     //	$orderInfo = self::$dbConn->fetch_first($sql);
     $result = WhShippingOrderRelationModel::get_orderId($shipOrderId);
     //  if(is_array($result)){
     //  }
     $orderDataInfo = array('originOrderId' => $result, 'orderStatus' => $status, 'operateUserId' => $userId, 'operateTime' => $operateTime, 'storeId' => $storeId);
     $exchange = 'WH_STATUS_EXCHANGE';
     if ($rabbitMQClass->queue_publish($exchange, json_encode($orderDataInfo), "direct")) {
         self::$errMsg = "推送成功!";
         return true;
     } else {
         self::$errCode = "401";
         self::$errMsg = "推送失败!";
         return false;
     }
 }
$log = '';
foreach ($shipOrders as $order) {
    if (empty($order['countryName'])) {
        $log .= "发货单{$order['shipOrderId']}没有国家名称\n";
        continue;
    }
    if (empty($order['orderWeight'])) {
        $log .= "发货单{$order['shipOrderId']}没有重量\n";
        continue;
    }
    if (empty($order['selectShipping'])) {
        $log .= "发货单{$order['shipOrderId']}没有可选择的运输方式\n";
        continue;
    }
    //获取真实订单ID
    $orderId = WhShippingOrderRelationModel::get_orderId($order['shipOrderId']);
    //传递给物流系统的数据
    $data[$orderId] = array('channelId' => $order['selectShipping'], 'country' => rawurlencode($order['countryName']), 'weight' => $order['orderWeight'] / 1000);
    //赛维美国专线传递转运中心和邮编前三位
    if (count(array_intersect(array(115, 119, 116), explode(',', $order['selectShipping']))) > 0) {
        $data[$orderId]['postCode'] = substr($order['zipCode'], 0, 3);
        //邮编前三位
        $data[$orderId]['transitId'] = 2;
        //转运中心
    }
}
$transportInfo = CommonModel::getTransportByApi($data);
//调用物流系统接口
if (empty($transportInfo['data'])) {
    echo '没有获取申请信息';
    exit;
$orderids = array();
foreach ($shipOrders as $orderinfo) {
    $orderids[] = WhShippingOrderRelationModel::get_orderId($orderinfo['id']);
}
$orderisStr = implode("','", $orderids);
//调用订单系统接口批量获取订单信息
$orders = CommonModel::get_orderInfoFromOrderSys($orderisStr);
$orders = $orders['data'];
if (empty($orders)) {
    exit('未获取申请跟踪号的订单详细信息');
}
foreach ($shipOrders as $orderinfo) {
    $shipOrderId = $orderinfo['id'];
    $ebay_platformId = $orderinfo['platformId'];
    //平台名称
    $orderId = WhShippingOrderRelationModel::get_orderId($shipOrderId);
    if (!in_array($ebay_platformId, array(1, 14))) {
        echo $ebay_account . "非EBAY账号!\n";
        continue;
    }
    $ebay_username = $orderinfo['username'];
    $ebay_usermail = $orderinfo['email'];
    $ebay_phone = $orderinfo['phone'];
    $ebay_street = $orderinfo['street'] . ' ' . $orderinfo['address2'] . ' ' . $orderinfo['address3'];
    $ebay_city = $orderinfo['city'];
    $ebay_state = $orderinfo['state'];
    $ebay_postcode = $orderinfo['zipCode'];
    $ebay_countryname = $orderinfo['countryName'];
    $ebay_couny = $orderinfo['countrySn'];
    $ebay_currency = $orderinfo['currency'];
    $ebay_userid = $orderinfo['platformUsername'];
    $insertData = array('tracknumber' => $transport['trackNums']['trackNumber'], 'status' => 2, 'tracknumberTime' => $nowtime);
    //通过真实订单id获取发货单id
    $shipOrderId = WhShippingOrderRelationModel::get_shipOrderId($orderId);
    if (empty($transport['trackNums']['trackNumber'])) {
        $log .= "发货单:{$shipOrderId}未申请到跟踪号\n";
        continue;
    }
    WhWaveOrderTransportModel::begin();
    //启用事物提价
    //更新申请记录表
    if (!WhWaveOrderTransportModel::update($insertData, ' shipOrderId = ' . $shipOrderId . ' AND status=1')) {
        $log .= "发货单:{$shipOrderId}更新申请跟踪号-{$transport['trackNums']['trackNumber']}记录表失败\n";
        WhWaveOrderTransportModel::rollback();
        continue;
    }
    $trackNumberData = array('tracknumber' => $transport['trackNums']['trackNumber'], 'shipOrderId' => $shipOrderId, 'createdTime' => $nowtime);
    if (!WhOrderTracknumberModel::insert($trackNumberData)) {
        $log .= "发货单-{$shipOrderId}插入跟踪号{$transport['trackNums']['trackNumber']}信息表失败\n";
        WhWaveOrderTransportModel::rollback();
        continue;
    }
    //推送运输方式,跟踪信息,重量到订单系统
    $orderDataInfo = array('orderId' => WhShippingOrderRelationModel::get_orderId($shipOrderId), 'orderWeight' => $orders[$shipOrderId]['orderWeight'], 'transportId' => $orders[$shipOrderId]['transportId'], 'channelId' => $orders[$shipOrderId]['channelId'], 'tracknumber' => $transport['trackNums']['trackNumber'], 'actualShipping' => $orders[$shipOrderId]['actualShipping'], 'tracknumberTime' => $nowtime);
    WhPushModel::pushTransportInfo($orderDataInfo);
    //推送成功还是返回false
    //$log .= "发货单-{$shipOrderId}推送信息".json_encode($orderDataInfo)."失败\n";
    $log .= "发货单:{$shipOrderId}申请跟踪号-{$transport['tracknumber']}记录成功\n";
    WhWaveOrderTransportModel::commit();
}
//写日志
write_log("tracknumber_assign/" . date('Y-m') . "/" . date('H') . ".txt", $log);