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.
 
 
 
 
 
 

438 rader
17 KiB

  1. <?php
  2. namespace backend\modules\api\controllers;
  3. use backend\modules\api\logic\WxTripApi;
  4. use backend\modules\api\logic\TouristToResource;
  5. use backend\modules\api\logic\GetTouristStock;
  6. use backend\modules\api\logic\SubmitTouristOrder;
  7. use backend\modules\api\models\BaseUser;
  8. use backend\modules\api\models\OperaHotel;
  9. use backend\modules\api\models\OperaHotelBaseRoom;
  10. use backend\modules\api\models\OperaHotelRoom;
  11. use backend\modules\api\models\OperaTickets;
  12. use backend\modules\api\models\OrderMain;
  13. use backend\modules\api\models\RunHotelDistrib;
  14. use backend\modules\api\models\RunHotelSubRoom;
  15. use backend\modules\api\models\RunMain;
  16. use backend\modules\api\models\RunProd;
  17. use backend\modules\api\models\OutsideTicket;
  18. use backend\modules\api\models\RunStock;
  19. use backend\modules\zzcs\models\OperaTouristCommon;
  20. use backend\modules\zzcs\logic\TouristCalendar;
  21. use backend\modules\zzcs\logic\TouristCombination;
  22. use backend\modules\api\logic\GetOrderMainData;
  23. use backend\modules\api\models\OperaMessageTemplate;
  24. use common\models\Msg;
  25. use backend\modules\zzcs\models\OperaTouristDetail;
  26. use backend\modules\zzcs\models\OperaTouristRun;
  27. use yii\web\Controller;
  28. use Yii;
  29. class WxController extends Controller
  30. {
  31. public $enableCsrfValidation = false;
  32. /**
  33. * Function Description:入口
  34. * Function Name: actionIndex
  35. *
  36. * @return string
  37. *
  38. * @author Redstop
  39. */
  40. public function actionIndex()
  41. {
  42. $request = Yii::$app->request;
  43. $action = $request->post('action');
  44. $func = 'action';
  45. $action = explode('_', $action);
  46. foreach ($action as $key => $vel) {
  47. $func .= ucfirst($vel);
  48. }
  49. //check 验证码
  50. if ($this->actionCheckAuthCode() == false) {
  51. $json = ['code' => 1, 'info' => '验证身份失败'];
  52. return json_encode($json);
  53. }
  54. if ($action === false || method_exists($this, $func) == false) {
  55. $json = ['code' => 1, 'info' => '必要参数缺失'];
  56. return json_encode($json);
  57. }
  58. return $this->$func();
  59. }
  60. /**
  61. * Function Description:验证验证码
  62. * Function Name: actionCheckAuthCode
  63. *
  64. * @return string
  65. *
  66. * @author Redstop
  67. */
  68. public function actionCheckAuthCode()
  69. {
  70. $user = Yii::$app->request->post('user');//用户名
  71. $user_key = Yii::$app->request->post('user_key');//用户key
  72. $request_time = Yii::$app->request->post('request_time');//用户key
  73. $auth_code = Yii::$app->request->post('auth_code');//用户key
  74. //加密规则为 request_time(linux时间戳)前三位 + user + user_key + request_time(linux时间戳)末尾三位,进行MD5加密后,换成大写字母
  75. $real_auth_code = strtoupper(md5(substr($request_time, 0, 3) . "|" . $user . "|" . $user_key . "|" . substr($request_time, strlen($request_time) - 3, 3)));
  76. if ($real_auth_code == $auth_code) {
  77. return true;
  78. }
  79. return false;
  80. }
  81. /**
  82. * Function Description:获取所有上架跟团游产品信息
  83. * Function Name: actionGetTicketArray
  84. *
  85. *
  86. * @return string
  87. *
  88. * @author Redstop
  89. */
  90. public function actionGetTouristArray()
  91. {
  92. $opera_tourist_common = new OperaTouristCommon();
  93. #region 获取参数
  94. $user_id = Yii::$app->request->post('user_id');//用户id
  95. #endregion
  96. $tourist_array = array();
  97. $json = ['code' => 0, 'info' => '获取数据成功', 'data' => $tourist_array];
  98. return json_encode($json);
  99. }
  100. /**
  101. * Function Description:获取所有该电话号码相关的订单
  102. * Function Name: actionGetTicketArray
  103. *
  104. *
  105. * @return string
  106. *
  107. * @author Redstop
  108. */
  109. protected function actionGetBusOrderArray()
  110. {
  111. $get_order_main = new GetOrderMainData();
  112. #region 获取参数
  113. $user_phone = Yii::$app->request->post('phone');//联系人电话
  114. #endregion
  115. $start_date = date("Y-m-d",strtotime('-10 day'));
  116. $end_date = date("Y-m-d", strtotime("+20 day"));
  117. $search_order_main = $get_order_main->getBusOrderArrayByPhone($user_phone, $start_date, $end_date);
  118. $return_order_array = array();
  119. if ($search_order_main != false && count($search_order_main) > 0) {
  120. foreach ($search_order_main as $order_main_info) {
  121. $return_info_token = array();
  122. $return_info_token["cs_order_id"] = $order_main_info["parent_order_id"];
  123. $return_info_token["start_time"] = $order_main_info["prod_start_station_time"];
  124. $return_info_token["end_time"] = $order_main_info["prod_end_station_time"];
  125. $return_info_token["start_res_id"] = $order_main_info["prod_start_station_res_id"];
  126. $return_info_token["start_res"] = $order_main_info["prod_start_station_res_name"];
  127. $return_info_token["end_res_id"] = $order_main_info["prod_end_station_res_id"];
  128. $return_info_token["end_res"] = $order_main_info["prod_end_station_res_name"];
  129. $return_info_token["start_area_name"] = $order_main_info["prod_start_station_area_name"];
  130. $return_info_token["start_area_id"] = $order_main_info["prod_start_station_area_id"];
  131. $return_info_token["end_area_name"] = $order_main_info["prod_end_station_area_name"];
  132. $return_info_token["end_area_id"] = $order_main_info["prod_end_station_area_id"];
  133. $return_info_token["start_longitude"] = $order_main_info["start_longitude"];
  134. $return_info_token["start_latitude"] = $order_main_info["start_latitude"];
  135. $return_info_token["customer_name"] = $order_main_info["customer_name"];
  136. $return_info_token["customer_mobile"] = $order_main_info["customer_mobile"];
  137. $return_info_token["customer_id_no"] = $order_main_info["customer_id_no"];
  138. $return_order_array[$return_info_token["cs_order_id"]] = $return_info_token;
  139. }
  140. }
  141. $json = ['code' => 0, 'info' => '获取数据成功', 'list' => $return_order_array];
  142. return json_encode($json);
  143. }
  144. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  145. // add by Qiu Song //
  146. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  147. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  148. // add by Wen Yili //
  149. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  150. /**
  151. * Function Description:获取自由行产品实际需要支付金额
  152. * Function Name: actionGetTouristPayTotal
  153. *
  154. * @return string
  155. *
  156. * @author 温依莅
  157. */
  158. protected function actionGetTouristPayTotal()
  159. {
  160. $tourist_id = Yii::$app->request->post('sign', -1);//自由行产品标识sign,格式 TR-10001,其中10001位自由行tourist_id
  161. $run_date = Yii::$app->request->post('date', -1);//起始日期
  162. $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"}
  163. $org_id = Yii::$app->request->post('org_id', 164);//自由行产品销售渠道id
  164. $user_id = Yii::$app->request->post('user_id', 2);//用户id
  165. if ($tourist_id == -1 || $run_date == -1 || $prod_arr == -1) {
  166. $result['code'] = '1';
  167. $result['info'] = '参数缺失';
  168. return json_encode($result);
  169. }
  170. $tourist_stock_obj = new GetTouristStock();
  171. $res = $tourist_stock_obj->getTouristPayTotal($tourist_id, $run_date, $org_id, $user_id, json_decode($prod_arr, true));
  172. return json_encode($res);
  173. }
  174. /**
  175. * Function Description:自由行产品下单
  176. * Function Name: actionSubmitTouristOrder
  177. *
  178. * @return string
  179. *
  180. * @author 温依莅
  181. */
  182. protected function actionSubmitTouristOrder()
  183. {
  184. $sign = Yii::$app->request->post('sign', -1);//自由行产品标识sign,格式 TR-10001,其中10001位自由行tourist_id
  185. $date = Yii::$app->request->post('date', -1);//起始日期
  186. $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"}
  187. $customer_info = Yii::$app->request->post('customer_info', -1);//顾客信息
  188. $order_info = Yii::$app->request->post('order_info', -1);//订单信息
  189. $passenger_info = Yii::$app->request->post('passenger_info', '[]');//订单信息
  190. $buy_insurance = Yii::$app->request->post('buy_insurance', 0);//是否购买保险信 默认0 ,内部保险 1,外部保险 2
  191. $insurance = Yii::$app->request->post('insurance', '');//保险单详细 [{姓名,身份证},{姓名,身份证},{姓名,身份证}] array数组json_encode
  192. $auth_code = Yii::$app->request->post('auth_code', '');
  193. $user_key = Yii::$app->request->post('user_key', '');
  194. $user = Yii::$app->request->post('user', '');
  195. $userId = Yii::$app->request->post('user_id', '');
  196. $request_time = Yii::$app->request->post('request_time', '');
  197. $touristObj = new SubmitTouristOrder();
  198. $result = $touristObj->submitTouristGroupOrder($sign, $date, $prod_arr, $customer_info, $order_info, $passenger_info,$insurance,$buy_insurance,$auth_code,$user_key,$user,$userId,$request_time);
  199. return json_encode($result);
  200. }
  201. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  202. // add by Lou Mengning //
  203. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  204. /**
  205. * Function Description:微信端我要找车,获取巴士位置
  206. * Function Name: actionGetBusPosition
  207. *
  208. * @return mixed
  209. *
  210. * @author 娄梦宁
  211. */
  212. protected function actionGetBusPosition()
  213. {
  214. $wx_trip_api = new WxTripApi();
  215. $order_id = Yii::$app->request->post('order_id');//订单号
  216. $run_date = Yii::$app->request->post('run_date');//出行日期
  217. $result = $wx_trip_api->GetBusPosition($order_id, $run_date);
  218. return json_encode($result);
  219. }
  220. /**
  221. * Function Description:获取产品某一天的票种价格
  222. * Function Name: actionGetPriceDateByDay
  223. *
  224. * @return string
  225. *
  226. * @author 娄梦宁
  227. */
  228. protected function actionGetPriceDateByDay()
  229. {
  230. $org_id = Yii::$app->request->post('org_id','164');//渠道号 非必传 根据渠道号获取各自的价格日历
  231. $userId = Yii::$app->request->post('user_id', 2);
  232. $wx_trip_api = new WxTripApi($org_id);
  233. $tourist_id = Yii::$app->request->post('sign');//产品编号
  234. $run_date = Yii::$app->request->post('run_date');//出行日期
  235. $result = $wx_trip_api->GetPriceDateOne($tourist_id, $run_date,$userId);
  236. return json_encode($result);
  237. }
  238. /**
  239. * Function Description:获取一个月的价格日历
  240. * Function Name: actionGetPriceDateByMonth
  241. *
  242. * @return string
  243. *
  244. * @author 娄梦宁
  245. */
  246. protected function actionGetPriceDateByMonth()
  247. {
  248. $org_id = Yii::$app->request->post('org_id','164');//渠道号 非必传 根据渠道号获取各自的价格日历
  249. $userId = Yii::$app->request->post('user_id', 2);
  250. $wx_trip_api = new WxTripApi($org_id);
  251. $tourist_id = Yii::$app->request->post('sign');//订单号
  252. $result = $wx_trip_api->GetPriceDateMonth($tourist_id,$userId);
  253. return json_encode($result);
  254. }
  255. /**
  256. * Function Description:根据订单号获取座位号
  257. * Function Name: actionGetSeatNumber
  258. *
  259. * @return string
  260. *
  261. * @author 娄梦宁
  262. */
  263. protected function actionGetSeatNumber(){
  264. $order_id=Yii::$app->request->post('order_id');
  265. $order_main=new OrderMain();
  266. $data=$order_main->getSeatNumber($order_id);
  267. $result=[
  268. 'code'=>0,
  269. 'data'=>$data
  270. ];
  271. return json_encode($result);
  272. }
  273. /**
  274. * Function Description:获取座位是否可换标志
  275. * Function Name: actionGetChangeSeatType
  276. *
  277. * @return string
  278. *
  279. * @author 娄梦宁
  280. */
  281. function actionGetChangeSeatType(){
  282. $order_id=Yii::$app->request->post('order_id');
  283. $wx_trip_api = new WxTripApi();
  284. $result=$wx_trip_api->getChangeSeatType($order_id);
  285. return json_encode($result);
  286. }
  287. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  288. // add by Luo Chenjie //
  289. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  290. /**
  291. * Function Description:获取所有巴士自由行产品数据
  292. * Function Name: actionGetAllTouristInfo
  293. *
  294. * @return string
  295. *
  296. * @author luocj
  297. */
  298. protected function actionGetAllTouristInfo()
  299. {
  300. $org_id = Yii::$app->request->post('org_id', 164);
  301. $userId = Yii::$app->request->post('user_id', 2);
  302. $model = new OperaTouristCommon();
  303. $data = $model->getAllTouristInfo();
  304. if ($data["code"] == 0) {
  305. //增加 起价
  306. $wx_trip_api = new WxTripApi($org_id);
  307. $return_list = $wx_trip_api->addMinPriceToTouristArray($data["list"], 14,$userId);
  308. $data["list"] = $return_list;
  309. }
  310. return json_encode($data);
  311. }
  312. /**
  313. * Function Description:自由行拆分成 巴士 门票 酒店
  314. * Function Name: actionTouristToAll
  315. *
  316. * @return string
  317. *
  318. * @author LUOCJ
  319. */
  320. protected function actionTouristToAll()
  321. {
  322. #1.获取参数
  323. $tp_tourist_id = Yii::$app->request->post('sign'); //自由行产品id
  324. $tourist_id = explode('-', $tp_tourist_id)[1];
  325. $date = Yii::$app->request->post('date'); //入住日期
  326. $prod_arr = Yii::$app->request->post('prod_arr'); //票种信息
  327. $customer_info = Yii::$app->request->post('customer_info'); //客人信息
  328. $order_info = Yii::$app->request->post('order_info'); //订单信息
  329. $model = new TouristToResource();
  330. $data = $model->getTouristToAll($tourist_id, $date, json_decode($prod_arr, true), json_decode($customer_info, true), json_decode($order_info, true),164);
  331. #2.返回参数
  332. return json_encode($data);
  333. }
  334. /**
  335. * Function Description:白名单接口 flag为1 添加白名单 flag 为2 删除白名单
  336. * Function Name: actionAppointSendMessage
  337. *
  338. * @return string
  339. *
  340. * @author LUOCJ
  341. */
  342. public function actionAppointSendMessage()
  343. {
  344. $order_id = Yii::$app->request->post('order_id', -1);
  345. //1为添加白名单 2为删除白名单
  346. $flag = Yii::$app->request->post('flag', -1);
  347. if ($order_id == -1 || $flag == -1 || !in_array($flag, [1, 2])) {
  348. $json["code"] = '1';
  349. $json["info"] = '缺少参数';
  350. return json_encode($json);
  351. }
  352. //插入表 appoint_send_message
  353. $model = new OperaMessageTemplate();
  354. if ($flag == 1) {
  355. $data = $model->insertAppointSendMessage($order_id);
  356. } else {
  357. $data = $model->cancelAppointSendMessage($order_id);
  358. }
  359. return json_encode($data);
  360. }
  361. /**
  362. * Function Description:微信点击接口 1为添加点击过接口 2为删除点击过接口
  363. * Function Name: actionAppointSendMessage
  364. *
  365. * @return string
  366. *
  367. * @author LUOCJ
  368. */
  369. public function actionWechatClickMessage()
  370. {
  371. $order_id = Yii::$app->request->post('order_id', -1);
  372. $flag = Yii::$app->request->post('flag', -1);
  373. if ($order_id == -1 || $flag == -1 || !in_array($flag, [1, 2])) {
  374. $json["code"] = '1';
  375. $json["info"] = '缺少参数';
  376. return json_encode($json);
  377. }
  378. $model = new OperaMessageTemplate();
  379. if ($flag == 1) {
  380. $data = $model->insertWechatClickMessage($order_id);
  381. #发送成功短信
  382. $msg = new OperaMessageTemplate();
  383. $msg->orderSendMsg($order_id, 'two');
  384. } else {
  385. $data = $model->cancelWechatClickMessage($order_id);
  386. }
  387. return json_encode($data);
  388. }
  389. /**
  390. * Function Description:根据sign(tourist_id)获取自由行保险价格
  391. * Function Name: actionGetTripDays
  392. * @return string
  393. * @author 田玲菲
  394. */
  395. public function actionGetTripDaysInsurance(){
  396. $tourist_id = Yii::$app->request->post('sign', 0);
  397. $run_date = Yii::$app->request->post('run_date', 0);
  398. $wx = new WxTripApi();
  399. $result = $wx->getFreeWalkDays($tourist_id,$run_date);
  400. return json_encode($result);
  401. }
  402. }