with(['owner:id,name,phone_number', 'orderByCode', 'orderByCode.shop:id,name', 'orderByCode.warehouse:id,province_id,city_id,county_id,address', 'orderByCode.warehouse.province:id,name', 'orderByCode.warehouse.city:id,name', 'orderByCode.warehouse.county:id,name', 'deliveryType:id,name']) ->where('id', '=', $params['id']) ->first(); //请求德邦API 生成新订单 $model = new OrderLogistic(); $uri = "http://dpsanbox.deppon.com/sandbox-web/dop-standard-ewborder/createOrderNotify.action"; $header = [ 'Content-Type' => 'application/x-www-form-urlencoded;charset=utf-8', "Accept" => "application/json" ]; if ($order_info) { if (empty($order_info->orderByCode)) return false; $res = $model->isExist($order_info->orderByCode->id); if (!$res || $res->status == 0 ?? 0) { $data = [ 'logisticID' => config('api_logistic.DB.prod.sign') . date("YmdHis") . mt_rand(1000, 9999) . $order_info->orderByCode->id, 'custOrderNo' => $order_info->orderByCode->client_code ?? '', // 'mailNo' => '', // 不传会创建新的 运单号 'needTraceInfo' => config('api_logistic.DB.prod.needTraceInfo'), 'companyCode' => config('api_logistic.DB.prod.company_code'), 'orderType' => config('api_logistic.DB.prod.orderType'), 'transportType' => config('api_logistic.DB.prod.transportType'), 'customerCode' => config('api_logistic.DB.prod.customer_Code'), 'sender' => [ 'companyName' => $order_info->orderByCode->shop->name ?? '', 'businessNetworkNo' => '', 'name' => $order_info->owner->name ?? '', 'mobile' => $order_info->owner->phone_number ?? '', 'phone' => $order_info->owner->phone_number ?? '', 'province' => $order_info->orderByCode->warehouse->province->name ?? '', 'city' => $order_info->orderByCode->warehouse->city->name ?? '', 'country' => $order_info->orderByCode->warehouse->county->name ?? '', 'town' => '', 'address' => $order_info->orderByCode->warehouse->address ?? '', ], 'receiver' => [ 'toNetworkNo' => '', 'name' => $order_info->orderByCode->consignee_name ?? '', 'phone' => $order_info->orderByCode->consignee_phone ?? '', 'mobile' => $order_info->orderByCode->consignee_phone ?? '', 'province' => $order_info->orderByCode->province ?? '', 'city' => $order_info->orderByCode->city ?? "", 'county' => $order_info->orderByCode->district ?? '', 'town' => '', 'address' => $order_info->orderByCode->address ?? '', 'companyName' => '' ], 'packageInfo' => [ 'cargoName' => $order_info->cargo_name ?? '', 'totalNumber' => $order_info->total_number ?? '', 'totalWeight' => $order_info->total_weight ?? '', 'totalVolume' => '', 'packageService' => '', 'deliveryType' => $order_info->deliveryType->name ?? '', ], 'gmtCommit' => date('Y-m-d H:i:s'), 'payType' => config('api_logistic.DB.prod.payType'), 'addServices' => [ 'insuranceValue' => '', 'codType' => '', 'reciveLoanAccount' => '', 'accountName' => '', 'codValue' => '', 'backSignBill' => config('api_logistic.DB.prod.backSignBill') ], 'smsNotify' => config('api_logistic.DB.prod.smsNotify'), 'sendStartTime' => date("Y-m-d H:i:s"), 'sendEndTime' => $order_info->deliver_at ?? date("Y-m-d H:i:s", strtotime('+1 day')), 'originalWaybillNumber' => $order_info->wms_bill_number ?? '', 'remark' => $order_info->dispatch_remark ?? '', 'isOut' => '', 'passwordSigning' => config('api_logistic.DB.prod.passwordSigning'), 'isdispatched' => '', 'ispresaleorder' => '', 'isCenterDelivery' => '', 'orderExtendFields' => [ 'value' => '', 'key' => '' ] ]; $param = json_encode($data, true); $dd["params"] = $param; $dd["timestamp"] = (integer)getMillisecond(); $dd["digest"] = base64_encode(md5($param . config('api_logistic.DB.prod.app_key') . $dd['timestamp'])); $dd["companyCode"] = config('api_logistic.DB.prod.company_code'); $return = httpPost($uri, $dd, $header); unset($data); if (array_key_exists('result', $return)) { //请求成功 快递单号 $return['mailNo'] 请求编号 $return['uniquerRequestNumber'] $add_data = [ 'order_id' => $order_info->orderByCode->id, 'status' => $return['result'] == 'true' ? 1 : 0, 'code' => $return['mailNo'] ?? '', 'uniquer_request_number' => $return['uniquerRequestNumber'], 'reason' => $return['reason'] ?? '', 'created_at' => date('Y-m-d H:i:s') ]; $roe = OrderLogistic::query()->insertGetId($add_data); //成功 if ($return['result'] == 'true' && $roe) { $order_no = $order_info->wms_bill_number; $mail_no = $return['mailNo']; $row = DB::connection('oracle')->transaction(function () use ($order_no, $mail_no) { OracleDOCOrderHeader::query()->where('orderno', $order_no)->update(['edittime' => Carbon::now(), 'soreference5' => $mail_no]); LogService::log(__METHOD__, "申请快递单号回传WMS", ['orderno' => $order_no, 'soreference5' => $mail_no, 'edittime' => date('Y-m-d H:i:s')]); }); if ($row) return true; } } } } return false; } }