request; $action = $request->post('action'); $func = 'action'; $action = explode('_', $action); foreach ($action as $key => $vel) { $func .= ucfirst($vel); } if ($action === false || method_exists($this, $func) == false) { $json = ['code' => 1, 'info' => '必要参数缺失']; return json_encode($json); } return $this->$func(); } /** * Function Description:得到票种代售信息(测试接口) * Function Name: actionGetTicketAgentInfo * * @return string * * @author 温依莅 */ public function actionGetTicketAgentInfo() { $prod_id = Yii::$app->request->post('prod_id'); $supplier_id = Yii::$app->request->post('supplier_id'); $user_id = Yii::$app->request->post('user_id'); $main_corp_id = Yii::$app->request->post('main_corp_id', -1); $SubmitBusOrder = new SubmitBusAgentOrder(); $res = $SubmitBusOrder->getTicketAgentInfo($prod_id, $supplier_id, $user_id, $main_corp_id); return json_encode($res); } /** * Function Description:提交巴士订单 * Function Name: actionSubmitBusOrder * * * @author 张帅 */ public function actionSubmitBusOrder() { // $opera_tickets = new OperaTickets(); // $run_prod = new RunProd(); // $run_main = new RunMain(); // $order_main = new OrderMain(); $agent_obj = new SubmitBusAgentOrder(); #region 获取参数 $prod_str = Yii::$app->request->post('prod_str');//购买票种列表 格式为{去程/返程标志(1:去程 2:返程),去程/返程班次ID,票种ID,票种单价,预定数量,车号}...其中车号若不指定则传0或不传 $order_info_str = Yii::$app->request->post('order_info_str');//'订单信息 {下单用户,会员号,渠道id,渠道订单号,是否预定(0否1是),支付方式(授信275),是否支付(0否1是),业务员}' $customer_info_str = Yii::$app->request->post('customer_info_str');//联系人信息,格式为{联系人,联系电话,z证件类型,联系人身份证,备注} $order_append_str = Yii::$app->request->post('order_append_str', '{0,0}');//订单附加 ,格式为{门票价格,酒店价格} $receiver_value_str = Yii::$app->request->post('receiver_value_str', '{0,0}');//代收,格式为{代收单价,代收总价} $is_send_msg = Yii::$app->request->post('is_send_msg', 1);//是否发短信(0否1是) 默认1 $buy_insurance = Yii::$app->request->post('buy_insurance', 0);//是否购买保险信 默认0 ,内部保险 1,外部保险 2 $insurance = Yii::$app->request->post('insurance', '');//保险单详细 [{姓名,身份证},{姓名,身份证},{姓名,身份证}] array数组json_encode $passenger_info=json_decode(Yii::$app->request->post('passenger_info','[]'),true);//乘车人详细 [{姓名,身份证},{姓名,身份证},{姓名,身份证}] array数组json_encode #endregion // $prod_str = "{1,934866,454959,30.00,1}"; // $order_info_str = "{1,1,12,123,1,275,1,黄小霞}"; // $customer_info_str = "{test,,150,,}"; // $order_append_str = "{0,0}"; // $receiver_value_str = "{0,0}"; // $is_send_msg = 0; #region 0.巴士实名制判断 // $prod_str_check = substr($prod_str, 1, -1); // $prod_str_check = explode(',',explode('}{', $prod_str_check)[0]); // if(count($passenger_info)==0 || count($passenger_info) !=$prod_str_check[4]){ // $result['code'] = '3'; // $result['info'] = '乘车人信息不全!'; // return json_encode($result); // } # endregion #region 1.获取票种信息 $prod_arr = $agent_obj->getBusProductList($prod_str); if (count($prod_arr) == 0) { $result['code'] = '1'; $result['info'] = '没有选购产品'; return json_encode($result); } // return json_encode($prod_arr); #endregion #region 2.获取订单配置数据 $order_info_arr = $agent_obj->getOrderInfoArray($order_info_str); #endregion #region 3.获取乘客信息 $customer_info_arr = $agent_obj->getCustomerInfoArray($customer_info_str); #endregion #region 4.获取附属产品 $order_append_arr = $agent_obj->getOrderAppendArray($order_append_str); #endregion #region 5.获取产品的详细属性 $run_ticket_arr = [];//班次票种数组 foreach ($prod_arr as $key => $vel) { $run_ticket_one['run_id'] = $vel['run_id']; $run_ticket_one['ticket_id'] = $vel['ticket_id']; $run_ticket_arr[] = $run_ticket_one; } $prod_list = $agent_obj->getBusProductListByRunTicket($run_ticket_arr); #region 判断获取的产品和要下单的产品数量是否一致 if (count($prod_arr) != count($prod_list)) { $result['code'] = '2'; $result['info'] = '产品有误'; $result['prod_list'] = $prod_list; $result['prod_arr'] = $prod_arr; return json_encode($result); } #endregion #endregion #region 6.判断价格 #endregion #region 7.检查run_x中是否有班次是否存在 $date_run_arr = [];//日期-班次数组 $run_date = ''; foreach ($prod_list as $key => $vel) { $run_date = $vel['run_date']; $vel_run_date = substr($vel['run_date'], 0, 7); $vel_run_date = str_replace('-', '', $vel_run_date); $date_run_arr[$vel_run_date][] = $vel['run_id']; } $check_run_result = $agent_obj->checkRunX($date_run_arr); #region 检查run_x数据 if (!$check_run_result) { $result['code'] = '1'; $result['info'] = '没有班次'; return json_encode($result); } #endregion #endregion #region 8.获取每个班次的可订座位量 $run_bus_arr = []; foreach ($prod_list as $key => $vel) { $run_one['run_id'] = $vel['run_id'];//班次id $run_one['run_date'] = substr($vel['run_date'], 0, 7);//班次日期 $run_one['run_date'] = str_replace('-', '', $run_one['run_date']);//班次日期 $run_one['seat_type'] = $vel['seat_type'];//座位类型 $run_one['start_seq_id'] = $vel['start_seq_id'];//开始站顺序号 $run_one['end_seq_id'] = $vel['end_seq_id'];//结束站顺序号 $run_one['seat_count'] = $run_one['end_seq_id'] - $run_one['start_seq_id'];//途径个数 $run_one['ticket_id'] = $vel['ticket_id']; $run_one['num'] = $prod_arr[$vel['ticket_id']]['num']; $run_one['bus_order_id'] = $prod_arr[$vel['ticket_id']]['bus_order_id']; $run_bus_arr[] = $run_one; } $run_bus_seat = $agent_obj->getRunBusSeat($run_bus_arr); #region 检查库存 if (!$run_bus_seat) { $result['code'] = '1'; $result['info'] = '库存不足'; return json_encode($result); } #endregion #endregion #region 9.连坐优先分配座位 $seat_arr = $agent_obj->getSeatArray($run_bus_seat, $prod_arr); #endregion #region 10.获取订单价格信息(包含代收价) $prod_list_arr = $agent_obj->getBusProductListReceiver($prod_list, $receiver_value_str, $prod_arr); #endregion #region 11.判断整合代收信息 $res = $agent_obj->getFinalProductList($prod_list_arr, $order_info_arr['outside_sale_org_id'], $order_info_arr['outside_order_no'], $order_info_arr['user_id']); if ($res['code'] != '0') { $result['code'] = '1'; $result['info'] = '存在不可售票种'; $result['error_info'] = $res['info']; return json_encode($result); } #endregion #region 11.下单插入数据 $result = $agent_obj->submitBusOrder($prod_list_arr, $seat_arr, $order_info_arr, $customer_info_arr, $order_append_arr, $is_send_msg, $buy_insurance); #endregion #region 12.记录乘客身份证信息 if(count($passenger_info)!=0) { $insert_passenger_info = $agent_obj->IstPassengerInfo($result['data'], $passenger_info); if (!$insert_passenger_info) { $order_main = new OrderMain(); $memo = $customer_info_arr['customer_memo'] . ' 乘车人身份证录入错误!'; $order_main::updateAll( ['customer_memo' => $memo],['order_id' => $result['data']]); } } #endregion #region 13.下保险单 不论成功失败 不影响正常订单流程 if ($buy_insurance !=0 && $insurance != '' && $result['code'] == 0) { $insuraceData = [ #请求头 'auth_code' => Yii::$app->request->post('auth_code'), 'user_key' => Yii::$app->request->post('user_key'), 'user' => Yii::$app->request->post('user'), 'user_id' => Yii::$app->request->post('user_id'), 'request_time' => Yii::$app->request->post('request_time'), #报文体 'order_info_arr' => json_encode($order_info_arr), 'bus_order_id' => $result['data'], 'insurance' => $insurance, 'action' => 'add_insurance' ]; Utils::httpRequestForasyn('http://' . CS1_DOMAIN . '/api/submit-order', $insuraceData); } #endregion #region 14.订单相关后续操作 #判断下单渠道是否需要预付# $order_id_arr = explode(',', $result['data']); $submit_order=new SubmitOrder(); foreach ($order_id_arr as $val) { #插入渠道商预付记录 $submit_order->SupplierBalance($val,1,'巴士订单支付'); #判断是否要录入检票信息 $submit_order->CheckTicketByOrder($val,$order_info_arr['user_id']); } #endregion return json_encode($result); } /** * Des:新增订单保险单 * Name: actionAddInsurance * @author 倪宗锋 */ public function actionAddInsurance() { /**1、获取参数*/ $order_info_arr = Yii::$app->request->post('order_info_arr');//订单配置数据 $bus_order_id = Yii::$app->request->post('bus_order_id', '');//巴士订单ID $insurance = Yii::$app->request->post('insurance', ''); //保险人列表 $tourist_id = Yii::$app->request->post('tourist_id', ''); //有tourist_id的是自由行过来的保险,没有的是车票的保险 /**2、校验参数*/ if (empty($order_info_arr) || empty($bus_order_id) || empty($insurance)) { $result['code'] = '1'; $result['info'] = '参数错误!'; return json_encode($result); } $agent_obj = new SubmitBusAgentOrder(); if($tourist_id == ''){ //车票过来的保险下单 $agent_obj::addInsurance(json_decode($order_info_arr, true), $bus_order_id, json_decode($insurance, true)); }else{ //自由行保险 $agent_obj::addFreeWalkInsurance(json_decode($order_info_arr, true), $bus_order_id, json_decode($insurance, true),$tourist_id); } $result['code'] = '0'; $result['info'] = '执行结束!'; return json_encode($result); } /** * Function Description:巴士订单修改接口 * Function Name: actionModifyBusOrder * * @return string * * @author 温依莅 */ public function actionModifyBusOrder() { $GroupModify = new ModifyBusOrder(); //获取参数 $order_id = Yii::$app->request->post('order_id', -1);//需要修改巴士订单号 $prod_str = Yii::$app->request->post('prod_str', -1);//巴士产品修改信息json:{"to_go":1,"run_id":"907812","prod_id":"453300","order_price":"33.94","bus_people_num":3,"bus_order_id":0} $order_info_str = Yii::$app->request->post('order_info_str', -1);//巴士订单信息json:{"modify_user_id":"1","member_id":0,"outside_sale_org_id":"75","outside_order_no":"","is_book":0,"pay_type":275,"is_pay":1,"sales_man":"业务员"} $customer_info_str = Yii::$app->request->post('customer_info_str', -1);//顾客信息json:{"customer_name":"测试员","customer_phone":"15753206507","customer_id_type":"150","customer_id_no":"","customer_remark":""} $order_append_str = Yii::$app->request->post('order_append_str', json_encode(array('gate_price' => 0, 'hotel_price' => 0)));//附加信息json:门票价格,酒店价格{'gate_price':0,'hotel_price':0} $receiver_value_str = Yii::$app->request->post('receiver_value_str', json_encode(array('sin_rec_value' => 0, 'total_rec_value' => 0)));//代收价格array:代售单价,代售总价{'sin_rec_value' : 0, 'total_rec_value' : 0} if ($order_id == -1 || $prod_str == -1 || $order_info_str == -1 || $customer_info_str == -1) { $json = array(); $json['code'] = 1; $json['info'] = '参数有误'; return json_encode($json); } //调用ModifyBusOrder的ModifyBusHub方法处理修改请求 $result = $GroupModify->ModifyBusHub($order_id, json_decode($prod_str, true), json_decode($order_info_str, true), json_decode($customer_info_str, true), json_decode($order_append_str, true), json_decode($receiver_value_str, true)); return json_encode($result); } /** * Function Description:巴士订单退票 * Function Name: actionCancelBusOrder * * @return string * * @author 张帅 */ public function actionCancelBusOrder() { $order_main = new OrderMain(); $to_from = new ToFrom(); #region 获取参数 $order_id = Yii::$app->request->post('order_id', '');//订单号(必传) $user_id = Yii::$app->request->post('user_id', 2);//用户id 默认1 $if_link = Yii::$app->request->post('if_link', 0);//是否一起退单 0是1否 默认0 $cancel_reason = Yii::$app->request->post('cancel_reason', '系统退单');//退票原因 默认:系统退单 //$opera_platform = Yii::$app->request->post('opera_platform', '统一退票');//操作平台 默认:cs #endregion if ($order_id == "") { return json_encode(["code" => "1", "info" => "缺少订单号"]); } $order_id_arr = [];//订单id数组 $line_type = 'single'; //判断用户是否有退票权限及该票是否是销售终端 $check_cancel = $order_main->check_cancel($order_id); if ($check_cancel != 1) { $result['code'] = '1'; $result['info'] = '无退票权限'; return json_encode($result); } #region 判断是否一起退票 if ($if_link == 0) { #region 查询是否为往返单 $order_to_from = $to_from->getToFromOrder($order_id); count($order_to_from) == 0 ? $order_id_array[] = $order_id : $order_id_array = array_merge($order_to_from); foreach ($order_id_array as $key => $vel) { $order_id_arr[$vel] = $vel; } #endregion } else { $order_id_arr[$order_id] = $order_id; } #endregion #region 判断线路类型是单一还是组合 $line_info = $order_main->getOrderLineIdCount($order_id_arr); #endregion #region 判断订单是否已失效 foreach ($line_info as $key => $vel) { if ($vel['order_valid_status'] == 0) { unset($order_id_arr[$key]); } else { if ($vel['line_id'] == 0 || $vel['line_type'] == 255 || $vel['line_type'] == 256) { $line_type = 'single'; } else { $line_type = 'group'; } } } if (count($order_id_arr) == 0) { $result['code'] = '0'; $result['info'] = '订单已取消'; return json_encode($result); } #endregion if ($line_type == 'single') {//单一线路 #region 获取订单所属的班次信息 $order_run_info = $order_main->getOrderRunInfo($order_id_arr); #endregion #region 取消单一订单 $result = $order_main->cancelSingleBusOrder($order_id_arr, $order_run_info, $user_id, $cancel_reason); #endregion // if ($result['code'] == 0 && $user_id != 698) { // #region 微信车票订单通知微信端 // $outside_sale_org_id = $order_main->getOutsideSaleOrgId($order_id_arr); // if ($outside_sale_org_id == 164) { // $util = new Util(); // //微信渠道 // foreach ($order_id_arr as $val) { // $cancel_push = $util::interfaceZzcx($val, 1); // //推送错误记录错误 // if ($cancel_push['code'] != 0) { // $error_order_info = new ErrorOrderLog(); // if (isset($cancel_push['info'])) { // $error_msg = $cancel_push['info']; // } else { // $error_msg = ''; // } // $error_order_info->istOrderLog($val, '微信车票订单通知微信端返回值错误 ' . $error_msg); // } // } // } // #endregion // } #region 保险退单 //update : fuhc 2017-10-23 $order_insurance_connect = new OrderInsuranceConnect(); $config = Yii::$app->params; foreach ($order_id_arr as $order_key => $order_val) { $res = $order_insurance_connect->getOneInfo($order_val); if ($res) { //将保险退掉 --- 门票退单 $sub = new SubmitOrder(); $order_id_ary = []; foreach ($res as $key => $val) { $order_id_ary[] = $val['insurance_order_id']; $sub->CancelTicketOrder([ "order_id" => $val['insurance_order_id'], "user_id" => $user_id, "cancel_reason" => $cancel_reason ]); } $order_id_cstr = implode(',', $order_id_ary); //发送取消保险短信通知 if (empty($config['YunYinPhone']) == false) { foreach ($config['YunYinPhone'] as $phone) { $msg = "巴士订单({$order_val})退掉了保险订单,单价3元。系统订单号:" . $order_id_cstr . "。请及时确认及取消订单。。"; Msg::sendTelMsg($phone, $msg); } } } } #endregion #region 插入记录和供应商余额接口 #判断下单渠道是否需要预付# $submit_order=new SubmitOrder(); $submit_order->SupplierBalance($order_id,2,'巴士订单取消'); #endregion } else {//组合线路 $result['code'] = '1'; $result['info'] = '暂不支持组合线路退单'; return json_encode($result); } return json_encode($result); } /** * Function Description:修改订单成本价 * Function Name: actionUpdateBasePrice * * @return bool * * @author 张帅 */ public function actionUpdateBasePrice() { $order_main = new OrderMain(); #region 获取参数 $order_id = Yii::$app->request->post('order_id');//订单id $people_num = Yii::$app->request->post('people_num');//人数 $base_price = Yii::$app->request->post('base_price');//成本价 #endregion $result = $order_main->updateBasePrice($order_id, $people_num, $base_price); return $result; } /** * Function Description:提交门票订单 * Function Name: actionSubmitTicketOrder * * @return string * * @author 张帅 */ public function actionSubmitTicketOrder() { $order_main = new OrderMain(); $opera_product = new OperaProduct(); $opera_product_run = new OperaProductRun(); #region 获取参数 $main_prod_id = Yii::$app->request->post('main_prod_id');//主票种id $run_date = Yii::$app->request->post('run_date');//出行日期 $prod_str = Yii::$app->request->post('prod_str');//购买票种列表 格式为{子票种ID,票种单价,预定数量}... $order_info_str = Yii::$app->request->post('order_info_str');//'订单信息 {下单用户,会员号,渠道id,渠道订单号,是否自动退票(0否1是),支付方式(授信275),是否支付(0否1是),业务员}' $customer_info_str = Yii::$app->request->post('customer_info_str');//联系人信息,格式为{联系人,联系电话,z证件类型,联系人身份证,备注} $receiver_value_str = Yii::$app->request->post('receiver_value_str');//代收,格式为{代收单价,代收总价} #endregion #region 1.获取票种信息 $prod_arr = $opera_product->getTicketProductList($prod_str); if (count($prod_arr) == 0) { $result['code'] = '1'; $result['info'] = '没有选购产品'; return json_encode($result); } #endregion #region 2.获取订单配置数据 $order_info_arr = $order_main->getOrderInfoArray($order_info_str); $to_org_id = $order_info_arr['outside_sale_org_id']; #endregion #region 3.获取乘客信息 $customer_info_arr = $order_main->getCustomerInfoArray($customer_info_str); #endregion #region 4.获取主订单数据详情 $main_prod = $opera_product->getTicketMainProductListByProdId($main_prod_id); if (count($main_prod) == 0) { $result['code'] = '1'; $result['info'] = '产品有误'; return json_encode($result); } #endregion #region 5.获取产品的详细属性 $prod_list = $opera_product_run->getTicketProductListByTicketDate($main_prod_id, $run_date, $prod_arr,$to_org_id); #region 判断获取的产品和要下单的产品数量是否一致 if (isset($prod_list['code']) && $prod_list['code'] == 1) { return json_encode($prod_list); } #endregion #endregion #region 6.获取代收价及主订单部分信息 $prod_list_result = $order_main->getTicketProductListReceiver($prod_list, $receiver_value_str); $prod_list = $prod_list_result['prod_list']; $main_prod += $prod_list_result['main_order_info']; $main_prod['run_date'] = $run_date; #endregion #region 7.下单插入数据 $result = $order_main->submitTicketOrder($main_prod, $prod_list, $order_info_arr, $customer_info_arr); #endregion return json_encode($result); } /** * Function Description:门票退单 * Function Name: actionCancelTicketOrder * * @return string * * @author 张帅 */ public function actionCancelTicketOrder() { $order_id = Yii::$app->request->post('order_id');//订单号(必传) $user_id = Yii::$app->request->post('user_id', 1);//用户id 默认1 $cancel_reason = Yii::$app->request->post('cancel_reason', '系统退单');//退票原因 默认:系统退单 $sub = new SubmitOrder(); $result = $sub->CancelTicketOrder([ "order_id" => $order_id, "user_id" => $user_id, "cancel_reason" => $cancel_reason ]); return json_encode($result); } /** * Function Description:提交组合订单 * Function Name: actionSubmitGroupOrder * * @return string * * @author 张帅 */ public function actionSubmitGroupOrder() { $submit_group_order = new SubmitGroupOrder(); $group_order_list = new GroupOrderList(); // $a=json_decode('{"product_name":"\u676d\u5dde-\u4e4c\u9547(HZWZ-CZ001)+\u6d4b\u8bd5\u65b0\u95e8\u7968","bus_product":"[{\"run_id\":\"943601\",\"ticket_id\":\"452870\",\"prod_num\":\"1\",\"prod_price\":480}]","hotel_product":"","ticket_product":"[{\"ticket_id\":\"3873777\",\"run_date\":\"2018-03-09\",\"son_ticket\":[{\"son_ticket_id\":\"3873784\",\"prod_num\":\"1\",\"prod_price\":\"100.00\"}]}]","customer_info":"{\"customer_name\":\"\u6d4b\u8bd5\u5a04\",\"customer_mobile\":\"18616307052\",\"customer_id_type\":\"150\",\"customer_id_no\":\"430321\",\"customer_memo\":\"\"}","order_info":"{\"user_id\":\"263\",\"member_id\":\"263\",\"outside_sale_org_id\":\"164\",\"outside_sale_order_no\":\"15620\",\"order_book_status\":0,\"pay_type\":275,\"order_pay_status\":1,\"sales_man\":\"\"}","group_order_price":"500","action":"submit_group_order"}',true); // // Yii::$app->request->setBodyParams($a); #region 1,获取参数 $product_name = Yii::$app->request->post('product_name', '未命名组合产品');//产品名称 $bus_product = Yii::$app->request->post('bus_product', '');//巴士订购产品 $hotel_product = Yii::$app->request->post('hotel_product', '');//酒店订购产品 $ticket_product = Yii::$app->request->post('ticket_product', '');//门票订购产品 $customer_info = Yii::$app->request->post('customer_info', '');//顾客信息 $order_info = Yii::$app->request->post('order_info', '');//订单基础信息 $group_order_price = Yii::$app->request->post('group_order_price');//组合产品总价格 $tourist_mark = Yii::$app->request->post('tourist_mark', 0);//标志该组合下单是否是自由行产品下单:0表示否,如是则传组合产品的ID值 tourist_id $tourist_org_id = Yii::$app->request->post('tourist_org_id', 0);//自由行产品销售渠道id,区别于order_info里的outside_sale_org_id[运营主体所对应]内部采购渠道id $tourist_extra_info = Yii::$app->request->post('tourist_extra_info', json_encode(array('adult_num' => 0, 'child_num' => 0)));//自由行产品下单其他参数(成人,儿童数) $passenger_info=json_decode(Yii::$app->request->post('passenger_info','[]'),true);//乘车人详细 [{姓名,身份证},{姓名,身份证},{姓名,身份证}] array数组json_encode $insurance = Yii::$app->request->post('insurance', ''); $buy_insurance = Yii::$app->request->post('buy_insurance', 0);//是否购买保险,0:不购买,1:购买 #endregion $order_info_arr = json_decode($order_info, true); //订单基础信息数组 #region 2,检查数据,并对酒店产品添加佣金相关参数 if ($tourist_mark && !$tourist_org_id) { $result = array(); $result['code'] = '1'; $result['info'] = '该组合产品无渠道数据'; return json_encode($result); } $result_data = $submit_group_order->checkSubmitData($product_name, $bus_product, $hotel_product, $ticket_product, $customer_info, $order_info, $group_order_price, $tourist_mark, $tourist_org_id, $tourist_extra_info,$passenger_info); if (isset($result_data['code']) && $result_data['code'] == '1') { return json_encode($result_data); } //如果有酒店产品,得到酒店产品的相关佣金参数 if ($hotel_product) { $hotel_product = $submit_group_order->getHotelCommission($hotel_product, $order_info_arr['outside_sale_org_id']); } #endregion #region 3,※根据财务规则重新计算子订单价格【对组合产品($tourist_mark非0)情形不计算,只在普通组合产品下单使用】 $user_id = $order_info_arr['user_id']; $finance_info=[]; if (!$tourist_mark) { $prod_info = array( 'bus_arr' => json_decode($bus_product, true), 'hotel_arr' => json_decode($hotel_product, true), 'ticket_arr' => json_decode($ticket_product, true), 'group_order_price' => $group_order_price, 'channel_id' => $order_info_arr['outside_sale_org_id'], 'user_id' => $user_id, ); $finance_compute = $group_order_list->countCost($prod_info); if (!isset($finance_compute['code']) || $finance_compute['code'] != '0') { return json_encode($finance_compute); } $finance_info = $finance_compute['info_arr'];//财务信息,用于组合下单后插入财务信息 $prod_list = $finance_compute['prod_list'];//根据财务规则重新计算后的子订单价格 //刷新 $submit_group_order 类的product_info属性 $result_refresh = $submit_group_order->checkSubmitData($product_name, json_encode($prod_list['bus_arr']), json_encode($prod_list['hotel_arr']), json_encode($prod_list['ticket_arr']), $customer_info, $order_info, $group_order_price, $tourist_mark, $tourist_org_id, $tourist_extra_info); if (isset($result_refresh['code']) && $result_refresh['code'] == '1') { return json_encode($result_refresh); } } #endregion #region 4,获取订单配置 $submit_group_order->getOrderMainBase();//订单配置数据 #endregion #region 5,检验并获取巴士数据详情 $bus_result = $submit_group_order->getBusOrderData(); if (isset($bus_result['code']) && $bus_result['code'] == '1') { return json_encode($bus_result); } #endregion #region 6,检验并获取酒店数据详情 $hotel_result = $submit_group_order->getHotelOrderData(); if (isset($hotel_result['code']) && $hotel_result['code'] == '1') { return json_encode($hotel_result); } #endregion #region 7,检验并获取门票数据详情 $ticket_result = $submit_group_order->getTicketOrderData(); if (isset($ticket_result['code']) && $ticket_result['code'] == '1') { return json_encode($ticket_result); } #endregion #region 8,获取唯一键值并补充主订单配置 $unique_result = $submit_group_order->getUniqueId(); if (isset($unique_result['code']) && $unique_result['code'] != '0') { return json_encode($unique_result); } #endregion #region 9,获取订单提交数据配置 $submit_group_order->getSubmitGroupOrderData(); #endregion #region 10,提交订单 //判断是否购买保险 if($buy_insurance==1){ $submit_group_order->order_title_base['is_buy_insurance']=1; }else{ $submit_group_order->order_title_base['is_buy_insurance']=0; } $result_sub = $submit_group_order->submitGroupOrder(); if ($result_sub['code'] != '0') { return json_encode($result_sub); } #endregion #region 12,※插入供应商余额 //供应商余额插入 $submit_group_order->insertBalance($result_sub['order_title_id']); #endregion #region 11,※插入财务信息(部分组合下单后续操作)【$tourist_mark为真情况下不插入财务信息】 $result = $group_order_list->InsertGroupCost($result_sub, $finance_info, $user_id, $tourist_mark); #endregion #region 12,※其他后续处理 #发送成功短信 // $url = 'http://' . CS1_DOMAIN . '/api/msg/group-order-send-success-msg'; // $sendInfo = array(); // $sendInfo['order_id'] = $result_sub["order_title_id"]; // Msg::httpRequest($url, $sendInfo); #endregion #region 13.下保险单 不论成功失败 不影响正常订单流程 if ($buy_insurance !=0 && $insurance != '' && $result['code'] == 0) { $insuraceData = [ #请求头 'auth_code' => Yii::$app->request->post('auth_code'), 'user_key' => Yii::$app->request->post('user_key'), 'user' => Yii::$app->request->post('user'), 'user_id' => Yii::$app->request->post('user_id'), 'request_time' => Yii::$app->request->post('request_time'), #报文体 'order_info_arr' => json_encode($order_info_arr), 'bus_order_id' => $result_sub["order_title_id"], 'insurance' => $insurance, 'tourist_id'=>Yii::$app->request->post('tourist_id',''), 'action' => 'add_insurance' ]; Utils::httpRequestForasyn('http://' . CS1_DOMAIN . '/api/submit-order/', $insuraceData); } return json_encode($result); } /** * Function Description:提交组合订单(参考备用) * Function Name: actionSubmitGroupOrderBackup * * @return string * * @author 张帅 */ public function actionSubmitGroupOrderBackup() { /*$submit_group_order = new SubmitGroupOrder(); #region 获取参数 $product_name = Yii::$app->request->post('product_name', '未命名组合产品');//产品名称 $bus_product = Yii::$app->request->post('bus_product', '');//巴士订购产品 $hotel_product = Yii::$app->request->post('hotel_product', '');//酒店订购产品 $ticket_product = Yii::$app->request->post('ticket_product', '');//门票订购产品 $customer_info = Yii::$app->request->post('customer_info', '');//顾客信息 $order_info = Yii::$app->request->post('order_info', '');//订单基础信息 #endregion #region 检查数据 $result_data = $submit_group_order->checkSubmitData($product_name, $bus_product, $hotel_product, $ticket_product, $customer_info, $order_info); if (isset($result_data['code']) && $result_data['code'] == '1') { return json_encode($result_data); } #endregion #region 获取订单配置 $submit_group_order->getOrderMainBase();//订单配置数据 #endregion #region 检验并获取巴士数据详情 $bus_result = $submit_group_order->getBusOrderData(); if (isset($bus_result['code']) && $bus_result['code'] == '1') { return json_encode($bus_result); } #endregion #region 检验并获取酒店数据详情 $hotel_result = $submit_group_order->getHotelOrderData(); if (isset($hotel_result['code']) && $hotel_result['code'] == '1') { return json_encode($hotel_result); } #endregion #region 检验并获取门票数据详情 $ticket_result = $submit_group_order->getTicketOrderData(); if (isset($ticket_result['code']) && $ticket_result['code'] == '1') { return json_encode($ticket_result); } #endregion #region 获取唯一键值并补充主订单配置 $unique_result = $submit_group_order->getUniqueId(); if (isset($unique_result['code']) && $unique_result['code'] != '0') { return json_encode($unique_result); } #endregion #region 获取订单提交数据配置 $submit_group_order->getSubmitGroupOrderData(); #endregion #region 提交订单 $result = $submit_group_order->submitGroupOrder(); #endregion return json_encode($result);*/ } // 酒店退单接口 public function actionHotelOrderCancel() { // $order_id = '1011653'; // $merge_status = 27; $order_id = Yii::$app->request->post('order_id'); // $merge_status = Yii::$app->request->post('merge_status'); $user_id = Yii::$app->request->post('user_id', 1); $model = new HotelCancelOrder(); //获取订单基本信息; //订单三种预订方法,组合单,录单,直连 $data = $model->getOrderInfo($order_id); //可取消检查 $checkFlag = $model->checkIfCancel($data); if (!$checkFlag) { $res['code'] = '2'; $res['info'] = '该订单不可取消'; return json_encode($res); } //556直连 557录单 直连与录单 就多置一个channel_order_status 其余无差别 // if ($data['docking_type'] == 557) { //录单与组合订单 $res = $model->cancelOrder($data, $user_id); return json_encode($res); // } } /** * Function Description:取消自由行订单统一接口 * Function Name: actionCancelTourist * * @return string * * @author 娄梦宁 */ public function actionCancelTourist() { //身份校验 // if ($this->actionCheckAuthCode() == false) { // $json = ['code' => 1, 'info' => '验证身份失败']; // return json_encode($json); // } $cancelTourist = new CancelTourist(); $title_id = Yii::$app->request->post('sign',27266);//自由行订单id $user_id = Yii::$app->request->post('user_id', 2);//用户id 默认1 $cancel_reason = Yii::$app->request->post('cancel_reason', '系统退单');//退票原因 默认:系统退单 $result = $cancelTourist->CancelTouristById($title_id, $user_id, $cancel_reason); return json_encode($result); } /** * Function Description:验证验证码 * Function Name: actionCheckAuthCode * * @return string * * @author Redstop */ public function actionCheckAuthCode() { $user = Yii::$app->request->post('user'); $user_key = Yii::$app->request->post('user_key'); $request_time = Yii::$app->request->post('request_time'); $auth_code = Yii::$app->request->post('auth_code'); //加密规则为 request_time(linux时间戳)前三位 + user + user_key + request_time(linux时间戳)末尾三位,进行MD5加密后,换成大写字母 $real_auth_code = strtoupper(md5(substr($request_time, 0, 3) . "|" . $user . "|" . $user_key . "|" . substr($request_time, strlen($request_time) - 3, 3))); if ($real_auth_code == $auth_code) { return true; } return false; } /** * Function Description:处理订单渠道商和供应商的预付款 * Function Name: SupplierBalance * * * @author 娄梦宁 */ public function actionSupplierBalance(){ $order_id = Yii::$app->request->post('order_id'); $pay_type = Yii::$app->request->post('pay_type'); $memo = Yii::$app->request->post('memo'); $submit_order=new SubmitOrder(); $submit_order->SupplierBalance($order_id,$pay_type,$memo); } // public function actionCancelForWeChat(){ // $util=new Util(); // $order_id=Yii::$app->request->post('order_id');//订单号 // $result=$util->interfaceZzcx($order_id); // return $result; // } public function actionCtripFinish(){ $otaOrderId=Yii::$app->request->get('otaOrderId'); $vendorOrderId=Yii::$app->request->get('vendorOrderId'); $ctrip_util=CtripUtil::NoticeOrderConsumed($otaOrderId,$vendorOrderId,1); } }