HT = $this->load->database('HT', TRUE); //读取默认配置 $this->COLI_WebCode = $this->config->item('Site_Code'); $this->COLI_Area = $this->config->item('Site_Area'); $this->COLI_CustomerType = $this->config->item('Site_DepartmentID'); $this->COLI_department = $this->config->item('Site_Department'); $this->COLI_Currency = $this->config->item('Site_Currency'); $this->COLI_InterestRate = $this->config->item('Site_InterestRate'); $this->COLI_TrueCardRate = $this->config->item('Site_TrueCardRate'); $this->COLI_TouristLGC = $this->config->item('Site_ServiceLGC'); $this->COLI_OrderStartDate = null; $this->COLI_Keywords = NULL; switch ($this->check_device()) { case 'mobile': $this->COLI_OrderSource = '62003'; break; case 'tablet': $this->COLI_OrderSource = '62002'; break; default: $this->COLI_OrderSource = '62001'; } } public $coli_where_update = ""; public function biz_confirmlineinfo_update($column_data) { if ($this->coli_where_update == "" || empty($column_data)) { return false; } $update_str = $this->HT->update_string('BIZ_ConfirmLineInfo', $column_data, $this->coli_where_update); $update_exc = $this->HT->query($update_str); return $update_exc; } public $cold_where_update = ""; public function biz_confirmlinedetail_update($column_data) { if ($this->cold_where_update == "" || empty($column_data)) { return false; } $update_str = $this->HT->update_string('BIZ_ConfirmLineDetail', $column_data, $this->cold_where_update); $update_exc = $this->HT->query($update_str); return $update_exc; } public $gci_where_update = ""; public function biz_groupcombineinfo_update($column_data) { if ($this->gci_where_update == "" || empty($column_data)) { return false; } $update_str = $this->HT->update_string('BIZ_GroupCombineInfo', $column_data, $this->gci_where_update); $update_exc = $this->HT->query($update_str); return $update_exc; } public function combineoperation_exist($combineNo='', $operation="") { if( ! $combineNo) { return false; } $sql = "SELECT TOP 1 GCOD_GCI_combineNo FROM BIZ_GroupCombineOperationDetail WHERE GCOD_GCI_combineNo = N? and GCOD_operationType=?"; $query = $this->HT->query($sql, array( $combineNo,$operation )); return $query->result(); } public function get_SN_by_vendorOrderId($vendorOrderId) { $sql = "SELECT TOP 1 coli.COLI_GRI_SN,coli.COLI_SN,gci.GCI_SN FROM BIZ_GroupCombineInfo gci INNER JOIN BIZ_ConfirmLineInfo coli ON coli.COLI_SN=gci.GCI_COLI_SN WHERE gci.GCI_VendorOrderId='$vendorOrderId'"; $query = $this->HT->query($sql); if ($query->row()) { $this->BIZ_COLI_SN = $query->row()->COLI_SN; $this->GRI_SN = $query->row()->COLI_GRI_SN; $this->GCI_SN = $query->row()->GCI_SN; return $query->row(); } return NULL; } public function get_SN_by_groupCode($code) { $sql = "SELECT top 1 COLI_SN,GRI_SN FROM BIZ_ConfirmLineInfo coli LEFT JOIN GRoupInfo gri ON coli.COLI_GRI_SN=gri.GRI_SN WHERE gri.GRI_No LIKE '$code%'"; $query = $this->HT->query($sql); if ($query->row()) { $this->BIZ_COLI_SN = $query->row()->COLI_SN; $this->GRI_SN = $query->row()->GRI_SN; return $query->row(); } return NULL; } public function update_confirmLineInfo() { $sql = "UPDATE BIZ_ConfirmLineInfo SET COLI_GRI_SN=?, COLI_GroupCode=? WHERE COLI_SN=? "; $query = $this->HT->query($sql, array( $this->BIZ_COLI_GRI_SN ,$this->BIZ_COLI_GroupCode ,$this->BIZ_COLI_SN )); return $this->query; } /* * 生成订单号 * 根据系统时间生成,精确到0.0001微秒 */ function MakeOrderNumber() { return str_replace('.', '', sprintf('%11.4f', gettimeofday(TRUE))); } /** * 生成商务订单号 */ function biz_make_order_number() { /* $date = date('ymd',time()); $sql = "SELECT MAX( \n" . " CONVERT( \n" . " INT, \n" . " CASE \n" . " WHEN ISNUMERIC(RIGHT(COLI_ID, 3)) = 0 THEN LEFT(RIGHT(COLI_ID, 4), 3) \n" . " ELSE RIGHT(COLI_ID, 3) \n" . " END \n" . " ) \n" . " ) AS SN \n" . "FROM dbo.BIZ_ConfirmLineInfo \n" . "WHERE (LEFT(COLI_ID, 6) = ?)"; $query = $this->HT->query($sql,array($date)); $id = $query->row()->SN; if (is_null($id)||empty($id)) { $id = 0; } $ids = $date.(sprintf('%03d',(int)$id+1)); return $ids; */ //call $conn include('c:/database_conn.php'); $connection = array( 'UID' => $db['HT']['username'], 'PWD' => $db['HT']['password'], 'Database' => 'tourmanager', 'ConnectionPooling' => 1, 'CharacterSet' => 'utf-8', 'ReturnDatesAsStrings' => 1 ); $conn = sqlsrv_connect($db['HT']['hostname'], $connection); $stmt = sqlsrv_query($conn, "declare @ccid varchar(20);exec dbo.SP_GetBIZOrderNo @ccid out;select @ccid as ccid;"); if ($stmt === false) { echo "Error in executing statement 3.\n"; die(print_r(sqlsrv_errors(), true)); } else { //存储过程中每一个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); return($result_object[0]->ccid); } } /** * * 更新订单状态(商务订单) * */ public function update_biz_order($order_id, $pay_manager, $source_type, $state, $text = '') { //更新订单 $sql = "UPDATE BIZ_ConfirmLineInfo SET COLI_PayManner=?,COLI_sourcetype=?,COLI_State=?,COLI_OrderDetailText=COLI_OrderDetailText+? WHERE COLI_ID=?"; $query = $this->HT->query($sql, array($pay_manager, $source_type, $state, $text, $order_id . '')); $this->insert_acc_info($order_id); return '是否执行:' . print_r($query, true) . ' sql:' . $sql . ' 参数:' . print_r(array($pay_manager, $source_type, $state, $text, $order_id . ''), true); } /** * * 更新火车订单购票截图 * */ public function update_train_order_pic($order_pic_id) { //更新订单 $sql = "exec dbo.SP_BIZ_GroupFinanceList_Insert '" . $order_pic_id . "'"; //$query = $this->HT->query($sql); include('c:/database_conn.php'); $connection = array( 'UID' => $db['HT']['username'], 'PWD' => $db['HT']['password'], 'Database' => 'tourmanager', 'ConnectionPooling' => 1, 'CharacterSet' => 'utf-8', 'ReturnDatesAsStrings' => 1 ); $conn = sqlsrv_connect($db['HT']['hostname'], $connection); $stmt = sqlsrv_query($conn, $sql); return $stmt; } /** * * 插入收款记录 * */ public function insert_acc_info($order_id) { //获取订单 $sql = "Select Top 1 COLI_SN,COLI_ID,COLI_PayManner,COLI_Price From BIZ_ConfirmLineInfo Where COLI_ID = ?"; $query = $this->HT->query($sql, array($order_id)); $order_info = $query->row(); //插入记录 $sql = "INSERT INTO BIZ_GroupAccountInfo \n" . " ( \n" . " GAI_COLI_SN, \n" . " GAI_COLI_ID, \n" . " GAI_Type, \n" . " GAI_SQJE, \n" . " GAI_SQDate, \n" . " GAI_SSJE, \n" . " GAI_SQJECurrency, \n" . " GAI_SSDate, \n" . " GAI_CusName, \n" . " GAI_CusEmail, \n" . " GAI_Memo \n" . " ) \n" . "VALUES \n" . " ( \n" . " ?, \n" . " ?, \n" . " ?, \n" . " ?, \n" . " ?, \n" . " ?, \n" . " ?, \n" . " ?, \n" . " ?, \n" . " ?, \n" . " ? \n" . " )"; $query = $this->HT->query($sql, array($order_info->COLI_SN, $order_info->COLI_ID, $order_info->COLI_PayManner, $order_info->COLI_Price, date('Y-m-d H:i:s'), $order_info->COLI_Price, $this->config->item('Site_Currency'), date('Y-m-d H:i:s'), "", "", " ")); } function GetNationalityID($nationalityName) { if (!$nationalityName) { return 0; } if (is_numeric($nationalityName)) { return $nationalityName; } else { $sql = "SELECT TOP 1 ci2.COI2_COI_SN \n" . "FROM COuntryInfo2 ci2 \n" . "WHERE ci2.COI2_Country = ? "; $query = $this->HT->query($sql, array($nationalityName)); if ($query->result()) { $row = $query->row(); return $row->COI2_COI_SN; } else { return 0; } } } function GetNationalityName($nationalityID) { if (!is_numeric($nationalityID)) { return $nationalityID; } else { $sql = "SELECT TOP 1 ci2.COI2_Country \n" . "FROM COuntryInfo2 ci2 \n" . "WHERE ci2.COI2_LGC = 2 \n" . " AND ci2.COI2_COI_SN = ? "; $query = $this->HT->query($sql, array($nationalityID)); if ($query->result()) { $row = $query->row(); return $row->COI2_Country; } else { return $nationalityID; } } } /** * * 获取商务订单信息 * @param string $order_id 订单id * @return mixed 订单信息 * */ public function get_flight_order_by_id($order_id) { $sql = "SELECT DISTINCT cli.COLI_ID, \n" . " cli.COLI_Price, \n" . " bg.GUT_FirstName, \n" . " bg.GUT_LastName, \n" . " bg.GUT_Email, \n" . " bg.GUT_Email2, \n" . " bpe.BPE_SN, \n" . " bpe.BPE_GuestType, \n" . " bpe.BPE_FirstName, \n" . " bpe.BPE_MiddleName, \n" . " bpe.BPE_LastName, \n" . " bpe.BPE_GuestType, \n" . " bpe.BPE_Passport, \n" . " cld.COLD_Count, \n" . " foi.FlightsNo, \n" . " foi.DepartureDate, \n" . " foi.DepartureTime, \n" . " foi.ArrivalTime, \n" . " cli.COLI_PayManner, \n" . " cli.COLI_State, \n" . " cli.COLI_sourcetype, \n" . " foi.Cabin, \n" . " foi.DepartAirport, \n" . " foi.ArrivalAirport, \n" . " cld.COLD_SN, \n" . " foi.DepartureCity, \n" . " foi.ArrivalCity, \n" . " bg.GUT_TEL, \n" . " bg.GUT_NationalityID, \n" . " cli.COLI_OrderDetailText, \n" . " bpe.BPE_imageSrc, \n" . " cli.COLI_Cost, \n" . " cld.COLD_TotalPrice, \n" . " cld.COLD_TotalCost \n" . "FROM BIZ_ConfirmLineInfo cli \n" . " INNER JOIN BIZ_ConfirmLineDetail cld \n" . " ON cli.COLI_SN = cld.COLD_COLI_SN \n" . " INNER JOIN BIZ_GUEST bg \n" . " ON bg.GUT_SN = cli.COLI_GUT_SN \n" . " INNER JOIN BIZ_BookPeopleList bpl \n" . " ON bpl.BPL_COLD_SN = cld.COLD_SN \n" . " INNER JOIN BIZ_BookPeople bpe \n" . " ON bpl.BPL_BPE_SN = bpe.BPE_SN \n" . " INNER JOIN BIZ_FlightsOrderInfo foi \n" . " ON foi.FOI_COLD_SN = cld.COLD_SN \n" . "WHERE cli.COLI_ID = ? AND isnull(cld.deleteflag,0) = 0 "; $query = $this->HT->query($sql, array($order_id)); return $query->result(); } /** * * 获取机票订单乘员列表 * @param string $order_id 订单id * @return mixed 订单信息 * */ public function get_bpe_list_by_id($order_id) { $sql = "SELECT DISTINCT bpe.BPE_SN, \n" . " bpe.BPE_FirstName, \n" . " bpe.BPE_MiddleName, \n" . " bpe.BPE_LastName, \n" . " bpe.BPE_Passport \n" . "FROM BIZ_BookPeople bpe \n" . " INNER JOIN BIZ_BookPeopleList bpl \n" . " ON bpe.BPE_SN = bpl.BPL_BPE_SN \n" . " INNER JOIN BIZ_ConfirmLineDetail cold \n" . " ON bpl.BPL_COLD_SN = cold.COLD_SN \n" . " INNER JOIN BIZ_ConfirmLineInfo coli \n" . " ON coli.COLI_SN = cold.COLD_COLI_SN \n" . "WHERE coli.COLI_ID = ?"; $query = $this->HT->query($sql, array($order_id)); //echo(''); return $query->result(); } /** * * 获取机票电子票号 * @param array bpe_sn 乘客sn数组 * @return mixed 机票票号 * */ public function get_ticket_no($bpe_sn) { if (is_array($bpe_sn)) { $instr = join(',', $bpe_sn); } elseif (is_string($bpe_sn)) { $instr = $bpe_sn; } else { $instr = 0; } $sql = "SELECT DISTINCT ftn.FTN_FilghtsNo, \n" . " ftn.FTN_TicketNo, \n" . " ftn.FTN_GuestNo \n" . "FROM BIZ_FlightsTicketNo ftn \n" . "WHERE ftn.FTN_GuestNo IN (" . $instr . ")"; $query = $this->HT->query($sql); return $query->result(); } /* * 发送邮件 */ function SendMail($fromName, $fromEmail, $toName, $toEmail, $subject, $body) { $sql = "INSERT INTO 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->HT->query($sql, array(substr($fromName, 0, 127), $fromEmail, substr($toName, 0, 127), $toEmail, $subject, $body, $this->config->item('Site_Code'), $this->config->item('Site_SenderName')) ); return $query; } /** * * 返回成行订单 * 条件1:订单类型 * 天剑2:网站来源 * */ public function get_order_info($COLI_sourcetype, $COLI_WebCode, $biz = true) { if ($biz) { $sql = "SELECT TOP 200 c.COLI_WebCode, \n" . " c.COLI_ID, \n" . " c.COLI_ConfirmDate, \n" . " c.COLI_ApplyDate, \n" . " ISNULL(c.COLI_IsSuccess, 0) AS success \n" . "FROM BIZ_ConfirmLineInfo c \n" . "WHERE c.COLI_sourcetype = ? \n" . " AND c.COLI_WebCode = ? \n" . "ORDER BY \n" . " c.COLI_SN DESC"; $query = $this->HT->query($sql, array($COLI_sourcetype, $COLI_WebCode)); } else { $sql = "SELECT TOP 200 c.COLI_WebCode, \n" . " c.COLI_ID, \n" . " c.COLI_ConfirmDate, \n" . " c.COLI_ApplyDate, \n" . " CASE WHEN c.COLI_Sended = 5 THEN 1 ELSE 0 END AS success \n" . "FROM ConfirmLineInfo c \n" . "WHERE c.COLI_sourcetype = ? \n" . " AND c.COLI_WebCode = ? \n" . "ORDER BY \n" . " c.COLI_SN DESC"; $query = $this->HT->query($sql, array($COLI_sourcetype, $COLI_WebCode)); } $this->sql = $this->HT->queries; return $query->result(); } //传统订单支付之后,插入新的订单信息 public function insert_daytrip_order($coli_sn, $pay_manner, $gri_sn, $state, $deleteflag) { //获取订单 $order_info_sql = " SELECT confirmlineinfotmp.COLI_OrderPrice, memberinfotmp.MEI_FirstName, memberinfotmp.MEI_LastName, memberinfotmp.MEI_Mail FROM memberinfotmp INNER JOIN customerlisttmp ON memberinfotmp.mei_sn = customerlisttmp.cul_cui_sn INNER JOIN confirmlineinfotmp ON customerlisttmp.cul_coli_sn = confirmlineinfotmp.coli_sn WHERE (customerlisttmp.cul_coli_sn = ? )"; $query = $this->HT->query($order_info_sql, array($coli_sn)); $order_info = $query->row(); //插入记录 $sql = "INSERT INTO GroupAccountInfoTmp ( GAI_COLI_SN, GAI_SQJE, GAI_SQDate, GAI_CusName, GAI_CusEmail, GAI_SQJECurrency, GAI_Type, LastEditTime, GAI_GRI_SN, GAI_State, DeleteFlag ) VALUES (?,?,?,?,?,?,?,?,?,?,?)"; $query = $this->HT->query($sql, array($coli_sn, $order_info->COLI_OrderPrice, date('Y-m-d H:i:s'), $order_info->MEI_FirstName . " " . $order_info->MEI_LastName, $order_info->MEI_Mail, $this->config->item('Site_Currency'), $pay_manner, date('Y-m-d H:i:s'), $gri_sn, $state, $deleteflag ) ); } //来源终端 tablet mobile desktop public function check_device() { if (isset($_SERVER['HTTP_USER_AGENT'])) { $ua = $_SERVER['HTTP_USER_AGENT']; } else { $ua = ''; } ## This credit must stay intact (Unless you have a deal with @lukasmig or frimerlukas@gmail.com ## Made by Lukas Frimer Tholander from Made In Osted Webdesign. ## Price will be $2 $iphone = strstr(strtolower($ua), 'mobile'); //Search for 'mobile' in user-agent (iPhone have that) $android = strstr(strtolower($ua), 'android'); //Search for 'android' in user-agent $windowsPhone = strstr(strtolower($ua), 'phone'); //Search for 'phone' in user-agent (Windows Phone uses that) if (!function_exists('androidTablet')) { function androidTablet($ua) { //Find out if it is a tablet if (strstr(strtolower($ua), 'android')) { //Search for android in user-agent if (!strstr(strtolower($ua), 'mobile')) { //If there is no ''mobile' in user-agent (Android have that on their phones, but not tablets) return true; } } } } $androidTablet = androidTablet($ua); //Do androidTablet function $ipad = strstr(strtolower($ua), 'ipad'); //Search for iPad in user-agent if ($androidTablet || $ipad) { //If it's a tablet (iPad / Android) return 'tablet'; } elseif ($iphone && !$ipad || $android && !$androidTablet || $windowsPhone) { //If it's a phone and NOT a tablet return 'mobile'; } else { //If it's not a mobile device return 'desktop'; } } public function ip_limit($ip = "0.0.0.0") { if (strcmp($ip, "0.0.0.0") === 0 || empty($ip)) { return TRUE; } $sql = "SELECT COUNT(1) cnt FROM ConfirmLineInfoTmp WHERE 1=1 AND COLI_SenderIP = ? AND DateDiff(dd,COLI_ApplyDate,getdate())=0"; $query = $this->HT->query($sql, array($ip)); $ret = $query->row(); if ($ret->cnt > 50) { return FALSE; } else { return TRUE; } } }