"'BJSIC-41','BJSIC-42'" ,"BJSIC-43" => "'BJSIC-41','BJSIC-42','BJSIC-43'" ,"XASIC-42" => "'XASIC-41','XASIC-42'" ); public $special_route_name = array( "BJSIC-42" => "北京精品两日游(目的地BJSIC-42)" ,"BJSIC-43" => "北京精品三日游(目的地BJSIC-43)" ,"XASIC-42" => "西安精品两日游(目的地XASIC-42)" ); public $city_info = array( "北京分公司" => array( "PlanVEI_SN" => 1343 ,"COLI_sourcetype" => 32090 ,"routeType" => "北京目的地线路" ), "总部" => array( "PlanVEI_SN" => 1343 ,"COLI_sourcetype" => 32090 ,"routeType" => "北京目的地线路" ), "西安分公司" => array( "PlanVEI_SN" => 30548 ,"COLI_sourcetype" => 32116 ,"routeType" => "西安目的地线路" ), "上海分公司" => array( "PlanVEI_SN" => 29188 ,"COLI_sourcetype" => 32112 ,"routeType" => "上海目的地线路" ) ); public $vendor_ids = array(1343,30548,29188); // userId key // 1343 2e47c3721e3ff6e816fe6b928d7acc7d // 29188 95c3b0d958a79a1216e651df182b3cb4 // 30548 9db75a2dc17156eb122364295804b7a2 // test // public $list_url = "http://dj.ltsoftware.net:9901/action/api/searchRouteOrder/"; // public $detail_url = "http://dj.ltsoftware.net:9901/action/api/detailRouteOrder/"; public $neworder_url = "http://dj.ltsoftware.net:9901/action/api/addOrUpdateRouteOrder/"; // Live public $list_url = "http://djb3c.ltsoftware.net:9921/action/api/searchRouteOrder/"; public $detail_url = "http://djb3c.ltsoftware.net:9921/action/api/detailRouteOrder/"; // public $neworder_url = "http://djb3c.ltsoftware.net:9921/action/api/addOrUpdateRouteOrder/"; public function __construct(){ parent::__construct(); mb_regex_encoding("UTF-8"); bcscale(4); $this->load->helper('array'); $this->load->model('Orders_model'); $this->load->model('TuLanDuo_queryContentBuilder', 'tld_order'); // $this->output->enable_profiler(TRUE); /** test */ // $this->userId = "358"; // $this->key = "a08f26ddc5b1bd4c8e5eafcac28fc1ec"; /** Live */ // 目的地 $this->userId = "1134"; $this->key = "73d180d05d425fd192e1c5b3097e75ff"; // 桂林海纳国旅 // $this->userId = "18"; // $this->key = "d05c25e6e6c5d4898161e0aaf700d9c7"; } /*! * 发送预订计划到地接系统 * TODO read word into remark * @date 2018-05-02 * @param string $COLI_ID HT系统订单号 */ public function order_push($COLI_ID="") // test { // exit(); /** 目的地 test */ $this->userId = "358"; $this->key = "a08f26ddc5b1bd4c8e5eafcac28fc1ec"; $this->load->model('TuLanDuo_addOrUpdateRouteOrderContentBuilder', 'tldOrderBuilder'); $orderinfo = $this->Orders_model->get_orderinfo_detail($COLI_ID); if(empty($orderinfo)) {return;} $COLD_SN_str = implode(',', array_map( function($element){return $element->COLD_SN;}, $orderinfo )) ; $guestlist = $this->Orders_model->get_guestlist($COLD_SN_str); $scheduleDetails = $this->Orders_model->get_scheduleDetails($COLD_SN_str); $routeName = isset($this->special_route_name[$scheduleDetails[0]->PAG_Code]) ? $this->special_route_name[$scheduleDetails[0]->PAG_Code] : $scheduleDetails[0]->PAG2_Name; // 子线路 if ($scheduleDetails[0]->PAGS_CN_Title) { $routeName .= "[" . $scheduleDetails[0]->PAGS_CN_Title . "]"; } $routeName .= " " . $scheduleDetails[0]->PAG_Code; if (isset($this->special_route[$scheduleDetails[0]->PAG_Code])) { $scheduleDetails = $this->Orders_model->get_packageDetails($this->special_route[$scheduleDetails[0]->PAG_Code]); } $travelFees = $this->Orders_model->get_paymentDetails($COLI_ID); bcscale(4); $this->tldOrderBuilder->setUserId($this->userId) ->setKey($this->key) ->setOrderType(2) // todo ->setRouteName($routeName) ->setRouteType($scheduleDetails[0]->CII2_Name . "目的地线路") ->setAgcOrderNo($orderinfo[0]->COLI_GroupCode . "-" . $scheduleDetails[0]->CII2_Name) ->setAdultNum($orderinfo[0]->COLD_PersonNum) ->setChildNum($orderinfo[0]->COLD_ChildNum) ->setDestination($scheduleDetails[0]->CII2_Name) ->setTravelDate(strstr($orderinfo[0]->COLD_StartDate, " ", true)) ->setLeavedDate(strstr($orderinfo[0]->COLD_EndDate, " ", true)) ->setOrderRemark(trim($orderinfo[0]->COLI_Memo . "\r\n" . $orderinfo[0]->COLD_Memo . "\r\n" . $orderinfo[0]->COLD_MemoText)); // todo 抵离交通 foreach ($guestlist as $key => $vg) { $this->tldOrderBuilder->setCustomersName($key, $vg->BPE_FirstName) ->setCustomersPeopleType($key, ($vg->BPE_GuestType==1 ? "成人" : "儿童")) ->setCustomersDocumentType($key, "护照") // Passport No. ->setCustomersDocumentNo($key, $vg->BPE_Passport) ->setCustomersOtherInfo($key, $this->Orders_model->GetNationalityName($orderinfo[0]->GUT_NationalityID)); } foreach ($scheduleDetails as $ks => $vs) { $this->tldOrderBuilder->setScheduleDetailsContent($ks, $vs->PAG2_Title) ->setScheduleDetailsTitle($ks, $vs->PAG2_Name) // ->set_scheduleDetails($ks, "traffic", ($vs->PAG_Vehicle>60001 ? 1 : 0)) ->setScheduleDetailsBreakFirst($ks, 0 ) ->setScheduleDetailsDinner($ks, (in_array($vs->PAG_Meal, array('61003', '61004')) ? 1 : 0) ) ->setScheduleDetailsLunch($ks, (in_array($vs->PAG_Meal, array('61002', '61004')) ? 1 : 0)); } foreach ($travelFees as $kf => $vf) { // todo 发生退款或多笔收款 $this->tldOrderBuilder->setTravelFeesType($kf, "Per Group") ->setTravelFeesMoney($kf, $vf->GAI_SQJE) ->setTravelFeesNum($kf, 1) ->setTravelFeesUnit($kf, bcdiv($vf->GAI_SSJE, $vf->GAI_SQJE)) ->setTravelFeesSumMoney($kf, $vf->GAI_SSJE) ->setTravelFeesRemark($kf, $vf->GAI_Memo); } var_dump(($this->tldOrderBuilder->getBizContent())); // $resp = $this->excute_curl($this->neworder_url, $this->tldOrderBuilder); /** BIZ_GroupCombineInfo */ // if (json_decode($resp)->status == 1) { // log_message('error','in GCI ' . json_decode($resp)->responseData->orderId); // $this->Orders_model->GCI_COLI_SN = $orderinfo[0]->COLI_SN; // $this->Orders_model->GCI_GRI_SN = $orderinfo[0]->COLI_GRI_SN; // $this->Orders_model->GCI_VendorOrderId = json_decode($resp)->responseData->orderId; // $this->Orders_model->GCI_FromAgc = "D目的地桂林组"; // $this->Orders_model->biz_groupcombineinfo_save(); // } // email 供应商 todo echo "Order Push done."; return; } /*! * 订单状态变更,调度变更 * (地接社调用, 并邮件通知外联) */ public function order_change() { $this->load->model('Order_update'); $ret['status'] = -1; $ret['errMsg'] = "未知错误"; $input = $this->input->post(); $vendorID = $input['userId']; $validate = $this->calc_key($vendorID, $input['key']); if ($validate !== TRUE) { $ret['errMsg'] = "身份验证失败."; return $this->output->set_content_type('application/json')->set_output(json_encode($ret)); } // $vendorID = 29188;//29188 1343; // test $vas_info = array(); if (in_array($input['agcName'], array("D目的地桂林组", "Trippest"))) { $vas_info = $this->Orders_model->get_vendorarrangestate_byVendor($input['orderId'], $vendorID); if (empty($vas_info) && ! empty($input['agcOrderNo'])) { $real_groupCode = analysis_groupCode($input['agcOrderNo']); $vas_info = $this->Orders_model->get_vendorarrangestate_byGroup($real_groupCode, $vendorID); } } elseif ($input['agcName'] == '桂林海纳国旅') { $real_groupCode = analysis_groupCode($input['agcOrderNo']); $vas_info = $this->Orders_model->get_vendorarrangestate_byGroup_T($real_groupCode, $vendorID); } if (empty($vas_info)) { $ret['errMsg'] = "未找到订单."; } else { $vendor_manager = $this->Orders_model->get_vendorContact($vendorID); /** VendorArrangeState */ $VAS_ConfirmInfo = $input['orderRemark'] . "\r\n======确认人: " . $input['orderDuty'] . ", 确认时间: " . $input['orderTime']; $VAS_ConfirmInfo .= "\r\n" . $vas_info[0]->VAS_ConfirmInfo; $update_vas = $this->Order_update->vendorStatus_update($vas_info[0]->VAS_SN, $vendor_manager->LMI_SN, $VAS_ConfirmInfo); if (in_array($input['agcName'], array("D目的地桂林组", "Trippest"))) { // 传统团的不需要更新订单主表 /** BIZ_confirmlineinfo */ $this->Order_update->coli_where_update = " COLI_SN=" . $vas_info[0]->COLI_SN; $coli_update_column = array( "COLI_State" => 7 ); $update_coli = $this->Order_update->biz_confirmlineinfo_update($coli_update_column); } if ($update_vas === TRUE) { $ret['status'] = 1; $ret['errMsg'] = ""; } } if ($ret['status'] !== 1) { log_message('error','图兰朵确认上报失败. POST RAW: ' . raw_json_encode($input) . "; Result: " . raw_json_encode($ret)); } $sender_name = "中华游供应商合作平台"; $sender_mail = "info@chinahighlights.net"; $from_name = $vendor_manager->LMI2_Name; $from_mail = $vendor_manager->LMI_ListMail; $to_name = $vas_info[0]->OPI_Name; $to_mail = $vas_info[0]->OPI_Email; $subject = $input['agcOrderNo'] . "团已确认: " . $vendor_manager->VEI2_CompanyBN; $mail_body = $vendor_manager->VEI2_CompanyBN . "对团" . $input['agcOrderNo'] . "的计划在" . $input['orderTime'] . "已确认。\r\n"; $mail_body .= "确认说明:" . $input['orderRemark'] . "\r\n"; $mail_body .= "确认人:$vendor_manager->LMI2_Name $vendor_manager->LMI_ListMail 固定电话: $vendor_manager->LMI_Telephone 移动电话:$vendor_manager->LMI_Mobile\r\n"; $mail_body .= "变更内容: " . $vas_info[0]->VAS_ChangeText . "\r\n"; $this->Orders_model->save_automail($sender_name, $sender_mail, $from_name, $from_mail, $to_name, $to_mail, $subject, $mail_body, $sender_name); return $this->output->set_content_type('application/json')->set_output(json_encode($ret)); } protected function excute_curl($url, $content_builder) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FAILONERROR, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_HTTPHEADER, array( "Accept: application/json" )); $params_str = $content_builder->getBizContent(); $postBody = array('jsonParams' => $params_str, "notHander" => 1); if (is_string($params_str) && 0 < mb_strlen($params_str)) { curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $postBody); } $reponse = curl_exec($ch); $eval_resp = json_decode($reponse); if (curl_errno($ch) || $eval_resp->status == 0) { log_message('error', "curl error code: ".curl_error($ch) . $eval_resp->errMsg . "; curl postBodyString: ".json_encode($postBody)); } else { $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); if (200 !== $httpStatusCode) { log_message('error', "Request html Status Code: ".$httpStatusCode."; curl postBodyString: ".json_encode($postBody)); } } curl_close($ch); return $reponse; } public function pag_no_tmp($routeName='') { return array( "故宫深度一日游(目的地)" => "BJSIC-44" ,"故宫深度游拼团(目的地)" => "BJSIC-44" ,"北京精品一日游(目的地)" => "BJSIC-41" ,"北京精品一日游(PVT)(目的地)" => "BJSIC-41" ,"北京精品两日游(目的地)" => "BJSIC-42" ,"北京精品两日游(PVT)(目的地)" => "BJSIC-42" ,"北京精品三日游(目的地)" => "BJSIC-43" ,"北京精品游D2(目的地)" => "BJSIC-42" ,"北京精品游D3(目的地)" => "BJSIC-43" ,"北京单租车服务(目的地)" => "BJALC-209" ,"北京单租车接送(常规)" => "BJALC-209" ,"北京单租车接送服务(目的地)" => "BJALC-209" ,"北京市内-天津新港大车接送(目的地)" => "BJSIC-16" ,"天津新港-北京市内大车接送(目的地)" => "BJSIC-16" ,"箭扣-慕田峪徒步一日游(目的地)" => "BJSIC-45" ,"箭扣-慕田峪徒步一日游(PVT)(目的地)" => "BJSIC-45" ,"箭扣-慕田峪长城徒步拼团(目的地)" => "BJSIC-45" ,"司马台西-金山岭徒步一日游(目的地)" => "BJSIC-46" ,"司马台西-金山岭徒步一日游(PVT)(目的地)" => "BJSIC-46" ,"司马台西-金山岭长城徒步拼团(目的地)" => "BJSIC-46" ,"慕田峪半日游拼团(目的地)" => "BJSIC-47" ,"慕田峪半日游PVT(目的地)" => "BJSIC-47" ,"古北口长城徒步一日游(目的地)" => "BJSIC-48" ,"古北口(目的地)" => "BJSIC-48" ,"半日游广场故宫拼团(目的地)" => "BJSIC-41" // ,=> ,"西安精品一日游(目的地)" => "XASIC-41" ,"西安精品一日游PVT(目的地)" => "XASIC-41" ,"西安市内精品一日游(目的地)" => "XASIC-41" ,"西安精品两日游(目的地)" => "XASIC-42" ,"西安单租车服务(目的地)" => "XASIC-17" ,"西安单租车接送服务(目的地)" => "XASIC-17" ,"西安单租车接送服务" => "XASIC-17" ,"西安兵马俑精品一日游(目的地)" => "XASIC-41" ,"西安兵马俑精华一日游(目的地)" => "XASIC-41" ,"西安兵马俑精品半日游(目的地)" => "XASIC-15" ,"西安兵马俑精品半日游PVT(目的地)" => "XASIC-15" ,"西安汉阳陵市内精品一日游(目的地)" => "XASIC-42" // ,=> ,"上海精品一日游(目的地)" => "SHSIC-41" ,"上海精品游PVT线路(目的地)" => "SHSIC-41" ,"上海市内精品一日游(目的地)" => "SHSIC-42" ,"周庄锦溪精品一日游(目的地)" => "SHSIC-43" ,"苏州精品一日游(目的地)" => "SHSIC-44" ,"上海单租车(目的地)" => "SHSIC-45" //"SHALC-6,7,8,9" ,"上海单租车接送服务(目的地)" => "SHSIC-45" //"SHALC-6,7,8,9" ); } public function calc_key($userId, $key) { $default = "b825e39422a54875a95752fc7ed6f5d2"; $ret = md5(hash("sha256", $userId.$default)); return $ret===$key; } }