Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 
 
 

97 строки
5.9 KiB

  1. <?php
  2. /**
  3. *
  4. * ============================================================================
  5. * * 版权所有 蜘蛛出行 * *
  6. * 网站地址: http://www.zhizhuchuxing.com
  7. * ----------------------------------------------------------------------------
  8. * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和
  9. * 使用;不允许对程序代码以任何形式任何目的的再发布。
  10. * ============================================================================
  11. * Author By: 温依莅
  12. * PhpStorm SubmitTouristOrder.php 自由行产品下单函数
  13. * Create By 2017/7/5 10:35 $
  14. */
  15. namespace backend\modules\api\logic;
  16. use yii\db\Query;
  17. use common\models\Msg;
  18. use backend\modules\api\logic\TouristToResource;
  19. use backend\modules\api\logic\GetTouristStock;
  20. class SubmitTouristOrder extends Query
  21. {
  22. /**
  23. * Function Description:
  24. * Function Name: submitTouristGroupOrder
  25. * @param string $sign 自由行产品标识sign,格式 TR-10001,其中10001位自由行tourist_id
  26. * @param string $date 产品起始日期
  27. * @param string $prod_arr 票种信息(成人,儿童)格式 : [{"prod_id":"TR-10001-1","prod_name":"成人票","prod_num":"2"},{"prod_id":"TR-10001-2","prod_name":"儿童票","prod_num":"1"}
  28. * @param string $customer_info 顾客信息 格式: {"customer_name":"测试员","customer_mobile":"15753206507","customer_id_type":"150","customer_id_no":"370689656896523698","customer_memo":"测试组合接口"}
  29. * @param string $order_info 订单信息 格式:{"user_id":"2","member_id":"1","outside_sale_org_id":"164","outside_sale_order_no":"smile small","order_book_status":0,"pay_type":275,"order_pay_status":1,"sales_man":""}
  30. * @param string $passenger_info 出行人信息 格式:[{\"passenger_name\":\"1\",\"passenger_mobile\":\"\",\"passenger_cardid\":\"34032119890824499X\"},{\"passenger_name\":\"1\",\"passenger_mobile\":\"\",\"passenger_cardid\":\"34032119890824499X\"},{\"passenger_name\":\"1\",\"passenger_mobile\":\"\",\"passenger_cardid\":\"34032119890824499X\"},{\"passenger_name\":\"1\",\"passenger_mobile\":\"\",\"passenger_cardid\":\"34032119890824499X\"},{\"passenger_name\":\"1\",\"passenger_mobile\":\"\",\"passenger_cardid\":\"34032119890824499X\"}]",
  31. * @return array
  32. *
  33. * @author 温依莅
  34. */
  35. public function submitTouristGroupOrder($sign, $date, $prod_arr, $customer_info, $order_info,$passenger_info,$insurance,$buy_insurance,$auth_code,$user_key,$user,$userId,$request_time)
  36. {
  37. $stockObj = new GetTouristStock();
  38. $transObj = new TouristToResource();
  39. $result = array();
  40. //1,将自由行下单参数转为组合产品下单参数
  41. $tourist_id = $stockObj->getTouristPara($sign)['real_id'];
  42. $order_info_arr = json_decode($order_info, true);
  43. $tourist_org_id = $order_info_arr['outside_sale_org_id'];//自由行产品销售渠道id,区别于下面的[该用户所在运营主体的]内部采购渠道id
  44. $user_id = $order_info_arr['user_id'];
  45. $trans_res = $transObj->getTouristToAll($tourist_id, $date, json_decode($prod_arr, true), json_decode($customer_info, true), json_decode($order_info, true),$tourist_org_id);
  46. if ($trans_res['code'] != '0') {
  47. $result['code'] = '1';
  48. $result['info'] = '产品不可售';
  49. return $result;
  50. }
  51. //2,对参数做进一步处理
  52. #2.1得到组合订单价格
  53. $total_res = $stockObj->getTouristPayTotal($tourist_id, $date, $tourist_org_id, $user_id, json_decode($prod_arr, true));
  54. if ($total_res['code'] != '0') {
  55. $result['code'] = '1';
  56. $result['info'] = $total_res['info'];
  57. return $result;
  58. }
  59. $group_order_price = $total_res['list']['total_money'];//总售价
  60. $adult_num = $total_res['list']['extra_info']['adult_num'];//成人数
  61. $child_num = $total_res['list']['extra_info']['child_num'];//儿童数
  62. #2.2其他参数
  63. $trans_arr = $trans_res['list'];
  64. $data['product_name'] = $trans_arr['product_name'];
  65. $data['bus_product'] = empty($trans_arr['bus_product']) ? '' : json_encode($trans_arr['bus_product']);
  66. $data['hotel_product'] = empty($trans_arr['hotel_product']) ? '' : json_encode($trans_arr['hotel_product']);
  67. $data['ticket_product'] = empty($trans_arr['ticket_product']) ? '' : json_encode($trans_arr['ticket_product']);
  68. $data['customer_info'] = json_encode($trans_arr['customer_info']);
  69. $data['order_info'] = json_encode($trans_arr['order_info']);//这里内含的outside_sale_org_id为该运营主体对应的内部采购渠道id
  70. $data['group_order_price'] = $group_order_price;//组合产品销售价格
  71. #自由行产品下单增加的参数
  72. $data['tourist_mark'] = $tourist_id;//$tourist_mark 标志该组合下单是否是自由行产品下单:0表示否,如是则为 tourist_id
  73. $data['tourist_org_id'] = $tourist_org_id;//自由行产品销售渠道id,区别于order_info里的outside_sale_org_id[运营主体所对应]内部采购渠道id
  74. $data['tourist_extra_info'] = json_encode(array('adult_num' => $adult_num, 'child_num' => $child_num));//自由行产品附属信息(成人和儿童数)
  75. $data['action'] = 'submit_group_order';
  76. $data['passenger_info'] = $passenger_info;
  77. $data['buy_insurance'] = $buy_insurance;
  78. $data['insurance'] = $insurance;
  79. $data['auth_code'] = $auth_code;
  80. $data['user_key'] = $user_key;
  81. $data['user'] = $user;
  82. $data['user_id'] = $userId;
  83. $data['request_time'] = $request_time;
  84. $data['tourist_id'] = $tourist_id;
  85. $data['date'] = $date;
  86. //3,调用组合产品下单接口,下单
  87. $res = Msg::httpRequest(CS1_DOMAIN . '/api/submit-order', $data);
  88. $result = json_decode($res, true);
  89. return $result;
  90. }
  91. }