|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437 |
- <?php
-
- namespace backend\modules\api\controllers;
-
- use backend\modules\api\logic\WxTripApi;
- use backend\modules\api\logic\TouristToResource;
- use backend\modules\api\logic\GetTouristStock;
- use backend\modules\api\logic\SubmitTouristOrder;
- use backend\modules\api\models\BaseUser;
- use backend\modules\api\models\OperaHotel;
- use backend\modules\api\models\OperaHotelBaseRoom;
- use backend\modules\api\models\OperaHotelRoom;
- use backend\modules\api\models\OperaTickets;
- use backend\modules\api\models\OrderMain;
- use backend\modules\api\models\RunHotelDistrib;
- use backend\modules\api\models\RunHotelSubRoom;
- use backend\modules\api\models\RunMain;
- use backend\modules\api\models\RunProd;
- use backend\modules\api\models\OutsideTicket;
- use backend\modules\api\models\RunStock;
- use backend\modules\zzcs\models\OperaTouristCommon;
- use backend\modules\zzcs\logic\TouristCalendar;
- use backend\modules\zzcs\logic\TouristCombination;
- use backend\modules\api\logic\GetOrderMainData;
- use backend\modules\api\models\OperaMessageTemplate;
- use common\models\Msg;
-
- use backend\modules\zzcs\models\OperaTouristDetail;
- use backend\modules\zzcs\models\OperaTouristRun;
- use yii\web\Controller;
- use Yii;
-
- class WxController extends Controller
- {
- public $enableCsrfValidation = false;
-
- /**
- * Function Description:入口
- * Function Name: actionIndex
- *
- * @return string
- *
- * @author Redstop
- */
- public function actionIndex()
- {
-
- $request = Yii::$app->request;
- $action = $request->post('action');
- $func = 'action';
- $action = explode('_', $action);
- foreach ($action as $key => $vel) {
- $func .= ucfirst($vel);
- }
- //check 验证码
- if ($this->actionCheckAuthCode() == false) {
- $json = ['code' => 1, 'info' => '验证身份失败'];
- return json_encode($json);
- }
-
- if ($action === false || method_exists($this, $func) == false) {
- $json = ['code' => 1, 'info' => '必要参数缺失'];
- return json_encode($json);
- }
- return $this->$func();
- }
-
- /**
- * 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');//用户key
- $request_time = Yii::$app->request->post('request_time');//用户key
- $auth_code = Yii::$app->request->post('auth_code');//用户key
- //加密规则为 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: actionGetTicketArray
- *
- *
- * @return string
- *
- * @author Redstop
- */
- public function actionGetTouristArray()
- {
- $opera_tourist_common = new OperaTouristCommon();
-
- #region 获取参数
- $user_id = Yii::$app->request->post('user_id');//用户id
- #endregion
-
- $tourist_array = array();
-
- $json = ['code' => 0, 'info' => '获取数据成功', 'data' => $tourist_array];
- return json_encode($json);
- }
-
-
- /**
- * Function Description:获取所有该电话号码相关的订单
- * Function Name: actionGetTicketArray
- *
- *
- * @return string
- *
- * @author Redstop
- */
- protected function actionGetBusOrderArray()
- {
- $get_order_main = new GetOrderMainData();
-
- #region 获取参数
- $user_phone = Yii::$app->request->post('phone');//联系人电话
- #endregion
- $start_date = date("Y-m-d",strtotime('-10 day'));
- $end_date = date("Y-m-d", strtotime("+20 day"));
- $search_order_main = $get_order_main->getBusOrderArrayByPhone($user_phone, $start_date, $end_date);
-
- $return_order_array = array();
- if ($search_order_main != false && count($search_order_main) > 0) {
- foreach ($search_order_main as $order_main_info) {
- $return_info_token = array();
- $return_info_token["cs_order_id"] = $order_main_info["parent_order_id"];
- $return_info_token["start_time"] = $order_main_info["prod_start_station_time"];
- $return_info_token["end_time"] = $order_main_info["prod_end_station_time"];
- $return_info_token["start_res_id"] = $order_main_info["prod_start_station_res_id"];
- $return_info_token["start_res"] = $order_main_info["prod_start_station_res_name"];
- $return_info_token["end_res_id"] = $order_main_info["prod_end_station_res_id"];
- $return_info_token["end_res"] = $order_main_info["prod_end_station_res_name"];
- $return_info_token["start_area_name"] = $order_main_info["prod_start_station_area_name"];
- $return_info_token["start_area_id"] = $order_main_info["prod_start_station_area_id"];
- $return_info_token["end_area_name"] = $order_main_info["prod_end_station_area_name"];
- $return_info_token["end_area_id"] = $order_main_info["prod_end_station_area_id"];
- $return_info_token["start_longitude"] = $order_main_info["start_longitude"];
- $return_info_token["start_latitude"] = $order_main_info["start_latitude"];
- $return_info_token["customer_name"] = $order_main_info["customer_name"];
- $return_info_token["customer_mobile"] = $order_main_info["customer_mobile"];
- $return_info_token["customer_id_no"] = $order_main_info["customer_id_no"];
- $return_order_array[$return_info_token["cs_order_id"]] = $return_info_token;
- }
- }
- $json = ['code' => 0, 'info' => '获取数据成功', 'list' => $return_order_array];
- return json_encode($json);
- }
-
-
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // add by Qiu Song //
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // add by Wen Yili //
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /**
- * Function Description:获取自由行产品实际需要支付金额
- * Function Name: actionGetTouristPayTotal
- *
- * @return string
- *
- * @author 温依莅
- */
- protected function actionGetTouristPayTotal()
- {
- $tourist_id = Yii::$app->request->post('sign', -1);//自由行产品标识sign,格式 TR-10001,其中10001位自由行tourist_id
- $run_date = Yii::$app->request->post('date', -1);//起始日期
- $prod_arr = Yii::$app->request->post('prod_arr', -1);//票种数据(成人,儿童)格式 : [{"prod_id":"TR-10001-1","prod_name":"成人票","prod_num":"2"},{"prod_id":"TR-10001-2","prod_name":"儿童票","prod_num":"1"}
- $org_id = Yii::$app->request->post('org_id', 164);//自由行产品销售渠道id
- $user_id = Yii::$app->request->post('user_id', 2);//用户id
- if ($tourist_id == -1 || $run_date == -1 || $prod_arr == -1) {
- $result['code'] = '1';
- $result['info'] = '参数缺失';
- return json_encode($result);
- }
- $tourist_stock_obj = new GetTouristStock();
- $res = $tourist_stock_obj->getTouristPayTotal($tourist_id, $run_date, $org_id, $user_id, json_decode($prod_arr, true));
- return json_encode($res);
- }
-
- /**
- * Function Description:自由行产品下单
- * Function Name: actionSubmitTouristOrder
- *
- * @return string
- *
- * @author 温依莅
- */
- protected function actionSubmitTouristOrder()
- {
- $sign = Yii::$app->request->post('sign', -1);//自由行产品标识sign,格式 TR-10001,其中10001位自由行tourist_id
- $date = Yii::$app->request->post('date', -1);//起始日期
- $prod_arr = Yii::$app->request->post('prod_arr', -1);//票种数据(成人,儿童)格式 : [{"prod_id":"TR-10001-1","prod_name":"成人票","prod_num":"2"},{"prod_id":"TR-10001-2","prod_name":"儿童票","prod_num":"1"}
- $customer_info = Yii::$app->request->post('customer_info', -1);//顾客信息
- $order_info = Yii::$app->request->post('order_info', -1);//订单信息
- $passenger_info = Yii::$app->request->post('passenger_info', '[]');//订单信息
- $buy_insurance = Yii::$app->request->post('buy_insurance', 0);//是否购买保险信 默认0 ,内部保险 1,外部保险 2
- $insurance = Yii::$app->request->post('insurance', '');//保险单详细 [{姓名,身份证},{姓名,身份证},{姓名,身份证}] array数组json_encode
- $auth_code = Yii::$app->request->post('auth_code', '');
- $user_key = Yii::$app->request->post('user_key', '');
- $user = Yii::$app->request->post('user', '');
- $userId = Yii::$app->request->post('user_id', '');
- $request_time = Yii::$app->request->post('request_time', '');
-
- $touristObj = new SubmitTouristOrder();
- $result = $touristObj->submitTouristGroupOrder($sign, $date, $prod_arr, $customer_info, $order_info, $passenger_info,$insurance,$buy_insurance,$auth_code,$user_key,$user,$userId,$request_time);
- return json_encode($result);
- }
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // add by Lou Mengning //
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /**
- * Function Description:微信端我要找车,获取巴士位置
- * Function Name: actionGetBusPosition
- *
- * @return mixed
- *
- * @author 娄梦宁
- */
- protected function actionGetBusPosition()
- {
- $wx_trip_api = new WxTripApi();
- $order_id = Yii::$app->request->post('order_id');//订单号
- $run_date = Yii::$app->request->post('run_date');//出行日期
- $result = $wx_trip_api->GetBusPosition($order_id, $run_date);
- return json_encode($result);
- }
-
- /**
- * Function Description:获取产品某一天的票种价格
- * Function Name: actionGetPriceDateByDay
- *
- * @return string
- *
- * @author 娄梦宁
- */
- protected function actionGetPriceDateByDay()
- {
- $org_id = Yii::$app->request->post('org_id','164');//渠道号 非必传 根据渠道号获取各自的价格日历
- $userId = Yii::$app->request->post('user_id', 2);
- $wx_trip_api = new WxTripApi($org_id);
- $tourist_id = Yii::$app->request->post('sign');//产品编号
- $run_date = Yii::$app->request->post('run_date');//出行日期
- $result = $wx_trip_api->GetPriceDateOne($tourist_id, $run_date,$userId);
- return json_encode($result);
- }
-
- /**
- * Function Description:获取一个月的价格日历
- * Function Name: actionGetPriceDateByMonth
- *
- * @return string
- *
- * @author 娄梦宁
- */
- protected function actionGetPriceDateByMonth()
- {
- $org_id = Yii::$app->request->post('org_id','164');//渠道号 非必传 根据渠道号获取各自的价格日历
- $userId = Yii::$app->request->post('user_id', 2);
- $wx_trip_api = new WxTripApi($org_id);
- $tourist_id = Yii::$app->request->post('sign');//订单号
- $result = $wx_trip_api->GetPriceDateMonth($tourist_id,$userId);
- return json_encode($result);
- }
-
- /**
- * Function Description:根据订单号获取座位号
- * Function Name: actionGetSeatNumber
- *
- * @return string
- *
- * @author 娄梦宁
- */
- protected function actionGetSeatNumber(){
- $order_id=Yii::$app->request->post('order_id');
- $order_main=new OrderMain();
- $data=$order_main->getSeatNumber($order_id);
- $result=[
- 'code'=>0,
- 'data'=>$data
- ];
- return json_encode($result);
- }
-
- /**
- * Function Description:获取座位是否可换标志
- * Function Name: actionGetChangeSeatType
- *
- * @return string
- *
- * @author 娄梦宁
- */
- function actionGetChangeSeatType(){
- $order_id=Yii::$app->request->post('order_id');
- $wx_trip_api = new WxTripApi();
- $result=$wx_trip_api->getChangeSeatType($order_id);
- return json_encode($result);
- }
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // add by Luo Chenjie //
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /**
- * Function Description:获取所有巴士自由行产品数据
- * Function Name: actionGetAllTouristInfo
- *
- * @return string
- *
- * @author luocj
- */
- protected function actionGetAllTouristInfo()
- {
- $org_id = Yii::$app->request->post('org_id', 164);
- $userId = Yii::$app->request->post('user_id', 2);
- $model = new OperaTouristCommon();
- $data = $model->getAllTouristInfo();
- if ($data["code"] == 0) {
- //增加 起价
- $wx_trip_api = new WxTripApi($org_id);
- $return_list = $wx_trip_api->addMinPriceToTouristArray($data["list"], 14,$userId);
- $data["list"] = $return_list;
- }
- return json_encode($data);
- }
-
- /**
- * Function Description:自由行拆分成 巴士 门票 酒店
- * Function Name: actionTouristToAll
- *
- * @return string
- *
- * @author LUOCJ
- */
- protected function actionTouristToAll()
- {
- #1.获取参数
- $tp_tourist_id = Yii::$app->request->post('sign'); //自由行产品id
- $tourist_id = explode('-', $tp_tourist_id)[1];
- $date = Yii::$app->request->post('date'); //入住日期
- $prod_arr = Yii::$app->request->post('prod_arr'); //票种信息
- $customer_info = Yii::$app->request->post('customer_info'); //客人信息
- $order_info = Yii::$app->request->post('order_info'); //订单信息
- $model = new TouristToResource();
- $data = $model->getTouristToAll($tourist_id, $date, json_decode($prod_arr, true), json_decode($customer_info, true), json_decode($order_info, true),164);
- #2.返回参数
-
- return json_encode($data);
- }
-
- /**
- * Function Description:白名单接口 flag为1 添加白名单 flag 为2 删除白名单
- * Function Name: actionAppointSendMessage
- *
- * @return string
- *
- * @author LUOCJ
- */
- public function actionAppointSendMessage()
- {
- $order_id = Yii::$app->request->post('order_id', -1);
- //1为添加白名单 2为删除白名单
- $flag = Yii::$app->request->post('flag', -1);
- if ($order_id == -1 || $flag == -1 || !in_array($flag, [1, 2])) {
- $json["code"] = '1';
- $json["info"] = '缺少参数';
- return json_encode($json);
- }
- //插入表 appoint_send_message
- $model = new OperaMessageTemplate();
- if ($flag == 1) {
- $data = $model->insertAppointSendMessage($order_id);
- } else {
- $data = $model->cancelAppointSendMessage($order_id);
- }
- return json_encode($data);
- }
-
- /**
- * Function Description:微信点击接口 1为添加点击过接口 2为删除点击过接口
- * Function Name: actionAppointSendMessage
- *
- * @return string
- *
- * @author LUOCJ
- */
- public function actionWechatClickMessage()
- {
- $order_id = Yii::$app->request->post('order_id', -1);
- $flag = Yii::$app->request->post('flag', -1);
- if ($order_id == -1 || $flag == -1 || !in_array($flag, [1, 2])) {
- $json["code"] = '1';
- $json["info"] = '缺少参数';
- return json_encode($json);
- }
- $model = new OperaMessageTemplate();
- if ($flag == 1) {
- $data = $model->insertWechatClickMessage($order_id);
- #发送成功短信
- $msg = new OperaMessageTemplate();
- $msg->orderSendMsg($order_id, 'two');
- } else {
- $data = $model->cancelWechatClickMessage($order_id);
- }
- return json_encode($data);
- }
-
-
- /**
- * Function Description:根据sign(tourist_id)获取自由行保险价格
- * Function Name: actionGetTripDays
- * @return string
- * @author 田玲菲
- */
- public function actionGetTripDaysInsurance(){
- $tourist_id = Yii::$app->request->post('sign', 0);
- $run_date = Yii::$app->request->post('run_date', 0);
- $wx = new WxTripApi();
- $result = $wx->getFreeWalkDays($tourist_id,$run_date);
- return json_encode($result);
- }
- }
|