From 439de397311aacc80b021d08e8ec3c21868290d9 Mon Sep 17 00:00:00 2001 From: lyt Date: Thu, 11 Oct 2018 16:12:53 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E6=97=A5=E5=BF=97:=20?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=8E=B7=E5=8F=96=E5=8E=86=E5=8F=B2=E6=95=B0?= =?UTF-8?q?=E6=8D=AE[=E5=88=97=E8=A1=A8=E5=B7=B2=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=AE=8C=E6=AF=95];=20=E5=A2=9E=E5=8A=A0=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E5=8E=86=E5=8F=B2=E6=95=B0=E6=8D=AE=E7=9A=84=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E8=AF=A6=E6=83=85;=20=E4=BF=AE=E6=94=B9=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E7=9A=84=E8=A7=84=E5=88=99,=20=E6=AF=8F?= =?UTF-8?q?=E6=AC=A1=E4=BB=85=E5=90=8C=E6=AD=A5=E4=B8=80=E6=9D=A1;=20?= =?UTF-8?q?=E8=A1=A5=E5=85=85=E7=BC=BA=E5=B0=91=E7=9A=84=E4=BA=A7=E5=93=81?= =?UTF-8?q?=E7=BC=96=E5=8F=B7;=20=E5=AE=8C=E5=96=84tracking=E9=93=BE?= =?UTF-8?q?=E6=8E=A5=E6=95=B0=E6=8D=AE;=20=E8=B4=A2=E5=8A=A1=E8=A1=A8?= =?UTF-8?q?=E8=AE=A1=E7=AE=97:=E5=A2=9E=E5=8A=A0=E9=9D=9E=E5=B8=B8?= =?UTF-8?q?=E8=A7=84=E6=8B=BC=E5=9B=A2=E7=9A=84=E8=AE=A1=E7=AE=97;?= =?UTF-8?q?=E8=A7=A3=E5=86=B3=E4=B8=80=E4=B8=AA=E4=BA=A7=E5=93=81=E6=8B=BC?= =?UTF-8?q?=E5=A4=9A=E4=B8=AA=E5=9B=A2=E9=97=AE=E9=A2=98;=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=B7=B2=E4=B8=8B=E6=9E=B6=E4=BA=A7=E5=93=81=E8=AE=A1?= =?UTF-8?q?=E7=AE=97;=20=E5=A2=9E=E5=8A=A0=E7=9F=AD=E4=BF=A1=E9=80=9A?= =?UTF-8?q?=E7=9F=A5;=E7=9F=AD=E4=BF=A1=E5=8F=91=E9=80=81=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E6=9F=A5=E8=AF=A2;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controllers/TulanduoApi.php | 117 +++++---- .../trippestOrderSync/controllers/api.php | 16 +- .../controllers/order_finance.php | 16 +- .../controllers/send_operation.php | 174 +++++++++++++ .../helpers/array_helper.php | 18 +- .../models/orderFinance_model.php | 24 +- .../trippestOrderSync/models/orders_model.php | 32 +-- .../trippestOrderSync/models/orders_query.php | 3 +- .../models/send_operation_model.php | 135 ++++++++++ .../models/tulanduo_sync_model.php | 18 +- .../views/order_sms_list.php | 25 ++ .../trippestOrderSync/views/sms_log.php | 242 ++++++++++++++++++ 12 files changed, 736 insertions(+), 84 deletions(-) create mode 100644 webht/third_party/trippestOrderSync/controllers/send_operation.php create mode 100644 webht/third_party/trippestOrderSync/models/send_operation_model.php create mode 100644 webht/third_party/trippestOrderSync/views/order_sms_list.php create mode 100644 webht/third_party/trippestOrderSync/views/sms_log.php diff --git a/webht/third_party/trippestOrderSync/controllers/TulanduoApi.php b/webht/third_party/trippestOrderSync/controllers/TulanduoApi.php index 72b382f1..b2054ddf 100644 --- a/webht/third_party/trippestOrderSync/controllers/TulanduoApi.php +++ b/webht/third_party/trippestOrderSync/controllers/TulanduoApi.php @@ -134,7 +134,7 @@ class TulanduoApi extends CI_Controller $unique_order[] = $vo['orderId']; // paypal 手续费订单没有团号 $vo['agcOrderNo'] = (isset($vo['agcOrderNo'])&&$vo['agcOrderNo']!="") ? $vo['agcOrderNo'] : $vo['groupOrderNo']; - $vo['agcOrderNo'] = trim_groupCode(trim($vo['agcOrderNo'])); // 去掉中文的全角空格 + $vo['agcOrderNo'] = (trim($vo['agcOrderNo'])); // 去掉中文的全角空格 $this->Orders_model->BIZ_COLI_SN = null; $this->Orders_model->GRI_SN = null; @@ -191,12 +191,16 @@ class TulanduoApi extends CI_Controller } else { // $startDate = ('2018-04-21'); // $endDate = ('2018-04-22'); // test - $startDate = date('Y-m-d', strtotime("-4 days")); + $startDate = date('Y-m-d'); $endDate = date('Y-m-d', strtotime("+2 days")); $to_update_list = $this->Orders_model->get_groupCombineInfo(0, null, $startDate, $endDate); } + if (empty($to_update_list)) { + return false; + } $unique_orderGroupCombine = array(); // 录入拼团调度时,避免重复 $order = $to_update_list[0]; + log_message('error','vendorID ' . $order->GCI_VendorOrderId); $this->tld_order->setOrderId($order->GCI_VendorOrderId) ->setUserId($this->userId) ->setKey($this->key); @@ -216,7 +220,14 @@ class TulanduoApi extends CI_Controller } return; } - $detail_jsonResp->orderDetail->agcOrderNo = trim_groupCode(trim($detail_jsonResp->orderDetail->agcOrderNo)); // 去掉中文的全角空格 + if (isset($detail_jsonResp->orderDetail->agcOrderNo) && $detail_jsonResp->orderDetail->agcOrderNo!="") { + } else { + $detail_jsonResp->orderDetail->agcOrderNo = $detail_jsonResp->orderDetail->groupOrderNo; + } + if (isset($detail_jsonResp->orderDetail->groupOrderNo)) { + $detail_jsonResp->orderDetail->groupOrderNo = (trim($detail_jsonResp->orderDetail->groupOrderNo)); + } + $detail_jsonResp->orderDetail->agcOrderNo = (trim($detail_jsonResp->orderDetail->agcOrderNo)); // 去掉中文的全角空格 // 目的地的团已经主动取消, 只有其他渠道的团需要更新状态 if (mb_strstr($detail_jsonResp->orderDetail->agcOrderNo, "取消") !== false) { $this->plan_cancel($order->GCI_VendorOrderId); @@ -256,12 +267,12 @@ class TulanduoApi extends CI_Controller if (intval($order->COLI_OPI_ID) === 435 || $order->COLI_ID === null || empty($getInfo_byGroupCodeArr)) { if ( empty($getInfo_byGroupCodeArr)){ $getInfo_byGroupCode = null; // 没有该团号的团信息 - } elseif (strval($getInfo_byGroupCodeArr[0]->COLI_OPI_ID) !== '435') { // 避免intval(null)=0 + } elseif ($order->COLI_ID !== null && strval($getInfo_byGroupCodeArr[0]->COLI_OPI_ID) !== '435') { // 避免intval(null)=0 $getInfo_byGroupCode = $getInfo_byGroupCodeArr[0]; // 渠道和目的地有重复操作的团 $duplicate = true; } else { foreach ($getInfo_byGroupCodeArr as $kg => $vg) { - if ($vg->GRI_No === mb_substr($detail_jsonResp->orderDetail->agcOrderNo, 0, 49)) { + if ($vg->GRI_No === substr(trim_str($detail_jsonResp->orderDetail->agcOrderNo), 0, 49)) { // 地接拆分的团号,需要全部匹配; 否则为没有团信息 $getInfo_byGroupCode = $vg; break; @@ -287,13 +298,14 @@ class TulanduoApi extends CI_Controller $cold_sn = $this->insert_cold($order_detail_arr); } $groupSN = isset($groupSN) ? $groupSN : $getInfo_byGroupCode->GRI_SN; - $coli_sn = isset($coli_sn) ? $coli_sn : $getInfo_byGroupCode->COLI_SN; + $coli_sn = isset($coli_sn)&&intval($coli_sn)!==0 ? $coli_sn : $getInfo_byGroupCode->COLI_SN; $coli_id = isset($coli_id) ? $coli_id : $getInfo_byGroupCode->COLI_ID; $cold_sn = isset($cold_sn) ? $cold_sn : $getInfo_byGroupCode->COLD_SN; $coli_opi_id = 435; $coli_memo = ($getInfo_byGroupCode !== null) ? $getInfo_byGroupCode->COLI_Memo : ""; - $coli_state = ($getInfo_byGroupCode !== null) ? $getInfo_byGroupCode->COLI_State : 9; + $coli_state = 9; $coli_orderdetailtext = ($getInfo_byGroupCode !== null) ? $getInfo_byGroupCode->COLI_OrderDetailText : ""; + $cold_memotext = isset($cold_sn) ? $this->Orders_model->COLD_MemoText : $getInfo_byGroupCode->COLD_MemoText; } else { // 已找到的目的地发的计划 // $getInfo_byGroupCode = $order; @@ -306,6 +318,7 @@ class TulanduoApi extends CI_Controller $cold_sn = $order->COLD_SN; // ???多个子订单 !!!仅用于435创建的订单的更新, 因此仅一个 $coli_opi_id = $order->COLI_OPI_ID; $coli_orderdetailtext = $order->COLI_OrderDetailText; + $cold_memotext = $order->COLD_MemoText; } /** UPDATE */ // HT 订单有重复时, 以图兰朵的团号为正确的订单, 原本已录入的设为无效 @@ -358,31 +371,37 @@ class TulanduoApi extends CI_Controller $coli_update_column["COLI_State"] = $coli_state; $coli_update_column["COLI_Price"] = $travel_fee; $coli_update_column["COLI_CUrrency"] = $travel_fee_currency; - $coli_update_column["COLI_GroupCode"] = mb_substr($detail_jsonResp->orderDetail->agcOrderNo, 0, 49); + $coli_update_column["COLI_GroupCode"] = substr(trim_str($detail_jsonResp->orderDetail->agcOrderNo), 0, 49); } $this->Order_update->biz_confirmlineinfo_update($coli_update_column); /** * update BIZ_ConfirmLineDetail * insert BIZ_BookPeople,BIZ_PackageOrderInfo */ + /** BIZ_ConfirmLineDetail */ + $pag_info = $this->analysis_productcode($detail_jsonResp->orderDetail->routeName, $detail_jsonResp->orderDetail->orderId); + $COLD_MemoText = raw_json_encode(array("Pick up"=>$detail_jsonResp->orderDetail->toTraffic, "Drop off"=>$detail_jsonResp->orderDetail->backTraffic)); + $new_memotext = trim($cold_memotext)===""||(json_decode($cold_memotext)!==null&&!is_numeric(json_decode($cold_memotext))) ? $COLD_MemoText : $cold_memotext; + $cold_update_column = array( + "COLD_MemoText" => $new_memotext + ); + if (intval($coli_opi_id)===435) { + $cold_update_column['COLD_MemoText'] = $COLD_MemoText; + $cold_update_column['COLD_PersonNum'] = $detail_jsonResp->orderDetail->adultNum; + $cold_update_column["COLD_ChildNum"] = $detail_jsonResp->orderDetail->childNum; + $cold_update_column["COLD_ServiceSN"] = $pag_info->serviceinfo->PAG2_PAG_SN; + $cold_update_column["COLD_ServiceSN2"] = $pag_info->pag_sub; + $cold_update_column["COLD_ServiceCity"] = $pag_info->serviceinfo->PAG_CII_SN; + } + $this->Order_update->cold_where_update = " COLD_SN=" . $cold_sn; + $this->Order_update->biz_confirmlinedetail_update($cold_update_column); if (intval($coli_opi_id) === 435) { - /** BIZ_ConfirmLineDetail */ - $pag_info = $this->analysis_productcode($detail_jsonResp->orderDetail->routeName, $detail_jsonResp->orderDetail->orderId); - $cold_update_column = array( - "COLD_PersonNum" => $detail_jsonResp->orderDetail->adultNum - ,"COLD_ChildNum" => $detail_jsonResp->orderDetail->childNum - ,"COLD_ServiceSN" => $pag_info->serviceinfo->PAG2_PAG_SN - ,"COLD_ServiceSN2" => $pag_info->pag_sub - ,"COLD_ServiceCity" => $pag_info->serviceinfo->PAG_CII_SN - ); - $this->Order_update->cold_where_update = " COLD_SN=" . $cold_sn; - $this->Order_update->biz_confirmlinedetail_update($cold_update_column); /** INSERT */ /*BIZ_BookPeople*/ if ($this->Orders_model->bookpeople_exist($cold_sn) === array()) { if (isset($detail_jsonResp->orderDetail->customers)) { foreach ($detail_jsonResp->orderDetail->customers as $kd => $vd) { - $this->Orders_model->BPE_FirstName = $vd->name; + $this->Orders_model->BPE_FirstName = substr($vd->name, 0, 40); $this->Orders_model->BPE_GuestType = $vd->peopleType=="成人" ? 1 : 2; $this->Orders_model->BPE_Passport = $vd->documentNo; $bpe_sn[] = $this->Orders_model->biz_book_people_save(); @@ -440,13 +459,7 @@ class TulanduoApi extends CI_Controller } } /*BIZ_GroupCombineOperationDetail*/ - if ( ! isset($detail_jsonResp->orderDetail->groupOrderNo)) { // 没有拼团团号 - continue; - } - if (in_array($detail_jsonResp->orderDetail->groupOrderNo, $unique_orderGroupCombine)) { - continue; - } - $unique_orderGroupCombine[] = $detail_jsonResp->orderDetail->groupOrderNo; + if ( isset($detail_jsonResp->orderDetail->groupOrderNo) ) { // 删除旧的录入 $this->Orders_model->biz_groupcombineoperationdetail_cut($detail_jsonResp->orderDetail->groupOrderNo); // 门票 @@ -501,7 +514,7 @@ class TulanduoApi extends CI_Controller $this->Orders_model->GCOD_subType = $vco->type; $this->Orders_model->GCOD_title = $vco->name; $this->Orders_model->GCOD_dutyName = $vco->driver; - $this->Orders_model->GCOD_dutyTel = $vco->driverTel; + $this->Orders_model->GCOD_dutyTel = trim_str($vco->driverTel); $this->Orders_model->GCOD_startDate = $vco->startDate; $this->Orders_model->GCOD_endDate = $vco->endDate; $this->Orders_model->GCOD_sumMoney = $vco->sumMoney; @@ -522,7 +535,7 @@ class TulanduoApi extends CI_Controller $this->Orders_model->GCOD_subType = ""; $this->Orders_model->GCOD_title = ""; $this->Orders_model->GCOD_dutyName = $vgo->name; - $this->Orders_model->GCOD_dutyTel = $vgo->mobelPhone; + $this->Orders_model->GCOD_dutyTel = trim_str($vgo->mobelPhone); $this->Orders_model->GCOD_dutyPhoto = isset($vgo->guiderPhoto) ? $vgo->guiderPhoto : ''; $this->Orders_model->GCOD_startDate = $vgo->startDate; $this->Orders_model->GCOD_endDate = $vgo->endDate; @@ -576,6 +589,7 @@ class TulanduoApi extends CI_Controller $this->Orders_model->biz_groupcombineoperationdetail_save(); } } + } $output_text = "Got order operations from TuLanDuo:" . $detail_jsonResp->orderDetail->orderId . ". " . $coli_id; log_message('error', $output_text); echo $output_text; @@ -589,6 +603,7 @@ class TulanduoApi extends CI_Controller public $date_roll = 0; public function get_history_order_list($oldest_date=null) { + return false; // 已全部结束 // 避免执行超时, 滚动3次之后结束 if ($this->date_roll > 2) { log_message('error', "Got order list from TuLanDuo. Roll end. " . $oldest_date); @@ -603,6 +618,8 @@ class TulanduoApi extends CI_Controller $endTravelDate = $oldest_date; $start_date = $this->input->get_post("start"); $end_date = $this->input->get_post("end"); + // $date_type = "travel"; + // $date_type = isset($this->input->get_post("end")) ? $this->input->get_post("end") : "travel"; $startTravelDate = $start_date ? $start_date : $startTravelDate; $endTravelDate = $end_date ? $end_date : $endTravelDate; $this->tld_order->setUserId($this->userId) @@ -635,6 +652,7 @@ class TulanduoApi extends CI_Controller } $all_vendor_order_id = array_map(function($ele){ return $ele['orderId'];}, $all_list); $all_vendor_order_id_str = implode(',', $all_vendor_order_id); + $exists_ht = $exists_ht_order_id = null; $exists_ht = $this->sync_model->get_exists_vendorOrderId($all_vendor_order_id_str); $exists_ht_order_id = array_map(function($ele){ return intval($ele->GCI_VendorOrderId);}, $exists_ht); $to_insert = array_diff($all_vendor_order_id, $exists_ht_order_id); @@ -647,7 +665,8 @@ class TulanduoApi extends CI_Controller if ( ! in_array($vo['orderId'], $to_insert)) { continue; } - $vo['agcOrderNo'] = trim_groupCode(trim($vo['agcOrderNo'])); // 去掉中文的全角空格 + $vo['agcOrderNo'] = (isset($vo['agcOrderNo'])&&$vo['agcOrderNo']!="") ? $vo['agcOrderNo'] : $vo['groupOrderNo']; + $vo['agcOrderNo'] = (trim($vo['agcOrderNo'])); // 去掉中文的全角空格 $tmpv = $this->city_info[$vo['operationDep']]['PlanVEI_SN'] ? $this->city_info[$vo['operationDep']]['PlanVEI_SN'] : 1343; $this->Orders_model->BIZ_COLI_SN = null; $this->Orders_model->GRI_SN = null; @@ -739,9 +758,9 @@ class TulanduoApi extends CI_Controller $travelDate = new DateTime($list_ele['travelDate']); $leaveDate = new DateTime($list_ele['leaveDate']); $date_diff = $travelDate->diff($leaveDate); - $this->Orders_model->GRI_No = mb_substr($list_ele['agcOrderNo'], 0, 49); + $this->Orders_model->GRI_No = substr(trim_str($list_ele['agcOrderNo']), 0, 49); $this->Orders_model->GRI_OrderType = 227002; // 商务 - $this->Orders_model->GRI_Name = mb_substr($list_ele['agcOrderNo'], 0, 49); + $this->Orders_model->GRI_Name = substr(trim_str($list_ele['agcOrderNo']), 0, 49); $this->Orders_model->GRI_PersonNum = $list_ele['adultNum']+$list_ele['childNum']; $this->Orders_model->GRI_Days = intval($date_diff->format('%R%a')+1); $this->Orders_model->GRI_IsCancel = 0; @@ -846,12 +865,13 @@ class TulanduoApi extends CI_Controller /*! * 发送预订计划到地接系统 + * TODO read word into remark * @date 2018-05-02 * @param string $COLI_ID HT系统订单号 */ public function order_push($COLI_ID="") // test { - exit(); + // exit(); /** 目的地 test */ $this->userId = "358"; $this->key = "a08f26ddc5b1bd4c8e5eafcac28fc1ec"; @@ -883,7 +903,7 @@ class TulanduoApi extends CI_Controller ->setDestination($scheduleDetails[0]->CII2_Name) ->setTravelDate(strstr($orderinfo[0]->COLD_StartDate, " ", true)) ->setLeavedDate(strstr($orderinfo[0]->COLD_EndDate, " ", true)) - ->setOrderRemark($orderinfo[0]->COLI_Memo . "\r\n" . $orderinfo[0]->COLD_Memo . "\r\n" . $orderinfo[0]->COLD_MemoText); // todo 抵离交通 + ->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 ? "成人" : "儿童")) @@ -907,16 +927,17 @@ class TulanduoApi extends CI_Controller ->setTravelFeesSumMoney($kf, $vf->GAI_SSJE) ->setTravelFeesRemark($kf, $vf->GAI_Memo); } - $resp = $this->excute_curl($this->neworder_url, $this->tldOrderBuilder); + 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(); - } +// 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; @@ -1066,9 +1087,12 @@ log_message('error','in GCI ' . json_decode($resp)->responseData->orderId); ,"北京精品游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" @@ -1076,22 +1100,29 @@ log_message('error','in GCI ' . json_decode($resp)->responseData->orderId); ,"慕田峪半日游拼团(目的地)" => "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" ); } diff --git a/webht/third_party/trippestOrderSync/controllers/api.php b/webht/third_party/trippestOrderSync/controllers/api.php index 1562f36b..60b8d0b7 100644 --- a/webht/third_party/trippestOrderSync/controllers/api.php +++ b/webht/third_party/trippestOrderSync/controllers/api.php @@ -34,7 +34,7 @@ class Api extends CI_Controller { } $ret['status'] = 1; $ret['msg'] = ""; - $ret['group_number'] = $order_project[0]->COLI_GroupCode; + $ret['group_number'] = analysis_groupCode($order_project[0]->COLI_GroupCode); $all_combine_no = array_unique(array_map(function($ele) { return $ele->GCI_combineNo; @@ -126,11 +126,16 @@ class Api extends CI_Controller { $vro['pick_up'] = ""; $vro['drop_off'] = ""; $decode_MemoText = $memo_text_tmp = ""; - if ($num_index == 0) { + if ($vro['pick_up'] === "" && $poi->COLD_MemoText != null && json_decode($poi->COLD_MemoText) != null) { + $decode_MemoText = json_decode($poi->COLD_MemoText, true); + $vro['pick_up'] = $decode_MemoText['Pick up']; + $vro['drop_off'] = $decode_MemoText['Drop off']; + } + if ($vro['pick_up'] === "" && $num_index == 0) { $vro['pick_up'] = trim(substr(strstr(strstr($poi->COLI_OrderDetailText, "Pick Up From:"), "\n", true), 13)); $vro['drop_off'] = trim(substr(strstr(strstr($poi->COLI_OrderDetailText, "Drop Off:"), "\n" , true), 9)); } - // if ($vro['pick_up'] === "") { + if ($vro['pick_up'] === "") { if (strval($poi->PAGS_Direction) === '0') { $vro['pick_up'] .= $poi->POI_FlightsNo . " " . $poi->POI_AirPort; $vro['drop_off'] .= $poi->POI_Hotel; @@ -141,10 +146,7 @@ class Api extends CI_Controller { $vro['pick_up'] .= $poi->POI_Hotel; // $vro['drop_off'] .= $poi->POI_FlightsNo . " " . $poi->POI_AirPort; // 结束后送机 } - // } - // if ($vro['pick_up'] === "" && $poi->POI_FlightsNo == '') { - // $vro['pick_up'] = $vro['drop_off'] = $poi->POI_Hotel; - // } + } $num_index++; } unset($vro); diff --git a/webht/third_party/trippestOrderSync/controllers/order_finance.php b/webht/third_party/trippestOrderSync/controllers/order_finance.php index 9865de38..cf49a170 100644 --- a/webht/third_party/trippestOrderSync/controllers/order_finance.php +++ b/webht/third_party/trippestOrderSync/controllers/order_finance.php @@ -54,8 +54,9 @@ class Order_finance extends CI_Controller { * * 获取拼团总人数, 价格人等 * * 分别计算每次拼团成本 * * * 写入report_tour + * * * 其他产品项目, report_train, report_hotel等 * * 所有产品总成本 - * * * 写入核算管理CK_GroupInfo + * * * [此处不做]写入核算管理CK_GroupInfo * * * 写入单团财务表report_order * END */ @@ -285,6 +286,7 @@ class Order_finance extends CI_Controller { $tmp = null; $tmp = $this->get_allowed_combine($vp); $this_allowed = ($tmp === null) ? null : array_diff($tmp, $all_pag); // diff((31,41), (31,41,47)) ==> () + // $this_allowed = ($tmp === null) ? null : array_diff($all_pag, $tmp); // diff((31,41), (31,41,47)) ==> () if (empty($this_allowed) && $tmp !== null) { $combine_pag_arr[] = $tmp; // push (31,41) } @@ -308,6 +310,13 @@ class Order_finance extends CI_Controller { } $ret->combine_pags = my_array_unique($combine_pag_arr); $ret->combine_pags = $ret->combine_pags[0]; // 这里用0是因为一个拼团应该只有一组或一个产品 + // 一些不再常规混拼的团, 仅有一个拼团号的订单则加上该团 + foreach ($all_orders as $key => $value) { + if ($value->combine_cnt === 1) { + $ret->combine_pags[] = $value->PAG_Code; + } + } + $ret->combine_pags = array_values(array_unique($ret->combine_pags)); $ret->person_num = 0; $ret->PAG_Code = ""; $ret->order_cost = array(); @@ -330,7 +339,8 @@ class Order_finance extends CI_Controller { $tour_s->adult_num = $vo->COLD_PersonNum; $tour_s->child_num = $vo->COLD_ChildNum; $tour_s->PAG_code = $vo->PAG_Code; - $tour_s->real_code = isset($vo->real_code) ? $vo->real_code : $vo->PAG_Code; + // $tour_s->real_code = isset($vo->real_code) ? $vo->real_code : $vo->PAG_Code; + $tour_s->real_code = isset($vo->real_code)&&in_array($vo->real_code, $ret->combine_pags) ? $vo->real_code : $vo->PAG_Code; $tour_s->real_pag_sn = isset($vo->real_pag_sn) ? $vo->real_pag_sn : $vo->COLD_ServiceSN; $tour_s->totalPrice = $vo->COLD_TotalPrice; $ret->order_cost[] = $tour_s; @@ -351,8 +361,8 @@ class Order_finance extends CI_Controller { foreach ($ret->order_cost as $kc => $voc) { $ret->order_cost[$kc]->order_cost_sum = bcmul($voc->person_num, $ret->person_cost); } - return $ret; // return $this->output->set_content_type('application/json')->set_output(json_encode($ret, JSON_UNESCAPED_UNICODE)); + return $ret; } /*! diff --git a/webht/third_party/trippestOrderSync/controllers/send_operation.php b/webht/third_party/trippestOrderSync/controllers/send_operation.php new file mode 100644 index 00000000..c4d9bc57 --- /dev/null +++ b/webht/third_party/trippestOrderSync/controllers/send_operation.php @@ -0,0 +1,174 @@ +load->helper('array'); + $this->load->model('Send_operation_model', 'send_model'); + $this->send_url = 'https://www.mycht.cn/webht.php/apps/messagecenter/index/send_message/'; + header('Access-Control-Allow-Origin:*'); + header('Access-Control-Allow-Methods:POST, GET'); + header('Access-Control-Max-Age:0'); + header('Access-Control-Allow-Headers:x-requested-with, Content-Type'); + header('Access-Control-Allow-Credentials:true'); + } + + public function index() + { + $this->sms_log(); + return; + } + + public function sms_log() + { + $date = $this->input->get_post("date"); + $date = $date ? $date : date('Y-m-d', strtotime("+1 day")); + $ready_order["date"] = $date; + $COLI_ID = $this->input->get_post("order_id"); + $ready_order["order_id"] = $COLI_ID; + $ready_order["list"] = $this->send_model->daytour_order_ready_for_send(trim($COLI_ID), $date, "no_send_state"); + $this->load->view('sms_log', $ready_order); + return; + } + + public function order_sms_list($COLI_SN) + { + $data['list'] = $this->send_model->order_sms_list($COLI_SN); + $list_table = $this->load->view('order_sms_list', $data, true); + $this->output->set_content_type('application/json')->set_output(json_encode($list_table)); + return; + } + + /*! + * 通过短信发送导游信息给预定了Day Tour的客人 + * * 每天9:00, 16:00 尝试发送 + * * 第二次发送之后仍然发送失败或没有调度信息, 反馈到Alex邮箱 + * * 这里只是Day Tour 订单, 不含单接送, 因此每个订单仅发送一次 + * @date 2018-09-25 + */ + public function daytour($COLI_ID="") + { + $now_h = date("H"); + $time_flag = ""; + if ($now_h < 9 || $now_h > 19) { + echo "Break time."; + return false; + } else if ($now_h >= 9 && $now_h < 16) { + $time_flag = "try1"; + } else { + $time_flag = "try2"; + } + $date = date('Y-m-d', strtotime("+1 day")); + if (trim($COLI_ID) !== "") { + $date = null; + $time_flag = "handle"; + } + $ready_order = $this->send_model->daytour_order_ready_for_send(trim($COLI_ID), $date, $time_flag); + if (empty($ready_order)) { + echo "Empty. "; + return false; + } + $order = $ready_order[0]; + if (strtotime($order->GCI_travelDate) < strtotime(date('Y-m-d')) ) { + echo "已过期"; + return; + } + $send_body = array( + "one" => trim($order->GUT_FirstName . " " . $order->GUT_LastName) + ,"two" => substr($order->GCI_travelDate, 0, 10) + ,"three" => $order->GCOD_dutyName + ,"four" => "+86 " . $order->GCOD_dutyTel + ,"phone" => real_phone_number($order->GUT_TEL, $order->GUT_POST) + ,"nation_code" => $order->GUT_POST + ); + $cb_db = array( + "TPSL_COLI_SN" => $order->COLI_SN + ,"TPSL_nationCode" => $send_body['nation_code'] + ,"TPSL_mobile" => $send_body['phone'] + ,"TPSL_msgType" => 'guide' + ,"TPSL_sendState" => 0 + ); + $ht_id = $this->send_model->insert_trippest_sms_log($cb_db); + $error_msg = ""; + $send_time = date("Y-m-d H:i:s"); + if ($order->GCOD_dutyName !== null) { + $send_cb = $this->excute_curl($this->send_url, $send_body); + $send_cb_obj = json_decode($send_cb); + $update_cb_db["TPSL_sendTime"] = $send_time; + $update_cb_db["TPSL_sendContent"] = json_encode($send_body); + $update_cb_db['TPSL_sendState'] = $send_cb_obj->result===0 ? 1 : 0; + $update_cb_db['TPSL_callbackJson'] = $send_cb; + $update_cb_db['TPSL_callbackTime'] = date("Y-m-d H:i:s"); + $update_where = " TPSL_SN=" . $ht_id; + $ht_id = $this->send_model->update_trippest_sms_log($update_where, $update_cb_db); + $send_cb_obj->errmsg!=="OK" ? $error_msg=$send_cb_obj->errmsg : null; + } + if ($time_flag === "try1") { + return; + } + if ($order->GCOD_dutyName === null || $error_msg !== "") { + // 没有调度或发送失败 + // to Alex + $operator_mailbody = "

Dear Alex:

" . + "

导游信息发送客人失败:

" . + "

订单号:" . $order->COLI_ID ."

" . + "

发团时间:" . substr($order->GCI_travelDate, 0, 10) ."

" . + "

导游信息:" . $order->GCOD_dutyName . "(" . $order->GCOD_dutyTel . ")" ."

" . + "

导游更新时间:" . $order->GCI_createTime . " " . $order->GCOD_creatTime ."

" . + "

发送时间:" . $send_time ."

"; + if ($error_msg !== "") { + $operator_mailbody .= "

发送失败信息:" . $error_msg . "

"; + } + $operator_mailbody .= "

Tracking Link.

"; + $operator_mailbody .= "

此邮件由系统自动发送, 请勿回复.

"; + $this->send_model->SendMail( + "chinahighlights", + "webform@chinahighlights.net", + "YSL", + "alex@chinahighlights.net", // ysl email alex@chinahighlights.net + '#SMS send fail# ' . $order->COLI_ID, + $operator_mailbody); + } + echo "已发送"; + return; + } + + protected function excute_curl($url, $postBody) { + $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" + )); + + if (empty($postBody)) { + return false; + } + 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)) { + log_message('error', "curl error : ".curl_error($ch) . "; curl postBodyString: ".json_encode($postBody)); + } else { + $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + if (200 !== $httpStatusCode) { + log_message('error', "curl response Status Code: ".$httpStatusCode."; curl postBodyString: ".json_encode($postBody)); + } + } + curl_close($ch); + return $reponse; + } + +} + +/* End of file send_operation.php */ +/* Location: ./webht/third_party/trippestOrderSync/controllers/send_operation.php */ diff --git a/webht/third_party/trippestOrderSync/helpers/array_helper.php b/webht/third_party/trippestOrderSync/helpers/array_helper.php index 8880682f..f66c6d2b 100644 --- a/webht/third_party/trippestOrderSync/helpers/array_helper.php +++ b/webht/third_party/trippestOrderSync/helpers/array_helper.php @@ -117,9 +117,12 @@ function raw_json_encode($input, $flags = 0) { function analysis_groupCode($groupCode) { mb_regex_encoding("UTF-8"); - $groupCode = trim_groupCode(trim($groupCode)); + $groupCode = trim_str(trim($groupCode)); preg_match('/[\w\s\-]+/', characet($groupCode, "UTF-8"), $temp_array); // $temp_array[0] = strrchr($temp_array[0], " ") ? mb_strstr($temp_array[0], " ",true) : $temp_array[0]; + if (empty($temp_array)) { + return trim_str(trim($groupCode)); + } $tmp_groupCode = explode("-", trim($temp_array[0])); $real_groupCode = $tmp_groupCode[0]; if (isset($tmp_groupCode[1])) { @@ -132,12 +135,12 @@ function analysis_groupCode($groupCode) $real_groupCode .= mb_strstr($tmp_groupCode[$i], "(", true)!==false ? mb_strstr($tmp_groupCode[$i], "(", true) : $tmp_groupCode[$i]; } } - $real_groupCode = trim_groupCode(trim($real_groupCode)); + $real_groupCode = trim_str(trim($real_groupCode)); return $real_groupCode; } -function trim_groupCode($groupCode) +function trim_str($groupCode) { - return mb_ereg_replace('( | | )', '', $groupCode); + return mb_ereg_replace('( | | )', '', $groupCode); } /*! * 转换字符集编码 @@ -155,3 +158,10 @@ function characet($data, $targetCharset) { } return $data; } + +function real_phone_number($phone, $nation_code) +{ + $nation_str = "+" . $nation_code; + $cut_nation = str_replace($nation_str, "", $phone); + return mb_ereg_replace('[\D]', '', $cut_nation); +} diff --git a/webht/third_party/trippestOrderSync/models/orderFinance_model.php b/webht/third_party/trippestOrderSync/models/orderFinance_model.php index 53777243..7f398f3e 100644 --- a/webht/third_party/trippestOrderSync/models/orderFinance_model.php +++ b/webht/third_party/trippestOrderSync/models/orderFinance_model.php @@ -64,6 +64,8 @@ class OrderFinance_model extends CI_Model { /** * 拼团号下的所有订单 * * 仅包价线路产品 + * * 2018-10-10 增加按COLD_PersonNum降序排序, 计算拼团人数时按多的算. + * 180217342 订单中2人参加两个项目拼同一个团但是人数不同 */ public function get_all_combine_order($combineNo="", $processed_code=array()) { @@ -74,15 +76,16 @@ class OrderFinance_model extends CI_Model { ,PAG_Code ,pag_sub.PAGS_CN_Title, cold.COLD_StartDate,PAG_DefaultVEI_SN ,COLD_PersonNum ,COLD_ChildNum , cold.COLD_StartDate,COLD_EndDate, cold.COLD_TotalPrice --,PAG_Title + ,(select count(1) from GroupCombineInfo where gci_gri_sn=coli_gri_sn) as combine_cnt from GroupCombineInfo gci - inner join BIZ_ConfirmLineInfo coli on gci.GCI_GRI_SN=COLI_GRI_SN + inner join BIZ_ConfirmLineInfo coli on gci.GCI_GRI_SN=COLI_GRI_SN and coli.COLI_State NOT IN (30,40,50) inner join BIZ_ConfirmLineDetail cold on cold.COLD_COLI_SN=coli.COLI_SN and cold.COLD_ServiceType='D' and cold.DeleteFlag=0 and COLD_PlanVEI_SN in (1343,29188,30548,30016) left join BIZ_PackageInfo pag on PAG_SN=COLD_ServiceSN left join BIZ_PackageInfoSub pag_sub on pag_sub.PAGS_SN=COLD_ServiceSN2 where gci.GCI_combineNo =? $processed_sql - order by GCI_combineNo,cold.COLD_StartDate"; + order by GCI_combineNo asc,cold.COLD_StartDate asc,cold.COLD_PersonNum desc"; return $this->HT->query($sql, array($combineNo))->result(); } @@ -165,6 +168,9 @@ class OrderFinance_model extends CI_Model { /** 获取产品信息:产品名称,供应商等 */ public function get_pag_info($PAG_SN_str="") { + if ($PAG_SN_str=="") { + return array(); + } $sql = "SELECT pag.PAG_SN,PAG_Code,PAG_DefaultVEI_SN,PAG_Title,vei2.VEI2_CompanyBN from BIZ_PackageInfo pag inner join VEndorInfo2 vei2 on VEI2_VEI_SN=PAG_DefaultVEI_SN and VEI2_LGC=2 @@ -201,10 +207,10 @@ class OrderFinance_model extends CI_Model { } /** 判断各种项目的报表是否已存在 */ - public function report_tour_exists($coli_id=null, $tourCode=null) + public function report_tour_exists($coli_id=null, $tourCode=null, $tourBz=null) { - $sql = "SELECT top 1 ordernumber from report_tour where ordernumber=? and tourCode=?"; - $num_rows = $this->HT->query($sql, array($coli_id, $tourCode))->num_rows(); + $sql = "SELECT top 1 ordernumber from report_tour where ordernumber=? and tourCode=? and tourBz=? "; + $num_rows = $this->HT->query($sql, array($coli_id, $tourCode, $tourBz))->num_rows(); return $num_rows>0; } public function report_train_exists($coli_id=null, $TrainNo=null) @@ -230,8 +236,9 @@ class OrderFinance_model extends CI_Model { public function insert_report_tour_tulanduo($report_tour_arr=array()) { foreach ($report_tour_arr as $krt => $vrt) { - if ($this->report_tour_exists($vrt['ordernumber'], $vrt['tourCode']) === TRUE) { - $where = " ordernumber='" . $vrt['ordernumber'] . "' AND tourCode='" . $vrt['tourCode'] . "'"; + if ($this->report_tour_exists($vrt['ordernumber'], $vrt['tourCode'], $vrt['tourBZ']) === TRUE) { + $where = " ordernumber='" . $vrt['ordernumber'] . "' AND tourCode='" . $vrt['tourCode'] . "' "; + $where .= " AND tourBZ='" . $vrt['tourBZ'] . "' "; $update_sql = $this->HT->update_string('tourmanager.dbo.Report_Tour', $vrt, $where); $this->HT->query($update_sql); } else { @@ -343,8 +350,9 @@ class OrderFinance_model extends CI_Model { { $other_tour_cost = $this->get_report_tour_others_cost($coli_sn); foreach ($other_tour_cost as $kotc => $votc) { - if ($this->report_tour_exists($votc->ordernumber, $votc->tourCode) === TRUE) { + if ($this->report_tour_exists($votc->ordernumber, $votc->tourCode, $votc->tourBZ) === TRUE) { $where = " ordernumber='" . $votc->ordernumber . "' AND tourCode='" . $votc->tourCode . "'"; + $where .= " AND tourBZ='" . $votc->tourBZ . "' "; $update_sql = $this->HT->update_string('tourmanager.dbo.Report_Tour', json_decode(json_encode($votc), TRUE), $where); $this->HT->query($update_sql); } else { diff --git a/webht/third_party/trippestOrderSync/models/orders_model.php b/webht/third_party/trippestOrderSync/models/orders_model.php index 78bfb4aa..be08730d 100644 --- a/webht/third_party/trippestOrderSync/models/orders_model.php +++ b/webht/third_party/trippestOrderSync/models/orders_model.php @@ -131,10 +131,14 @@ class Orders_model extends CI_Model { */ public function get_groupCombineInfo($coli_sn=0, $get_vendorID=null, $startDate=null, $endDate=NULL) { + $createTime_format = date('H')>12 ? 'Y-m-d 13:00:00' : 'Y-m-d 00:00:00'; $sql = "SELECT top 1 coli.COLI_ID, coli.COLI_SN, coli.COLI_GRI_SN, cold.COLD_SN, coli.COLI_OrderDetailText, coli.COLI_Memo,coli.COLI_State,coli.COLI_OPI_ID, - cold.COLD_PlanVEI_SN, gci.*,'0' as 'isHistory' + cold.COLD_PlanVEI_SN, cold.COLD_MemoText, gci.*,'0' as 'isHistory' FROM GroupCombineInfo gci - LEFT JOIN BIZ_ConfirmLineInfo coli ON coli.COLI_GRI_SN=gci.GCI_GRI_SN --and coli.COLI_State NOT IN ('30','40','50') + LEFT JOIN BIZ_ConfirmLineInfo coli ON coli.COLI_GRI_SN=gci.GCI_GRI_SN + --and coli.COLI_State NOT IN ('30','40','50') + and coli.COLI_State<>50 + and (select OPI_DEI_SN from OperatorInfo where OPI_SN=coli.COLI_OPI_ID)=30 LEFT JOIN BIZ_ConfirmLineDetail cold ON cold.COLD_COLI_SN=coli.COLI_SN WHERE 1=1 "; if ($coli_sn !== 0) { @@ -144,28 +148,25 @@ class Orders_model extends CI_Model { $sql .= " and GCI_VendorOrderId='$get_vendorID' "; } if ($startDate !== NULL) { - $sql .= " and gci.GCI_travelDate between '$startDate' and '$endDate' and gci.GCI_createTime < '" . date('Y-m-d') . "' "; + $sql .= " and gci.GCI_travelDate between '$startDate' and '$endDate' + and gci.GCI_createTime < '" . date($createTime_format) . "' "; } // 近期的订单同步完成之后, 同步历史数据 $sql .= " UNION ALL "; $sql .= " SELECT top 1 coli.COLI_ID, coli.COLI_SN, coli.COLI_GRI_SN, cold.COLD_SN, coli.COLI_OrderDetailText, coli.COLI_Memo,coli.COLI_State,coli.COLI_OPI_ID, - cold.COLD_PlanVEI_SN, gci.*,'1' as 'isHistory' + cold.COLD_PlanVEI_SN, cold.COLD_MemoText, gci.*,'1' as 'isHistory' from GroupCombineInfo gci inner join GRoupInfo on GRI_SN=GCI_GRI_SN and GRI_No<>'' LEFT JOIN BIZ_ConfirmLineInfo coli ON coli.COLI_GRI_SN=gci.GCI_GRI_SN + and coli.COLI_State<>50 + and (select OPI_DEI_SN from OperatorInfo where OPI_SN=coli.COLI_OPI_ID)=30 LEFT JOIN BIZ_ConfirmLineDetail cold ON cold.COLD_COLI_SN=coli.COLI_SN where GCI_combineNo is not null and GCI_combineNo not in ('cancel','forbidden') and GCI_leaveDate < '" . date('Y-m-d', strtotime("-7 days")) . "' + and gci.GCI_createTime < '" . date('Y-m-d') . "' and GCI_combineNo not like '%取消%' - and not exists ( - select GCOD_SN from GroupCombineOperationDetail gcod where gcod.GCOD_GCI_combineNo=GCI_combineNo - ) - and 0 < ( - select sum(isnull(COLD_PersonNum,0)+isnull(COLD_ChildNum,0)+isnull(COLD_BabyNum,0)) person from BIZ_ConfirmLineInfo - inner join BIZ_ConfirmLineDetail on COLD_COLI_SN=COLI_SN - where COLI_GRI_SN=gri_sn - ) "; + "; $sql .= " ORDER BY isHistory ASC,GCI_createTime ASC "; $query = $this->HT->query($sql); return $query->result(); @@ -534,7 +535,7 @@ class Orders_model extends CI_Model { inner join BIZ_ConfirmLineDetail cold on cold.COLD_COLI_SN=COLI_SN --and COLI_State not in (30,40,50) LEFT JOIN GRoupInfo gri ON coli.COLI_GRI_SN=gri.GRI_SN and GRI_OrderType=227002 and gri.GRI_operator<>435 and gri.GRI_operator is not null - WHERE coli.COLI_Department=30 and gri.GRI_No LIKE '%$code%' + WHERE (select OPI_DEI_SN from OperatorInfo where OPI_SN=COLI_OPI_ID)=30 and gri.GRI_No LIKE '%$code%' order by COLI_SN desc"; // and gri.GRI_Name like '%$NoName%' $query = $this->HT->query($sql); if ($query->num_rows() > 0) { @@ -559,11 +560,12 @@ class Orders_model extends CI_Model { coli.COLI_OrderDetailText, coli.COLI_State,coli.COLI_OPI_ID,coli.COLI_Price,coli.COLI_CUrrency GRI_OPI_ID,GRI_operator,GRI_No,GRI_Name, - coli.COLI_Memo + coli.COLI_Memo,cold.COLD_MemoText FROM BIZ_ConfirmLineInfo coli inner join BIZ_ConfirmLineDetail cold on cold.COLD_COLI_SN=COLI_SN left JOIN GRoupInfo gri ON coli.COLI_GRI_SN=gri.GRI_SN and GRI_OrderType=227002 - WHERE coli.COLI_Department=30 and gri.GRI_No LIKE '%$code%' + WHERE (select OPI_DEI_SN from OperatorInfo where OPI_SN=COLI_OPI_ID)=30 + and coli.COLI_State<>50 and gri.GRI_No LIKE '%$code%' order by case COLI_OPI_ID when 435 then 1 else 0 end asc,COLI_SN desc"; $query = $this->HT->query($sql); return $query->result(); diff --git a/webht/third_party/trippestOrderSync/models/orders_query.php b/webht/third_party/trippestOrderSync/models/orders_query.php index 1da05a4e..27c86be8 100644 --- a/webht/third_party/trippestOrderSync/models/orders_query.php +++ b/webht/third_party/trippestOrderSync/models/orders_query.php @@ -28,7 +28,7 @@ class Orders_query extends CI_Model { { $order_info_sql = "SELECT GCI_SN,GCI_VendorOrderId,GCI_combineNo - ,COLI_SN,COLI_ID,COLD_SN,COLI_GroupCode,COLI_OPI_ID,COLI_OrderDetailText + ,COLI_SN,COLI_ID,COLD_SN,COLI_GroupCode,COLI_OPI_ID,COLI_OrderDetailText,COLI_PriceMemo ,COLD_ServiceSN,COLD_PersonNum,COLD_ChildNum,COLD_StartDate,COLD_EndDate,cold.COLD_MemoText ,pags.PAGS_Direction,pags.PAGS_describ ,pag2.PAG2_Name @@ -44,6 +44,7 @@ class Orders_query extends CI_Model { left join BIZ_PackageInfoSub pags on pags.PAGS_SN=cold.COLD_ServiceSN2 where COLI_GroupCode like '%" . $this->HT->escape_like_str($COLI_ID) . "%' OR COLI_ID like '%" . $this->HT->escape_like_str($COLI_ID) . "%' + OR COLI_PriceMemo like '%" . $this->HT->escape_like_str($COLI_ID) . "%' order by COLD_StartDate asc"; // OR COLI_ID like '%" . $this->HT->escape_like_str($COLI_ID) . "%' $order_info_query = $this->HT->query($order_info_sql); diff --git a/webht/third_party/trippestOrderSync/models/send_operation_model.php b/webht/third_party/trippestOrderSync/models/send_operation_model.php new file mode 100644 index 00000000..976de4be --- /dev/null +++ b/webht/third_party/trippestOrderSync/models/send_operation_model.php @@ -0,0 +1,135 @@ +HT = $this->load->database('HT', TRUE); + $this->info = $this->load->database('INFO', TRUE); + } + + public function daytour_order_ready_for_send($COLI_ID="", $date, $time_flag="no_send_state") + { + $today = date('Y-m-d 16:00:00'); + switch ($time_flag) { + case 'try1': + $send_state = " "; + break; + case 'try2': + $send_state = " and (TPSL_sendState=1 OR TPSL_logTime > '$today') "; + break; + case 'handle': + $send_state = " and (TPSL_sendState=1) "; + break; + + case '': + default: + $send_state = ""; + break; + } + $send_state_sql = " and not exists ( + select TPSL_SN from InfoManager.dbo.trippest_sms_log + where TPSL_COLI_SN=coli.COLI_SN + $send_state + ) "; + $top = " TOP 1 "; + $sms_state = ""; + if ($time_flag == "no_send_state") { + $send_state_sql = ""; + $top = ""; + $sms_state = " ,(select top 1 TPSL_sendState from InfoManager.dbo.trippest_sms_log + where TPSL_COLI_SN=coli.COLI_SN and TPSL_sendContent like '%'+GCOD_startDate+'%' + order by TPSL_sendState desc + ) as send_state"; + } + $search_sql = " AND GCI_travelDate ='$date' "; + if ($COLI_ID !== "") { + $search_sql = " AND COLI_ID='" . $COLI_ID . "'"; + } + $sql = "SELECT $top GroupCombineOperationDetail.GCOD_SN,COLI_SN,COLI_ID,COLI_groupCode + ,GUT_POST,GUT_TEL + ,PAG_ExtendType,PAG_Code + ,g.GUT_FirstName,g.GUT_LastName + ,gci.* + ,GCOD_startDate,GCOD_operationType,GCOD_dutyName,GCOD_dutyTel,GCOD_creatTime + $sms_state + FROM BIZ_ConfirmLineInfo coli + INNER JOIN BIZ_ConfirmLineDetail cold ON COLD_COLI_SN=COLI_SN + INNER JOIN BIZ_GUEST g ON g.GUT_SN=COLI_GUT_SN + and GUT_TEL is not null and GUT_TEL<>'' and GUT_POST<>'' + INNER JOIN BIZ_PackageInfo pag ON pag.PAG_SN=COLD_ServiceSN + LEFT JOIN GroupCombineInfo gci ON COLI_GRI_SN=GCI_GRI_SN + LEFT JOIN GroupCombineOperationDetail ON GCOD_GCI_combineNo=GCI_combineNo + AND GCOD_operationType='guiderOperations' + WHERE 1=1 + $search_sql + AND GCI_combineNo not IN ('cancel','forbidden') + AND '39009'<>PAG_ExtendType + $send_state_sql + ORDER BY GCI_travelDate, COLI_SN + "; + $query = $this->HT->query($sql); + return $query->result(); + } + + public function insert_trippest_sms_log($column) + { + $this->info->insert("trippest_sms_log", $column); + return $this->info->insert_id(); + } + + public function update_trippest_sms_log($where, $column) + { + if ($where == "" || empty($column)) { + return false; + } + $update_str = $this->info->update_string('trippest_sms_log', $column, $where); + $update_exc = $this->info->query($update_str); + return $update_exc; + } + + /** 暂时不用了 */ + public function if_order_sent($COLI_SN, $msgType='guide') + { + $sql = "SELECT * + FROM [infomanager].[dbo].[trippest_sms_log] + where [TPSL_COLI_SN]=$COLI_SN + and [TPSL_sendState]=1 + and TPSL_msgType='$msgType' + "; + return $this->info->query($sql)->row(); + } + + /* + * 发送邮件 + */ + function SendMail($fromName, $fromEmail, $toName, $toEmail, $subject, $body) { + $sql = "INSERT INTO tourmanager.dbo.Email_AutomaticSend \n" + . " ( \n" + . " M_ReplyToName, M_ReplyToEmail, M_ToName, M_ToEmail, M_Title, M_Body, M_Web, \n" + . " M_FromName, M_State \n" + . " ) \n" + . "VALUES \n" + . " ( \n" + . " ?, ?, ?, ?, ?, N?, ?, ?, 0 \n" + . " ) "; + $query = $this->info->query($sql, + array(substr($fromName, 0, 127), $fromEmail, substr($toName, 0, 127), $toEmail, $subject, $body, 'trippest SMS send fail', 'chinahighlighgts') + ); + return $query; + } + + function order_sms_list($COLI_SN=0) + { + $sql = "SELECT * + FROM [infomanager].[dbo].[trippest_sms_log] + where [TPSL_COLI_SN]=$COLI_SN + order by TPSL_logTime "; + return $this->HT->query($sql)->result(); + } + +} + +/* End of file send_operation_model.php */ +/* Location: ./webht/third_party/trippestOrderSync/models/send_operation_model.php */ diff --git a/webht/third_party/trippestOrderSync/models/tulanduo_sync_model.php b/webht/third_party/trippestOrderSync/models/tulanduo_sync_model.php index f3108da4..0f6da1a5 100644 --- a/webht/third_party/trippestOrderSync/models/tulanduo_sync_model.php +++ b/webht/third_party/trippestOrderSync/models/tulanduo_sync_model.php @@ -26,6 +26,7 @@ class Tulanduo_sync_model extends CI_Model { */ public function get_oldest_offset() { + $ret_date = ""; $sql = "SELECT DISTINCT TOP 10 CAST(GCI_travelDate as DATE) old_date from GroupCombineInfo order by old_date asc"; $all_date = $this->HT->query($sql)->result(); @@ -37,11 +38,22 @@ class Tulanduo_sync_model extends CI_Model { $d1 = new DateTime($all_date_arr[$i]); $d2 = new DateTime($all_date_arr[$i-1]); $date_diff = $d2->diff($d1); - if (intval($date_diff->format('%R%a')) > 1) { - return $all_date_arr[$i]; + if (intval($date_diff->format('%R%a')) > 1 && !in_array($all_date_arr[$i], $this->empty_date()) ) { + $ret_date = $all_date_arr[$i]; + break; } } - return $all_date_arr[0]; + if ($ret_date==="") { + $ret_date = $all_date_arr[0]; + } + return $ret_date; + } + private function empty_date() + { + return array( + "2018-02-06" // 2018-02-05 没有团 + ,"2017-01-17" + ); } /*! * 图兰朵订单在HT内的信息 diff --git a/webht/third_party/trippestOrderSync/views/order_sms_list.php b/webht/third_party/trippestOrderSync/views/order_sms_list.php new file mode 100644 index 00000000..ab0b9788 --- /dev/null +++ b/webht/third_party/trippestOrderSync/views/order_sms_list.php @@ -0,0 +1,25 @@ + + + + + + + + + $value) { + $tmp_msg = null; + if ($value->TPSL_callbackJson == null) { + $tmp_msg = "无导游安排"; + } else { + $tmp_msg = json_decode($value->TPSL_callbackJson); + $tmp_msg = $tmp_msg->errmsg; + } + ?> + + + + + + +
发送时间失败原因
TPSL_logTime; ?>
diff --git a/webht/third_party/trippestOrderSync/views/sms_log.php b/webht/third_party/trippestOrderSync/views/sms_log.php new file mode 100644 index 00000000..3a597c80 --- /dev/null +++ b/webht/third_party/trippestOrderSync/views/sms_log.php @@ -0,0 +1,242 @@ + +* @date 2018-10-08 +*/ +?> + + + + + + Day Tour SMS Log - Trippest + + + + + + + + + + + +
+
+
+ + + +
+ + $item) { + ?> +
    + +
  • +
  • + COLI_groupCode; ?> +
  • + +
  • + PAG_Code; + ?> +
  • + +
  • + GCOD_startDate; ?>
    + GCOD_dutyName; ?>    GCOD_dutyTel; ?> +
  • + +
  • + send_state == "1") { + echo "已发送"; // 查看短信内容 + } elseif ($item->send_state == "0") { + echo '查看失败信息'; + } else { + echo "未发"; + } + ?> +
  • + +
+ + +
+ + +
+
+
+
+
+ + + + + + + + + + + +