diff --git a/webht/third_party/vendorPlanSync/controllers/index.php b/webht/third_party/vendorPlanSync/controllers/index.php index 95f4d734..25fc9c5d 100644 --- a/webht/third_party/vendorPlanSync/controllers/index.php +++ b/webht/third_party/vendorPlanSync/controllers/index.php @@ -1,18 +1,21 @@ load->helper('array'); $this->load->library('vendor'); $this->load->model('UserAuth_model'); $this->load->model('Group_model'); $this->load->model('BIZ_Orders_model'); - } /*! @@ -21,28 +24,33 @@ class Index extends CI_Controller { * * 使用供应商平台登陆账号获取接口的key */ - public function index() + public function index($GRI_SN=0) { $auto_vendor_str = implode(",", $this->vendor->auto_vendor); - return $this->push(0, $auto_vendor_str); + return $this->push($GRI_SN, $auto_vendor_str); } public function push($GRI_SN=0, $vendor_str=null) { +log_message('error',"\n\n---------------------------------------------------PUSH------------------------------------------------------------\n"); $start_date = date('Y-m-d'); $end_date = date('Y-m-d 23:59:59', strtotime("+2 months")); + // test + $start_date = '2019-03-27'; + $end_date = '2019-07-27 23:59:59'; $ready_to_send = $this->Group_model->get_plan_not_received(1, $GRI_SN, $vendor_str, $start_date, $end_date); +// log_message('error',var_export($ready_to_send, 1)); if (empty($ready_to_send)) { return $this->output->set_output("empty"); } $order = $ready_to_send[0]; if (isset($this->vendor->vendor_fun[strval($order->VAS_VEI_SN)])) { - $controller_name = $this->vendor->vendor_fun[strval($order->VAS_VEI_SN)]; - require_once($controller_name . ".php"); - $vendor_class = new $controller_name(); - $call_fun = $vendor_class->order_push($order); - log_message('error',"Call [$controller_name>order_push] " . $order->GRI_SN); - return $this->output->set_output($call_fun . $order->GRI_SN); + $vendor_class = $this->vendor->vendor_fun[strval($order->VAS_VEI_SN)]; + $this->load->library($vendor_class); + $vendor_class_name = mb_strtolower($vendor_class); + $call_fun = $this->$vendor_class_name->order_push($order); + log_message('error',"Call [$vendor_class>order_push] " . $order->GRI_SN . ". " . $call_fun); + return $this->output->set_output($call_fun . ". " . $order->GRI_SN); } return $this->output->set_output("Not found vendor function. " . $order->GRI_SN); } @@ -170,10 +178,11 @@ class Index extends CI_Controller { } // 需要填写导游, 则根据不同的供应商调用相应的方法 if (isset($this->vendor->vendor_fun[strval($input['openId'])])) { - $controller_name = $this->vendor->vendor_fun[strval($input['openId'])]; - require_once($controller_name . '.php'); - $vendor_class = new $controller_name(); - $ret = $vendor_class->tourguide_update($input, $vps, $eva); + $vendor_class = $this->vendor->vendor_fun[strval($input['openId'])]; + $this->load->library($vendor_class); + $vendor_class_name = mb_strtolower($vendor_class); + $ret = $this->$vendor_class_name->tourguide_update($input, $vps, $eva); + $err_code = $ret['err']; unset($ret['err']); // 不返回给接收方 $sync_ret = array( diff --git a/webht/third_party/vendorPlanSync/controllers/Tulanduo.php b/webht/third_party/vendorPlanSync/libraries/Tulanduo.php similarity index 71% rename from webht/third_party/vendorPlanSync/controllers/Tulanduo.php rename to webht/third_party/vendorPlanSync/libraries/Tulanduo.php index 330f6b24..08fe8ddd 100644 --- a/webht/third_party/vendorPlanSync/controllers/Tulanduo.php +++ b/webht/third_party/vendorPlanSync/libraries/Tulanduo.php @@ -3,10 +3,12 @@ if (!defined('BASEPATH')) exit('No direct script access allowed'); -class Tulanduo extends CI_Controller +class Tulanduo { - /** Live */ - /** + protected $ci; + + /*! Live */ + /*! 目的地 $this->userId = "1134"; $this->key = "73d180d05d425fd192e1c5b3097e75ff"; @@ -14,29 +16,29 @@ class Tulanduo extends CI_Controller $this->userId = "18"; $this->key = "d05c25e6e6c5d4898161e0aaf700d9c7"; */ - // private $send_host = array( - // "30" => array( - // "userId" => 1134 - // ,"key" => "73d180d05d425fd192e1c5b3097e75ff" - // ) - // ,"1" => array( - // "userId" => 18 - // ,"key" => "d05c25e6e6c5d4898161e0aaf700d9c7" - // ) - // ); - /** - * test - */ private $send_host = array( "30" => array( - "userId" => 512 - ,"key" => "4d9bde5ce79d6093e4a98bebbd3892c2" + "userId" => 1134 + ,"key" => "73d180d05d425fd192e1c5b3097e75ff" ) ,"1" => array( - "userId" => 512 - ,"key" => "4d9bde5ce79d6093e4a98bebbd3892c2" + "userId" => 18 + ,"key" => "d05c25e6e6c5d4898161e0aaf700d9c7" ) ); + /*! + * test + */ + // private $send_host = array( + // "30" => array( + // "userId" => 6035 + // ,"key" => "3bd16efd5f4165378f144da1f4829996" + // ) + // ,"1" => array( + // "userId" => 6035 + // ,"key" => "3bd16efd5f4165378f144da1f4829996" + // ) + // ); // userId key // 1343 2e47c3721e3ff6e816fe6b928d7acc7d @@ -44,28 +46,28 @@ class Tulanduo extends CI_Controller // 30548 9db75a2dc17156eb122364295804b7a2 // test - public $list_url = "http://ltdj.ltsoftware.net:19919/action/api/searchRouteOrder/"; - public $detail_url = "http://ltdj.ltsoftware.net:19919/action/api/detailRouteOrder/"; - public $neworder_url = "http://ltdj.ltsoftware.net:19919/action/api/addOrUpdateRouteOrder/"; + // public $list_url = "http://ltdj.ltsoftware.net:19919/action/api/searchRouteOrder/"; + // public $detail_url = "http://ltdj.ltsoftware.net:19919/action/api/detailRouteOrder/"; + // public $neworder_url = "http://ltdj.ltsoftware.net:19919/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 $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(); + $this->ci =& get_instance(); mb_regex_encoding("UTF-8"); bcscale(4); - $this->load->helper('array'); - $this->load->library('trippest'); - $this->load->model('Group_model'); - $this->load->model('orders_model'); - $this->load->model('BIZ_orders_model', 'BIZ_order'); - $this->load->model('TuLanDuo_queryContentBuilder', 'tld_order'); - $this->load->model('TuLanDuo_addOrUpdateRouteOrderContentBuilder', 'tldOrderBuilder'); + $this->ci->load->helper('array'); + $this->ci->load->library('trippest'); + $this->ci->load->model('Group_model'); + $this->ci->load->model('orders_model'); + $this->ci->load->model('BIZ_orders_model', 'BIZ_order'); + $this->ci->load->model('TuLanDuo_queryContentBuilder', 'tld_order'); + $this->ci->load->model('TuLanDuo_addOrUpdateRouteOrderContentBuilder', 'tldOrderBuilder'); // $this->output->enable_profiler(TRUE); - $this->vendor_ids = $this->trippest->tulanduo_vei_sn; + $this->vendor_ids = array(1343,30548,29188); } public function order_push($order=null) @@ -76,10 +78,12 @@ class Tulanduo extends CI_Controller } // 商务 if (strval($order->GRI_OrderType) === "227002") { + return false; // for Trippest deploy return $this->push_tour($order); } // 传统订单 if (strval($order->GRI_OrderType) === "227001") { + return false; // for Trippest deploy return $this->push_tour($order); } @@ -92,6 +96,7 @@ class Tulanduo extends CI_Controller */ public function push_tour($vas=null) { + return false; // for Trippest deploy $userId = $this->send_host["1"]["userId"]; $userKey = $this->send_host["1"]["key"]; $gri_sn = $vas->GRI_SN; @@ -104,19 +109,22 @@ class Tulanduo extends CI_Controller $change_info = $change_arr[0][0]; } $change_info = str_replace("\n", "
", $change_info); - $grd_info = $this->Group_model->get_vendor_plan_info($gri_sn, $vei_sn); + $grd_info = $this->ci->Group_model->get_vendor_plan_info($gri_sn, $vei_sn); + if (empty($grd_info)) { + return false; + } $all_day_no = array_map(function($ele){return $ele->GRD_DayNo;}, $grd_info); - $routeType = "桂林海纳国旅"; // todo 线路类型 - $arrange_info = $this->Group_model->get_arrange_info($gri_sn, $vei_sn); - $routeName = "中华游" . $arrange_info[0]->tocity . "线路"; // todo 线路名称 + $arrange_info = $this->ci->Group_model->get_arrange_info($gri_sn, $vei_sn); + $routeName = "中华游" . $arrange_info[0]->tocity . "线路"; // TODO 线路名称 + $routeType = "桂林海纳国旅"; // TODO 线路类型 $agcOrderNo = $vas->GRI_Name . "-" . $arrange_info[0]->citycode; $agcOrderNo .= "(" . $vas->operator . ")"; $first_date = $grd_info[0]->day_no_raw; $last_date = count($grd_info)-1; $end_date = $grd_info[$last_date]->day_no_raw; - $request_info = $this->Group_model->get_plan_request($gri_sn); + $request_info = $this->ci->Group_model->get_plan_request($gri_sn); $order_type = 1; - $this->tldOrderBuilder->setUserId($userId) + $this->ci->tldOrderBuilder->setUserId($userId) ->setKey($userKey) ->setOrderType($order_type) ->setRouteName($routeName) @@ -127,33 +135,34 @@ class Tulanduo extends CI_Controller ->setDestination($arrange_info[0]->tocity) ->setTravelDate($first_date) ->setLeavedDate($end_date) - // ->setOrderRemark($order_remark) // 订单备注 + // ->setOrderRemark($order_remark) // 订单备注 TODO ->setRoomStandard($request_info->GCI_HotelRequest) // 住房标准 ->setRouteStandard($request_info->GCI_Request) // 行程服务标准 ; - $guestlist = $this->orders_model->get_customer_list($gri_sn); + $guestlist = $this->ci->orders_model->get_customer_list($gri_sn); foreach ($guestlist as $key => $vg) { - $this->tldOrderBuilder->setCustomersName($key, $vg->MemberName ) + $this->ci->tldOrderBuilder->setCustomersName($key, $vg->MemberName ) ->setCustomersPeopleType($key, (calc_age_type($vg->BirthDay)==1 ? "成人" : "儿童")) ->setCustomersDocumentType($key, "护照") // Passport No. ->setCustomersDocumentNo($key, $vg->PassportNo) ->setCustomersOtherInfo($key, $vg->Country); } - $travel_fee = 0; - foreach ($arrange_info as $kaci => $vaci) { - $travel_fee = bcadd($travel_fee, $vaci->ACI_Amount); - } - $this->tldOrderBuilder->setTravelFeesType(0, "Per Group") - ->setTravelFeesMoney(0, $travel_fee) - ->setTravelFeesNum(0, 1) - ->setTravelFeesUnit(0, 1) - ->setTravelFeesSumMoney(0, $travel_fee) - ->setTravelFeesRemark(0, ""); - // 补全空的日期,行车为空 + // $travel_fee = 0; + // foreach ($arrange_info as $kaci => $vaci) { + // $travel_fee = bcadd($travel_fee, $vaci->ACI_Amount); + // } + // // TODO 是否需要travelFee + // $this->ci->tldOrderBuilder->setTravelFeesType(0, "Per Group") + // ->setTravelFeesMoney(0, $travel_fee) + // ->setTravelFeesNum(0, 1) + // ->setTravelFeesUnit(0, 1) + // ->setTravelFeesSumMoney(0, $travel_fee) + // ->setTravelFeesRemark(0, ""); + // 补全空的日期,行程为空 $date1 = new DateTime($first_date); $date_end = new DateTime($end_date); $date_diff = $date_end->diff($date1); - $d = ($date_diff->format("%d")); + $d = ($date_diff->format("%a")); $all_date = array(); for ($j=0; $j < ($d+1); $j++) { $all_date[] = date('Y-m-d', strtotime("+$j day", strtotime($first_date))); @@ -161,7 +170,7 @@ class Tulanduo extends CI_Controller $real_date = array_map(function ($ele){return $ele->day_no_raw;}, $grd_info); foreach ($all_date as $kd => $vd) { if ( ! in_array($vd, $real_date)) { - $this->tldOrderBuilder->setScheduleDetailsTitle($kd, "无") + $this->ci->tldOrderBuilder->setScheduleDetailsTitle($kd, "无") ->setScheduleDetailsContent($kd, "无") ->setScheduleDetailsAccommodation($kd, "") // ->setScheduleDetailsTraffic($kd, ($vso->PAG_Vehicle>60001 ? 1 : 0)) @@ -173,7 +182,7 @@ class Tulanduo extends CI_Controller } foreach ($grd_info as $kgrd => $vgrd) { if ($vd==$vgrd->day_no_raw) { - $this->tldOrderBuilder->setScheduleDetailsTitle($kd, $vgrd->GRD_OrderDate) + $this->ci->tldOrderBuilder->setScheduleDetailsTitle($kd, $vgrd->GRD_OrderDate) ->setScheduleDetailsContent($kd, $vgrd->GRD_Landscape) ->setScheduleDetailsAccommodation($kd, $vgrd->GRD_Hotel) ->setScheduleDetailsTraffic($kd, ($vgrd->GRD_Traffic)) @@ -184,55 +193,39 @@ class Tulanduo extends CI_Controller } } } - // 查询是否变更 + // 查询是否变更 TODO deprecated $sync_orderstate = 10; $vps_sn = 0; $vendor_orderid = 0; - $plan_detail_page_url = "http://p.mycht.cn/Cooperate/Plan_Detail.aspx?GSN=" . $gri_sn; - $plan_detail_page = "
计划下载:$plan_detail_page_url
"; - if (intval($is_send_vary)===1) { - $vps = $this->Group_model->get_sync_info($vas_sn); - if ( ! empty($vps)) { - $vps_sn = $vps->VPS_SN; - $vendor_orderid = $vps->VPS_externalId; - $sync_orderstate = 11; - $modifyLogInfo = "$plan_detail_page
$change_info
"; - $this->tldOrderBuilder->setOrderId($vendor_orderid) - ->setModifyLogInfo($modifyLogInfo) - ; - } - } else { - $modifyLogInfo = $plan_detail_page; - $this->tldOrderBuilder->clearModifyLogInfo(); - $this->tldOrderBuilder->setModifyLogInfo($modifyLogInfo) - ; - } - $resp = $this->excute_curl($this->neworder_url, $this->tldOrderBuilder); - // $resp = '{"status":1,"errMsg":"","responseData":{"orderId":' . rand(1000,9999) . '}}'; // test + $this->ci->tldOrderBuilder->clearModifyLogInfo(); + // $resp = $this->excute_curl($this->neworder_url, $this->ci->tldOrderBuilder); + $resp = '{"status":1,"errMsg":"","responseData":{"orderId":' . rand(1000,9999) . '}}'; // test +echo $this->ci->tldOrderBuilder->getBizContent(); +log_message('error',$resp); $response = json_decode($resp); if ($response->status == 1) { /** VendorPlanSync */ $sync_ret = array( "VPS_VAS_SN" => $vas_sn - ,"VPS_GRI_SN" => $gri_sn - ,"VPS_VEI_SN" => $vei_sn - ,"VPS_startDate" => $first_date - ,"VPS_endDate" => $end_date - ,"VPS_sendHost" => $userId - ,"VPS_externalId" => $response->responseData->orderId - ,"VPS_externalorderType" => $order_type - ,"VPS_externalorderState" => $sync_orderstate - ,"VPS_sendTime" => date('Y-m-d H:i:s') + ,"VPS_GRI_SN" => $gri_sn + ,"VPS_VEI_SN" => $vei_sn + ,"VPS_startDate" => $first_date + ,"VPS_endDate" => $end_date + ,"VPS_sendHost" => $userId + ,"VPS_externalId" => $response->responseData->orderId + ,"VPS_externalorderType" => $order_type + ,"VPS_externalorderState" => $sync_orderstate + ,"VPS_sendTime" => date('Y-m-d H:i:s') ); if ($vps_sn === 0) { - $sync_id = $this->Group_model->insert_VendorPlanSync($sync_ret); + $sync_id = $this->ci->Group_model->insert_VendorPlanSync($sync_ret); } else { - $update = $this->Group_model->update_VendorPlanSync($vps_sn, $sync_ret); + $update = $this->ci->Group_model->update_VendorPlanSync($vps_sn, $sync_ret); } /** VendorArrangeState VAS_IsReceive */ - $this->Group_model->set_plan_received($vas_sn); + $this->ci->Group_model->set_plan_received($vas_sn); } - // return $this->tldOrderBuilder->getBizContent() . "[Tulanduo>push_tour] Done. "; + // return $this->ci->tldOrderBuilder->getBizContent() . "[Tulanduo>push_tour] Done. "; return "[Tulanduo>push_tour] Done. "; } @@ -243,7 +236,6 @@ class Tulanduo extends CI_Controller */ public function push_trippest($vas=null) { - // return "[Tulanduo>push_trippest] Done. "; // test /** 目的地 */ $userId = $this->send_host["30"]["userId"]; $userKey = $this->send_host["30"]["key"]; @@ -259,45 +251,88 @@ class Tulanduo extends CI_Controller } $change_info = str_replace("\n", "
", $change_info); $vei_sn_str = implode(",", $this->vendor_ids); - $orderinfo = $this->BIZ_order->get_orderinfo_detail($gri_sn, $vei_sn_str); + $orderinfo = $this->ci->BIZ_order->get_orderinfo_detail($gri_sn, $vei_sn_str); if(empty($orderinfo)) {return "[Tulanduo>push_trippest] Not found order detail. ";} $COLI_ID = $orderinfo[0]->COLI_ID; - $set_pvt = strval($orderinfo[0]->COLI_PVT); - $travelFees = $this->BIZ_order->get_paymentDetails($COLI_ID); - // 按产品拆分 todo:按订单类型拆分? 单团/拼团 + $set_pvt = strval($orderinfo[0]->is_pvt); + // 增加收款方参数, 增加代收款项 + $vei_with_haina = $GLOBALS['__HAINA_VEI__'] . "," . $vei_sn_str; + $all_payment = $this->ci->BIZ_order->get_paymentDetails($COLI_ID, $vei_with_haina); + $paid_to_trippest = array(); + $pay_to_vendor = array(); + foreach ($all_payment as $kall => $vall) { + if (in_array($vall->payment_vei, array($GLOBALS['__HAINA_VEI__'], 0)) ) { + $paid_to_trippest[] = $vall; + } else { + $pay_to_vendor[] = $vall; + } + } + // 收款合并为一条 + if ( ! empty($paid_to_trippest)) { + $travel_fees = $paid_to_trippest[0]; + $travel_fees->SUM_SSJE = 0; + foreach ($paid_to_trippest as $ktf => $vtf) { + $travel_fees->SUM_SSJE = bcadd($travel_fees->SUM_SSJE, $vtf->GAI_SSJE); + } + } + // 代收合并为一条 + if ( ! empty($pay_to_vendor)) { + $replace_collections = $pay_to_vendor[0]; + $replace_collections->SUM_SSJE = 0; + $replace_collections->ALL_Memo = ""; + foreach ($pay_to_vendor as $ktv => $vtv) { + $replace_collections->SUM_SSJE = bcadd($replace_collections->SUM_SSJE, $vtv->GAI_SSJE); + $replace_collections->ALL_Memo .= $vtv->ALL_Memo; + } + } + // 按产品拆分 按订单类型拆分? 单团/拼团; 未设置则按产品类型:接送 $fill_order = array(); $processed_date = array(); $processed_cold = array(); foreach ($orderinfo as $ko => $cold) { if ( ! in_array($cold->COLD_SN, $processed_cold) && $cold->pag_code != '') { $processed_cold[] = $cold->COLD_SN; - $all_package = $this->trippest->tour_code($cold->pag_code); - $pag_info = $this->BIZ_order->get_packageDetails(my_implode("'",",",$all_package)); + $all_package = $this->ci->trippest->tour_code($cold->pag_code); + $pag_info = $this->ci->BIZ_order->get_packageDetails(my_implode("'",",",$all_package)); if ($set_pvt==='1') { $fill_order[0]["cold"][] = $cold; - $fill_order[0]["package_info"] = $pag_info; // todo ??? 这里是否丢失了产品 } else { $fill_order[$cold->pag_code]["cold"][] = $cold; $fill_order[$cold->pag_code]["package_info"] = $pag_info; } } } + // 多产品PVT的合并,避免丢失产品 + $pvt_pagcode = array(); + if ($set_pvt==='1') { + foreach ($fill_order[0]['cold'] as $kcd => $vcd) { + $multi_package = $this->ci->trippest->tour_code($vcd->pag_code); + $pvt_pagcode = array_merge($pvt_pagcode, $multi_package); + } + $fill_order[0]["package_info"] = $this->ci->BIZ_order->get_packageDetails(my_implode("'",",",$pvt_pagcode)); + } // $fill_order = array_values($fill_order); $i=0; $take_apart = count($fill_order)>1 ? true : false; + $coli_sn = 0; foreach ($fill_order as $kf => $vf) { $i++; - $this->tldOrderBuilder->resetBizContent(); - $order_type = intval($vf["package_info"][0]->PAG_ExtendType)===39009 ? 1 : 2; + $coli_sn = $vf['cold'][0]->COLI_SN; + $this->ci->tldOrderBuilder->resetBizContent(); + $order_type = $set_pvt; + if ($set_pvt==='0') { + $code_type_arr = array_map(function($pag) { return intval($pag->PAG_ExtendType); }, $vf["package_info"]); + $order_type = in_array(39009, $code_type_arr) ? 1 : 2; + } $last_code = count($vf["package_info"])-1; $last_date = count($vf["cold"])-1; - $tour_code = ""; - $routeName = $vf["package_info"][0]->PAG2_Name . "(" . mb_strtoupper($vf["cold"][0]->pag_code) . ")"; + $tour_code = mb_strtoupper($vf["cold"][0]->pag_code); + $routeName = $vf["package_info"][0]->PAG2_Name . "(" . $tour_code . ")"; $first_date = strstr($vf["cold"][0]->COLD_StartDate, " ", true); $end_date = strstr($vf["cold"][$last_date]->COLD_EndDate, " ", true); - if (isset($this->trippest->special_route[$vf["cold"][0]->pag_code])) { - $routeName = $this->trippest->special_route[$vf["cold"][0]->pag_code]["name"]; - $extra_day = $this->trippest->special_route[$vf["cold"][0]->pag_code]["day"]-1; + if (isset($this->ci->trippest->special_route[$vf["cold"][0]->pag_code])) { + $routeName = $this->ci->trippest->special_route[$vf["cold"][0]->pag_code]["name"]; + $extra_day = $this->ci->trippest->special_route[$vf["cold"][0]->pag_code]["day"]-1; $end_date = date("Y-m-d", strtotime("+$extra_day day", strtotime($vf["cold"][0]->COLD_StartDate))); } $agcOrderNo = $vf["cold"][0]->COLI_GroupCode . "-" . $vf["package_info"][0]->city_code; @@ -307,12 +342,14 @@ class Tulanduo extends CI_Controller } $agcOrderNo .= "(" . $vf["cold"][0]->operator . ")"; $order_remark = ""; - if (trim($vf['cold'][0]->GUT_TEL) != "") { - $order_remark = "预定人电话:" . trim($vf["cold"][0]->GUT_TEL); + if ($i===1) { // 只写一次备注.备注中可能包含代收信息,避免多次收取 + $order_remark_arr = array_filter(array_map( function($element){return $element->COLD_vendorMemo;}, $vf["cold"] )) ; + $order_remark = empty($order_remark_arr) ? "" : implode("\n", $order_remark_arr) ; } + $COLD_SN_str = implode(',', array_map( function($element){return $element->COLD_SN;}, $vf["cold"] )) ; - $guestlist = $this->BIZ_order->get_guestlist($COLD_SN_str); - $this->tldOrderBuilder->setUserId($userId) + $guestlist = $this->ci->BIZ_order->get_guestlist($COLD_SN_str); + $this->ci->tldOrderBuilder->setUserId($userId) ->setKey($userKey) ->setOrderType($order_type) ->setRouteName($routeName) @@ -324,19 +361,27 @@ class Tulanduo extends CI_Controller ->setTravelDate(strstr($vf["cold"][0]->COLD_StartDate, " ", true)) ->setLeavedDate($end_date) ->setOrderRemark($order_remark) - // ->setOrderRemark(trim($orderinfo[0]->COLI_Memo . "\r\n" . $orderinfo[0]->COLD_Memo . "\r\n" . $orderinfo[0]->COLD_MemoText)) // todo 抵离交通 // ->setToTraffic($toTraffic) // ->setBackTraffic($backTraffic) ; + // 客人列表 foreach ($guestlist as $key => $vg) { - $this->tldOrderBuilder->setCustomersName($key, $vg->BPE_FirstName . " " . $vg->BPE_LastName ) + $this_otherinfo = ""; + $this->ci->tldOrderBuilder->setCustomersName($key, $vg->BPE_FirstName . " " . $vg->BPE_LastName ) ->setCustomersPeopleType($key, ($vg->BPE_GuestType==1 ? "成人" : "儿童")) ->setCustomersDocumentType($key, "护照") // Passport No. ->setCustomersDocumentNo($key, $vg->BPE_Passport) - ->setCustomersOtherInfo($key, $this->BIZ_order->GetNationalityName($vg->BPE_Nationality)); + ; + $this_otherinfo .= $this->ci->BIZ_order->GetNationalityName($vg->BPE_Nationality); + if (trim($vf['cold'][0]->GUT_TEL) != "" && $key===0) { + $this_otherinfo .= "; 电话:"; + $this_otherinfo .= trim($vf["cold"][0]->GUT_POST)!=="" ? "+".trim($vf["cold"][0]->GUT_POST) : "" ; + $this_otherinfo .= " " . trim($vf["cold"][0]->GUT_TEL); + $this->ci->tldOrderBuilder->setCustomersOtherInfo($key, $this_otherinfo); + } } - $scheduleDetails = $this->BIZ_order->get_scheduleDetails($COLD_SN_str); + $scheduleDetails = $this->ci->BIZ_order->get_scheduleDetails($COLD_SN_str); $schedule_obj = array(); foreach ($scheduleDetails as $ks => $vs) { $schedule_obj[substr($vs->COLD_StartDate, 0, 10)]['date'] = substr($vs->COLD_StartDate, 0, 10); @@ -359,10 +404,12 @@ class Tulanduo extends CI_Controller } $this_content .= substr($this_guest, 1); // 酒店 - $hotels = $this->BIZ_order->get_package_order($vs->COLD_SN); + $hotels = $this->ci->BIZ_order->get_package_order($vs->COLD_SN); if (trim($hotels[0]->POI_HotelAddress) != "") { $this_content .= "\r\n酒店地址:" . $hotels[0]->POI_HotelAddress; } + $this_content .= trim($hotels[0]->POI_HotelCheckInName)!=="" ? "\r\n入住人:".$hotels[0]->POI_HotelCheckInName : ""; + $this_content .= trim($hotels[0]->POI_HotelCheckIn)!=="" ? "\r\n入住日期:".$hotels[0]->POI_HotelCheckIn : ""; if ($hotels[0]->POI_FlightsNo) { $this_content .= "\r\n航/车次:" . $hotels[0]->POI_FlightsNo; if ($hotels[0]->POI_FromCity || $hotels[0]->POI_ToCity) { @@ -379,16 +426,16 @@ class Tulanduo extends CI_Controller $schedule_obj[substr($vs->COLD_StartDate, 0, 10)]['accommodation'] = $hotels[0]->POI_Hotel; // 补充行程 $fill_date = array(); - if (isset($this->trippest->special_route[$vs->PAG_Code])) { - for ($j=0; $j < $this->trippest->special_route[$vs->PAG_Code]['day']; $j++) { + if (isset($this->ci->trippest->special_route[$vs->PAG_Code])) { + for ($j=0; $j < $this->ci->trippest->special_route[$vs->PAG_Code]['day']; $j++) { $e_day = date("Y-m-d", strtotime("+$j day", strtotime($vs->COLD_StartDate))); if ( ! isset($schedule_obj[$e_day]['content'])) { $schedule_obj[$e_day]['content'] = ""; } $schedule_obj[$e_day]['date'] = $e_day; $fill_date[] = $e_day; - $schedule_obj[$e_day]['code'] = $this->trippest->special_route[$vs->PAG_Code]['code'][$j]; - $pag_detail = $this->BIZ_order->get_packageDetails("'" . $schedule_obj[$e_day]['code'] . "'"); + $schedule_obj[$e_day]['code'] = $this->ci->trippest->special_route[$vs->PAG_Code]['code'][$j]; + $pag_detail = $this->ci->BIZ_order->get_packageDetails("'" . $schedule_obj[$e_day]['code'] . "'"); $schedule_obj[$e_day]['title'] = $pag_detail[0]->PAG2_Name; $schedule_obj[$e_day]['lunch'] = (in_array($pag_detail[0]->PAG_Meal, array('61002', '61004')) ? 1 : 0); $schedule_obj[$e_day]['dinner'] = (in_array($pag_detail[0]->PAG_Meal, array('61003', '61004')) ? 1 : 0); @@ -424,7 +471,7 @@ class Tulanduo extends CI_Controller $date1 = new DateTime($first_date); $date_end = new DateTime($end_date); $date_diff = $date_end->diff($date1); - $d = ($date_diff->format("%d")); + $d = ($date_diff->format("%a")); $all_date = array(); for ($j=0; $j < ($d+1); $j++) { $all_date[] = date('Y-m-d', strtotime("+$j day", strtotime($first_date))); @@ -432,65 +479,50 @@ class Tulanduo extends CI_Controller $real_date = array_column(array_values($schedule_obj), 'date'); foreach ($all_date as $kd => $vd) { if ( ! in_array($vd, $real_date)) { - $this->tldOrderBuilder->setScheduleDetailsTitle($kd, "无") - ->setScheduleDetailsContent($kd, "无") - ->setScheduleDetailsAccommodation($kd, "") - // ->setScheduleDetailsTraffic($kd, ($vso->PAG_Vehicle>60001 ? 1 : 0)) - ->setScheduleDetailsBreakFirst($kd, 0 ) - ->setScheduleDetailsDinner($kd, 0) - ->setScheduleDetailsLunch($kd, 0) - ; + $this->ci->tldOrderBuilder->setScheduleDetailsTitle($kd, "无") + ->setScheduleDetailsContent($kd, "无") + ->setScheduleDetailsAccommodation($kd, "") + // ->setScheduleDetailsTraffic($kd, ($vso->PAG_Vehicle>60001 ? 1 : 0)) + ->setScheduleDetailsBreakFirst($kd, 0 ) + ->setScheduleDetailsDinner($kd, 0) + ->setScheduleDetailsLunch($kd, 0) + ; continue; } foreach (array_values($schedule_obj) as $kso => $vso) { if ($vd==$vso['date']) { - $this->tldOrderBuilder->setScheduleDetailsTitle($kd, $vso['date']) - ->setScheduleDetailsContent($kd, $vso['content']) - ->setScheduleDetailsAccommodation($kd, $vso['accommodation']) - // ->setScheduleDetailsTraffic($kd, ($vso->PAG_Vehicle>60001 ? 1 : 0)) - ->setScheduleDetailsBreakFirst($kd, 0 ) - ->setScheduleDetailsDinner($kd, $vso['dinner'] ) - ->setScheduleDetailsLunch($kd, $vso['lunch']) - ; + $this->ci->tldOrderBuilder->setScheduleDetailsTitle($kd, $vso['date']) + ->setScheduleDetailsContent($kd, $vso['content']) + ->setScheduleDetailsAccommodation($kd, $vso['accommodation']) + // ->setScheduleDetailsTraffic($kd, ($vso->PAG_Vehicle>60001 ? 1 : 0)) + ->setScheduleDetailsBreakFirst($kd, 0 ) + ->setScheduleDetailsDinner($kd, $vso['dinner'] ) + ->setScheduleDetailsLunch($kd, $vso['lunch']) + ; } } } // 拆分的订单团款录第一个 if ($i===1) { - foreach ($travelFees as $kf => $vf) { - $this->tldOrderBuilder->setTravelFeesType($kf, "Per Group") - ->setTravelFeesMoney($kf, $vf->GAI_SSJE) - ->setTravelFeesNum($kf, 1) - ->setTravelFeesUnit($kf, 1) - ->setTravelFeesSumMoney($kf, $vf->GAI_SSJE) - ->setTravelFeesRemark($kf, $vf->GAI_Memo); + if ( ! empty($travel_fees) ) { + $this->ci->tldOrderBuilder->setTravelFeesType(0, "Per Group") + ->setTravelFeesMoney(0, $travel_fees->SUM_SSJE) + ->setTravelFeesNum(0, 1) + ->setTravelFeesUnit(0, 1) + ->setTravelFeesSumMoney(0, $travel_fees->SUM_SSJE); + } + if ( ! empty($replace_collections) ) { + $this->ci->tldOrderBuilder->setReplaceCollectionsType(0, "Per Group") + ->setReplaceCollectionsMoney(0, $replace_collections->SUM_SSJE) + ->setReplaceCollectionsRemark(0, $replace_collections->ALL_Memo); } } - // 查询是否变更 + // 查询是否变更 TODO deprecated $sync_orderstate = 10; $vps_sn = 0; $vendor_orderid = 0; - $plan_detail_page_url = "http://p.mycht.cn/Cooperate/Plan_Detail.aspx?GSN=" . $gri_sn; - $plan_detail_page = "
计划下载:$plan_detail_page_url
"; - if (intval($is_send_vary)===1) { - $vps = $this->Group_model->get_sync_info($vas_sn, $tour_code); - if ( ! empty($vps)) { - $vps_sn = $vps->VPS_SN; - $vendor_orderid = $vps->VPS_externalId; - $sync_orderstate = 11; - $modifyLogInfo = "$plan_detail_page
$change_info
"; - $this->tldOrderBuilder->setOrderId($vendor_orderid) - ->setModifyLogInfo($modifyLogInfo) - ; - } - } else { - $modifyLogInfo = $plan_detail_page; - $this->tldOrderBuilder->clearModifyLogInfo(); - $this->tldOrderBuilder->setModifyLogInfo($modifyLogInfo) - ; - } - $resp = $this->excute_curl($this->neworder_url, $this->tldOrderBuilder); - // $resp = '{"status":1,"errMsg":"","responseData":{"orderId":' . rand(1000,9999) . '}}'; // test + $this->ci->tldOrderBuilder->clearModifyLogInfo(); + $resp = $this->excute_curl($this->neworder_url, $this->ci->tldOrderBuilder); $response = json_decode($resp); if ($response->status == 1) { /** VendorPlanSync */ @@ -508,19 +540,22 @@ class Tulanduo extends CI_Controller ,"VPS_sendTime" => date('Y-m-d H:i:s') ); if ($vps_sn === 0) { - $sync_id = $this->Group_model->insert_VendorPlanSync($sync_ret); + $sync_id = $this->ci->Group_model->insert_VendorPlanSync($sync_ret); + $this->ci->BIZ_order->insert_biz_order_log($coli_sn, "vendorPlanSendout_" . $tour_code); } else { - $update = $this->Group_model->update_VendorPlanSync($vps_sn, $sync_ret); + $update = $this->ci->Group_model->update_VendorPlanSync($vps_sn, $sync_ret); + $this->ci->BIZ_order->insert_biz_order_log($coli_sn, "vendorPlanUpdateSendout_" . $tour_code); } /** VendorArrangeState VAS_IsReceive */ - $this->Group_model->set_plan_received($vas_sn); + $this->ci->Group_model->set_plan_received($vas_sn); } } - return "[Tulanduo>push_trippest] Done. "; + return "[Tulanduo>push_trippest] Done. " . $COLI_ID; } public function tourguide_update($input, $vps, $eva) { + return false; // for Trippest deploy $ret['status'] = -1; $ret['err'] = 100; $ret['errMsg'] = "未知错误"; @@ -594,6 +629,7 @@ class Tulanduo extends CI_Controller */ public function order_change() { + return false; // for Trippest deploy $this->load->model('Order_update'); $ret['status'] = -1; $ret['errMsg'] = "未知错误"; @@ -658,7 +694,8 @@ class Tulanduo extends CI_Controller } - private function excute_curl($url, $content_builder) { + private function excute_curl($url, $content_builder) + { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FAILONERROR, false); diff --git a/webht/third_party/vendorPlanSync/libraries/trippest.php b/webht/third_party/vendorPlanSync/libraries/trippest.php index dfc48fe6..ebba5748 100644 --- a/webht/third_party/vendorPlanSync/libraries/trippest.php +++ b/webht/third_party/vendorPlanSync/libraries/trippest.php @@ -10,8 +10,6 @@ class Trippest $this->ci =& get_instance(); } - public $tulanduo_vei_sn = array(1343,30548,29188); - public function tour_name($pag_code) { $name = ""; diff --git a/webht/third_party/vendorPlanSync/models/BIZ_orders_model.php b/webht/third_party/vendorPlanSync/models/BIZ_orders_model.php index bef796ca..50307ec4 100644 --- a/webht/third_party/vendorPlanSync/models/BIZ_orders_model.php +++ b/webht/third_party/vendorPlanSync/models/BIZ_orders_model.php @@ -35,12 +35,14 @@ class BIZ_Orders_model extends CI_Model { public function get_orderinfo_detail($gri_sn, $vei_sn_str) { $sql = "SELECT coli.COLI_ID, + coli.COLI_SN, coli.COLI_Department, cold.COLD_ServiceSN, (select PAG_Code from biz_packageinfo where PAG_SN=cold.COLD_ServiceSN) as pag_code, cold.COLD_ServiceSN2, cold.COLD_ServiceCity, gut.GUT_NationalityID, + isnull(COLI_PVT, 0) is_pvt, (select opi2_name from tourmanager.dbo.operatorinfo2 where opi2_opi_sn=coli_opi_id and opi2_lgc=2) as operator, * FROM BIZ_ConfirmLineInfo coli @@ -105,13 +107,25 @@ class BIZ_Orders_model extends CI_Model { return $this->HT->query($sql)->result(); } - public function get_paymentDetails($COLI_ID) + /*! + * [get_paymentDetails description] + * @date 2019-05-22 + * VEI: + * * 30561 桂林海纳国旅 + * GAI_Type + * * 15006 地接代收 + * * 15008 现付 + * * 15017 内部转账 + * * 15020 地接社代收 + */ + public function get_paymentDetails($COLI_ID, $vei_sn_str) { - $sql = "SELECT * + $sql = "SELECT ISNULL(bgai.GAI_VEI_SN,0) payment_vei + ,bgai.* FROM BIZ_GroupAccountInfo bgai INNER JOIN BIZ_ConfirmLineInfo coli ON bgai.GAI_COLI_SN=coli.COLI_SN - WHERE bgai.DeleteFlag=0 AND bgai.GAI_Type NOT IN (15006,15008,15017) - AND ISNULL(bgai.GAI_VEI_SN,0)<>1343 + WHERE bgai.DeleteFlag=0 --AND bgai.GAI_Type NOT IN (15006,15008,15017) + AND ISNULL(bgai.GAI_VEI_SN,0) in (0,$vei_sn_str) AND bgai.GAI_SQJE > 0 AND coli_ID = '$COLI_ID'"; $query = $this->HT->query($sql); @@ -1816,5 +1830,23 @@ class BIZ_Orders_model extends CI_Model { $query = $this->HT->query($sql); } + /*! + * 写入商务订单操作记录 + * @param [int] $coli_sn + * @param [string] $log_info varchar(100) + */ + public function insert_biz_order_log($coli_sn, $log_info) + { + $db_column = array( + "BOL_COLI_SN" => $coli_sn + ,"BOL_OPI_SN" => 29 + ,"BOL_OPType" => $log_info + ,"BOL_OPTime" => date('Y-m-d H:i:s') + ,"BOL_Creator" => 29 + ,"BOL_CreateTime" => date('Y-m-d H:i:s') + ); + return $this->HT->insert("BIZ_OrderOperationLog", $db_column); + } + } diff --git a/webht/third_party/vendorPlanSync/models/Group_model.php b/webht/third_party/vendorPlanSync/models/Group_model.php index e17b8b5e..6d2e4d94 100644 --- a/webht/third_party/vendorPlanSync/models/Group_model.php +++ b/webht/third_party/vendorPlanSync/models/Group_model.php @@ -22,16 +22,18 @@ class Group_model extends CI_Model { inner join GRoupInfo gri on GRI_SN=VAS_GRI_SN where 1=1 "; $sql .= $gri_sn!==0 ? $gri_sql : " - and VAS_IsCancel=0 and VAS_Delete=0 and vas.DeleteFlag=0 - and VAS_IsSendSucceed=1 - and VAS_IsConfirm=0 - and EOI_GetDate between '$start_date' and '$end_date' - and VAS_VEI_SN in ($vendor_str) - and GRI_operator in (161,443,61) -- test - and GRI_OrderType=227002 -- test - and (VAS_IsReceive=0 or (VAS_SendTime > ISNULL(VAS_ReceiveTime,0))) "; - $sql .= " order by EOI_GetDate asc, vas.VAS_IsConfirm asc"; -// log_message('error',$sql); + AND VAS_IsCancel=0 AND VAS_Delete=0 AND vas.DeleteFlag=0 + AND VAS_IsSendSucceed=1 AND VAS_IsReceive=0 + AND EOI_GetDate between '$start_date' AND '$end_date' + AND VAS_VEI_SN in ($vendor_str) + -- Trippest, not confirm, not change -- for Trippest deploy + AND GRI_OrderType=227002 + AND VAS_IsConfirm=0 AND VAS_SendVary=0 + AND EXISTS ( + select 1 from OperatorInfo where OPI_SN=GRI_operator AND OPI_DEI_SN=30 + ) + "; + $sql .= " order by EOI_GetDate asc,vas.VAS_SendTime asc, vas.VAS_IsConfirm asc"; return $this->HT->query($sql)->result(); } @@ -67,17 +69,19 @@ class Group_model extends CI_Model { ); $conn = sqlsrv_connect($db['HT']['hostname'], $connection); $stmt = sqlsrv_query($conn, "EXEC Tourmanager.dbo.SP_VendorPlan_GetPlanInfo $gri_sn, $vendor_id, 0 "); + $result_object = array(); + if (false !== $stmt) { // 无权限返回false,会导致下列sqlsrv_has_rows,sqlsrv_next_result死循环 //存储过程中每一个select都会产生一个结果集,取某个结果集就需要从第一个移动到需要的那个结果集 //如果结果集为空就移到下一个 while (sqlsrv_has_rows($stmt) !== TRUE) { sqlsrv_next_result($stmt); } - $result_object = array(); while ($row = sqlsrv_fetch_object($stmt)) { $result_object[] = $row; } sqlsrv_free_stmt($stmt); - sqlsrv_close($conn); + } + sqlsrv_close($conn); $grd_info = $result_object; $all_day_no = array_map(function($ele){return $ele->GRD_DayNo;}, $grd_info); $day_no_str = implode(",", $all_day_no); @@ -256,6 +260,7 @@ class Group_model extends CI_Model { public function insert_VendorPlanSync($sync_arr=array()) { + $ss = $this->HT->insert_string('VendorPlanSendout', $sync_arr); // testing $this->HT->insert('VendorPlanSendout', $sync_arr); return $this->HT->query("SELECT MAX(VPS_SN) VPS_SN from VendorPlanSendout") ->row()->VPS_SN;