Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 
 
 
 

188 rader
10 KiB

  1. <?php
  2. /**
  3. *
  4. * ============================================================================
  5. * * 版权所有 蜘蛛出行 * *
  6. * 网站地址: http://www.zhizhuchuxing.com
  7. * ----------------------------------------------------------------------------
  8. * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和
  9. * 使用;不允许对程序代码以任何形式任何目的的再发布。
  10. * ============================================================================
  11. * Author By: Redstop
  12. * PhpStorm CtripTravel.php
  13. * Create By 2017/5/16 18:16 $
  14. */
  15. namespace backend\modules\api\logic;
  16. use yii\db\Query;
  17. class CtripTravel extends Query
  18. {
  19. public $m_ctrip_org_id = 19;
  20. /**
  21. * Function Description:插入更新request表
  22. * Function Name: insertTravelProductRequest
  23. *
  24. * @author Redstop
  25. */
  26. public function insertTravelProductRequest( $request_array )
  27. {
  28. $base_request_array = $this->convertCtripArray2StandardData($request_array);
  29. if( false == $base_request_array ) {
  30. return false;
  31. }
  32. //插入更新数据记录
  33. $res_result = $this->dbOperateTravelProductRequest($base_request_array);
  34. if( false == $res_result ) {
  35. return false;
  36. }
  37. $traveller_array = $this->getTravellerArrayFromCtripArray($request_array);
  38. if( false != $traveller_array ) {
  39. //插入更新出行人信息数据
  40. }
  41. return true;
  42. }
  43. /**
  44. * Function Description:插入更新request数据库的实际操作
  45. * Function Name: convertCtripArray2StandardData
  46. *
  47. * @author Redstop
  48. */
  49. public function dbOperateTravelProductRequest( $base_request_array ) {
  50. $insert_key_array = array();
  51. $insert_value_array = array();
  52. $update_sql_array = array();
  53. foreach( $base_request_array as $request_key => $request_value ) {
  54. $insert_key_array[] = " {$request_key} ";
  55. if( is_numeric($request_value) || is_float($request_value) ) {
  56. $insert_value_array[] = " {$request_value} ";
  57. if( $request_key != "from_org_id" && $request_key != "outside_order_no" ) {
  58. $update_sql_array[] = " {$request_key} = {$request_value} ";
  59. }
  60. } else {
  61. $insert_value_array[] = " '{$request_value}' ";
  62. if( $request_key != "from_org_id" && $request_key != "outside_order_no" ) {
  63. $update_sql_array[] = " {$request_key} = '{$request_value}' ";
  64. }
  65. }
  66. }
  67. $excute_sql = " INSERT INTO outside_travel_product_request( id, ".implode( ",", $insert_key_array )." ) VALUE ( NULL, ".implode( ",", $insert_value_array )." ) ".
  68. " ON DUPLICATE KEY UPDATE ".implode( ",", $update_sql_array );
  69. $res = Yii::$app->db->createCommand($excute_sql)->execute();
  70. return $res;
  71. }
  72. /**
  73. * Function Description:重置所有出行人信息
  74. * Function Name: dbResetTravellerArray
  75. *
  76. * @author Redstop
  77. */
  78. public function dbResetTravellerArray( $from_org_id, $outside_order_no ) {
  79. $update_sql = " UPDATE SET ";
  80. }
  81. /**
  82. * Function Description:操作出行人列表
  83. * Function Name: dbOperateTravellerArray
  84. *
  85. * @author Redstop
  86. */
  87. public function dbOperateTravellerArray($traveller_array) {
  88. if( false == $traveller_array ) {
  89. return true;
  90. }
  91. }
  92. /*********************************************************************************/
  93. /* Ctrip 数据结构转换为CS数据结构 */
  94. /*********************************************************************************/
  95. /**
  96. * Function Description:从携程获取的参数中提取出标准数据格式
  97. * Function Name: convertCtripArray2StandardData
  98. *
  99. * @author Redstop
  100. */
  101. public function convertCtripArray2StandardData( $request_array ) {
  102. $return_array = array( "request_time" => date("Y-m-d H:i:s") );
  103. $return_array["from_org_id"] = $this->m_ctrip_org_id;//渠道为携程团队游
  104. $return_array["outside_order_no"] = $request_array["Order"]["OrderId"];//渠道订单号
  105. $return_array["cs_product_code"] = $request_array["Order"]["VendorProductCode"];//产品编号
  106. $return_array["start_date"] = $request_array["Order"]["DepartureDate"];//出发日期
  107. $return_array["message_id"] = $request_array["Order"]["MessageId"];//消息编号
  108. $return_array["sub_channel"] = isset($request_array["Order"]["DistributionChannel"]) ? $request_array["Order"]["DistributionChannel"] : "";//分销渠道
  109. $book_time = str_replace("T", " ", $request_array["Order"]["OrderInfo"]["BookingTime"] );
  110. $book_time = str_replace("Z", "", $book_time );
  111. $return_array["book_time"] = date("Y-m-d H:i:s", strtotime($book_time));//用户预订时间
  112. $return_array["package_code"] = $request_array["Order"]["OrderInfo"]["PackageInfo"]["VendorPackageCode"];//套餐编号
  113. $return_array["currency"] = isset($request_array["Order"]["OrderInfo"]["PackageInfo"]["Currency"]) ? $request_array["Order"]["OrderInfo"]["PackageInfo"]["Currency"] : "CNY";//币种
  114. $return_array["exchange_rate"] = isset($request_array["Order"]["OrderInfo"]["PackageInfo"]["ExchangeRate"]) ? $request_array["Order"]["OrderInfo"]["PackageInfo"]["ExchangeRate"] : "1.00";//汇率
  115. $return_array["adult_quantity"] = $request_array["Order"]["OrderInfo"]["PackageInfo"]["AdultQuantity"];//成人份数
  116. $return_array["adult_cost_price"] = $request_array["Order"]["OrderInfo"]["PackageInfo"]["AdultCostPrice"];//成人底价
  117. $return_array["adult_sales_price"] = $request_array["Order"]["OrderInfo"]["PackageInfo"]["AdultSalesPrice"];//成人卖价
  118. $return_array["child_quantity"] = $request_array["Order"]["OrderInfo"]["PackageInfo"]["ChildQuantity"];//儿童份数
  119. $return_array["child_cost_price"] = $request_array["Order"]["OrderInfo"]["PackageInfo"]["ChildCostPrice"];//儿童底价
  120. $return_array["child_sales_price"] = $request_array["Order"]["OrderInfo"]["PackageInfo"]["ChildSalesPrice"];//儿童卖价
  121. $return_array["single_person_quantity"] = $request_array["Order"]["OrderInfo"]["PackageInfo"]["SinglePersonQuantity"];//单房差份数
  122. $return_array["single_person_cost_price"] = $request_array["Order"]["OrderInfo"]["PackageInfo"]["SinglePersonCostPrice"];//单房差底价
  123. $return_array["single_person_sales_price"] = $request_array["Order"]["OrderInfo"]["PackageInfo"]["SinglePersonSalesPrice"];//单房差卖价
  124. $return_array["infant_quantity"] = $request_array["Order"]["OrderInfo"]["PackageInfo"]["InfantQuantity"];//婴儿份数
  125. $return_array["start_res_name"] = $request_array["Order"]["OrderInfo"]["BoardingInfo"]["Location"];//出发(集合)地点
  126. $return_array["start_time"] = $request_array["Order"]["OrderInfo"]["BoardingInfo"]["Time"];//出发(集合)时间
  127. $return_array["boarding_price"] = $request_array["Order"]["OrderInfo"]["BoardingInfo"]["Price"];//费用
  128. $return_array["is_paid"] = $request_array["Order"]["OrderInfo"]["IsPaid"] == "true" ? 1 : 0;//是否付款
  129. $return_array["remark"] = isset($request_array["Order"]["OrderInfo"]["Remark"]) ? $request_array["Order"]["OrderInfo"]["Remark"] : "";//备注
  130. if( isset($request_array["Order"]["OrderInfo"]["BookingContact"]) ) {
  131. $return_array["contact_name"] = isset($request_array["Order"]["OrderInfo"]["BookingContact"]["Name"]) ? $request_array["Order"]["OrderInfo"]["BookingContact"]["Name"] : "";//联系人姓名
  132. $return_array["contact_mobile"] = isset($request_array["Order"]["OrderInfo"]["BookingContact"]["Mobile"]) ? $request_array["Order"]["OrderInfo"]["BookingContact"]["Mobile"] : "";//联系人电话
  133. } else {
  134. $return_array["contact_name"] = "";//联系人姓名
  135. $return_array["contact_mobile"] = "";//联系人电话
  136. }
  137. return $return_array;
  138. }
  139. /**
  140. * Function Description:从携程获取的参数中提取出出行人数组
  141. * Function Name: getTravellerArrayFromCtripArray
  142. *
  143. * @author Redstop
  144. */
  145. public function getTravellerArrayFromCtripArray( $request_array ) {
  146. if( !isset($request_array["Order"]["OrderInfo"]["TravelerList"]) ) {
  147. return false;
  148. }
  149. $return_array = array();
  150. $traveller_array = $request_array["Order"]["OrderInfo"]["TravelerList"]["Traveler"];
  151. foreach( $traveller_array as $traveller_info ) {
  152. $info_tmp = array();
  153. $info_tmp["from_org_id"] = $this->m_ctrip_org_id;
  154. $info_tmp["outside_order_no"] = $request_array["Order"]["OrderId"];
  155. $info_tmp["traveler_id"] = $traveller_info["TravelerId"];
  156. $info_tmp["chinese_name"] = $traveller_info["ChineseName"];
  157. $info_tmp["english_name"] = isset($traveller_info["EnglishName"]) ? $traveller_info["EnglishName"] : "";
  158. $info_tmp["gender"] = $traveller_info["Gender"] == "Male" ? 0 :1;
  159. $info_tmp["nationality"] = isset($traveller_info["Nationality"]) ? $traveller_info["Nationality"] : "";
  160. $info_tmp["birth_day"] = isset($traveller_info["BirthDate"]) ? $traveller_info["BirthDate"] : "";
  161. $info_tmp["birth_city"] = isset($traveller_info["BirthCity"]) ? $traveller_info["BirthCity"] : "";
  162. $info_tmp["mobile"] = isset($traveller_info["Mobile"]) ? $traveller_info["Mobile"] : "";
  163. $info_tmp["age_category"] = $traveller_info["AgeCategory"];
  164. $info_tmp["id_type"] = isset($traveller_info["IDType"]) ? $traveller_info["IDType"] : "";
  165. $info_tmp["id_number"] = isset($traveller_info["IDNumber"]) ? $traveller_info["IDNumber"] : "";
  166. $info_tmp["issue_date"] = isset($traveller_info["IssuedDate"]) ? $traveller_info["IssuedDate"] : "";
  167. $info_tmp["expired_date"] = isset($traveller_info["ExpiredDate"]) ? $traveller_info["ExpiredDate"] : "";
  168. $info_tmp["issue_place"] = isset($traveller_info["IssuedPlace"]) ? $traveller_info["IssuedPlace"] : "";
  169. $info_tmp["is_room_share"] = $traveller_info["IsRoomShare"] == "true" ? 1 : 0;
  170. $traveller_array[] = $info_tmp;
  171. }
  172. return $traveller_array;
  173. }
  174. }