You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

OrderUp.php 17 KiB

3 jaren geleden
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327
  1. <?php
  2. if (ALLOW_ORIGIN)
  3. header("Access-Control-Allow-Origin:*");
  4. date_default_timezone_set('PRC');
  5. //require_once '../../Common/Mysql.php';
  6. //$res_content=get_msg_info(207678);
  7. //echo $res_content[2];exit();
  8. //^1[3,4,5,7,8]\d{9}$/
  9. //echo substr('{m1452p1|r202375}',strpos('{m5421p1|r202375}', 'm')+1, strpos('{m1254p1|r202375}', 'p')-2);
  10. $userid =$_COOKIE['user_id'];//getUserId();
  11. //$sql_user="select ";
  12. if (!$userid) {
  13. echo json_encode(array("code" => 1,"iflogin"=>1, "info" => "未登录"));
  14. exit ;
  15. }
  16. //$userid=1;
  17. $myprod = isset($_POST['prod']) ? $_POST['prod'] : "{m152603p1|r202375}";//{m152603p1|r202375}
  18. $prod_id =substr($myprod,strpos($myprod, 'm')+1, strpos($myprod, 'p')-2);
  19. $mycustomer = isset($_POST['customer']) ? $_POST['customer'] : "nono";
  20. $order_from_org_id = isset($_POST['order_from_org_id']) ? $_POST['order_from_org_id'] : '0';
  21. $outside_order_id = isset($_POST['outside_order_id']) ? $_POST['outside_order_id'] : '0';
  22. $sql_price = "select cus_price from opera_product_price where prod_id =".$prod_id;
  23. $pdo= conn();
  24. $result_price = $pdo->query($sql_price);
  25. $row_p = $result_price->fetchAll(PDO::FETCH_ASSOC);
  26. $price_list = $prod_id.','.$row_p[0]['cus_price'];//'.$row_p['0']['cus_price'].'
  27. //$u_prod_list=isset($_POST['u_prod_list'])?$_POST['u_prod_list']:"";
  28. //$f_u_prod_list=isset($_POST['f_u_prod_list'])?$_POST['f_u_prod_list']:"";
  29. ///st-xm/Api/add_new_order.php?prod={m152603p1|r202375}&customer={,fuhc_ceshi,1,15821387785,150,511621199502032173,,0,,,}
  30. //&order_from_org_id=5&outside_order_id=9999999999999&tt=20160719195230&price={60.00}&doorPrice=10&hotelPrice=20&ifcheck=1&back_pro_id={m152248p1|r203865}
  31. //.返程 1=true 0=false
  32. $ifcheck = isset($_POST['ifback']) ? $_POST['ifback'] : "";
  33. if($ifcheck){
  34. $back_prod = isset($_POST['back_prod']) ? $_POST['back_prod'] : "";
  35. $prod_id_f =substr($back_prod,strpos($back_prod, 'm')+1, strpos($back_prod, 'p')-2);
  36. $sql_price_f = "select cus_price from opera_product_price where prod_id =".$prod_id_f;
  37. $result_price_f = $pdo->query($sql_price_f);
  38. $row_f = $result_price_f->fetchAll(PDO::FETCH_ASSOC);
  39. $price_list_f =$prod_id_f.','.$row_f['0']['cus_price'];
  40. }
  41. $sql = "call sp_make_order(" . $userid . ",'" . $myprod . "','" . $mycustomer . "'," . $order_from_org_id . ",'" . $outside_order_id . "')";
  42. if ($ifcheck == 0) {//不是含有返程的
  43. writeLog("sp_make_order---san: " . $sql);
  44. $rowset = create_order($sql,$price_list);
  45. // if (is_array($rowset) && $rowset[0]['errcode'] == 0 && SEND_MESSAGE == true) { //单程票订票成功
  46. // send_msg($rowset[0]['order_id']);
  47. // }
  48. $order_id = $rowset[0]['order_id'];
  49. //更改支付方式为 授信支付
  50. //根据订单号查找订单详情
  51. $sql = "select a.order_id,a.order_price,a.order_pay_main_id,a.customer_name,a.customer_mobile,count(b.order_id) as num,b.run_date,b.run_time,b.PROD_START_STATION_AREA_NAME AS start_area,b.PROD_END_STATION_AREA_NAME AS end_area,b.PROD_START_STATION_RES_NAME AS start_res,b.PROD_END_STATION_RES_NAME AS end_res from order_main a,order_main b where a.order_id = b.PARENT_ORDER_ID and a.order_id = " . $order_id . " group by a.order_id";
  52. $result = $pdo->query($sql);
  53. $order_info = $result->fetchAll(PDO::FETCH_ASSOC);
  54. $sql_pay = "update order_pay_detail set pay_type_id_1 =275 where pay_main_id = ".$order_info[0]['order_pay_main_id'];
  55. $pdo->query($sql_pay);
  56. $data['code'] = $rowset[0]['errcode'];
  57. $data['info'] = $rowset[0]['errinfo'];
  58. $data['order_id'] = $rowset[0]['order_id'];
  59. $data['go_list'] = $order_info[0];
  60. $data['go_list']['site_type'] = "普通票";
  61. echo json_encode($data);
  62. } else {
  63. $rowset = create_order($sql,$price_list);
  64. if(!$rowset){
  65. echo json_encode(array('code'=>1,'info'=>$sql));die;
  66. }
  67. if (is_array($rowset) && $rowset[0]['errcode'] == 0 && SEND_MESSAGE == true) {//返程---单程票订票成功
  68. $order_id_go = $rowset[0]['order_id'];
  69. //根据订单号查找订单详情
  70. $sql = "select a.order_id,a.order_price,a.order_pay_main_id,a.customer_name,a.customer_mobile,count(b.order_id) as num,b.run_date,b.run_time,b.PROD_START_STATION_AREA_NAME AS start_area,b.PROD_END_STATION_AREA_NAME AS end_area,b.PROD_START_STATION_RES_NAME AS start_res,b.PROD_END_STATION_RES_NAME AS end_res from order_main a,order_main b where a.order_id = b.PARENT_ORDER_ID and a.order_id = " . $order_id_go . " group by a.order_id";
  71. $result = $pdo->query($sql);
  72. $order_info_go = $result->fetchAll(PDO::FETCH_ASSOC);
  73. $sql_pay = "update order_pay_detail set pay_type_id_1 =275 where pay_main_id = ".$order_info_go[0]['order_pay_main_id'];
  74. $pdo->query($sql_pay);
  75. // $data['code'] = $rowset[0]['errcode'];
  76. // $data['info'] = $rowset[0]['errinfo'];
  77. $data['order_id'] = $rowset[0]['order_id'];
  78. $data['go_list'] = $order_info_go[0];
  79. $data['go_list']['site_type'] = "普通票";
  80. // $data['code_f'] = "";
  81. // $data['info_f'] = "";
  82. // $data['order_id_f'] = "";
  83. $sql_f = "call sp_make_order(" . $userid . ",'" . $back_prod . "','" . $mycustomer . "'," . $order_from_org_id . ",'" . $outside_order_id . "')";
  84. writeLog('fan_dan_success sql_f========'.$sql_f);
  85. $rowset_f = create_order($sql_f,$price_list_f);
  86. //..判断返程票是否成功,若不成功,则去程订单
  87. if (is_array($rowset_f) && $rowset_f[0]['errcode'] == 0 && SEND_MESSAGE == true) {//返程--返程票订票成功
  88. $order_id_back = $rowset_f[0]['order_id'];
  89. //根据订单号查找订单详情
  90. $sql = "select a.order_id,a.order_price,a.order_pay_main_id,a.customer_name,a.customer_mobile,count(b.order_id) as num,b.run_date,b.run_time,b.PROD_START_STATION_AREA_NAME AS start_area,b.PROD_END_STATION_AREA_NAME AS end_area,b.PROD_START_STATION_RES_NAME AS start_res,b.PROD_END_STATION_RES_NAME AS end_res from order_main a,order_main b where a.order_id = b.PARENT_ORDER_ID and a.order_id = " . $order_id_back . " group by a.order_id";
  91. $result = $pdo->query($sql);
  92. $order_info_back = $result->fetchAll(PDO::FETCH_ASSOC);
  93. $sql_pay = "update order_pay_detail set pay_type_id_1 =275 where pay_main_id = ".$order_info_back[0]['order_pay_main_id'];
  94. $pdo->query($sql_pay);
  95. $data['code'] = $rowset_f[0]['errcode'];
  96. $data['info'] = $rowset_f[0]['errinfo'];
  97. $data['order_id_f'] = $rowset_f[0]['order_id'] ;
  98. $data['back_list'] = $order_info_back[0];
  99. $data['back_list']['site_type'] = "普通票";
  100. writeLog('fan_fan_success');
  101. //发两条短信
  102. // send_msg($rowset[0]['order_id']);
  103. // send_msg($rowset_f[0]['order_id']);
  104. //订票成功写入 往返订单关系表
  105. $to_id = $rowset[0]['order_id'];
  106. $back_id = $rowset_f[0]['order_id'];
  107. $sql_conn = "insert into to_from values(NULL,".$to_id.",".$back_id.",'". date('Y-m-d h:i:s', time())."')";
  108. $pdo= conn();
  109. $pdo->exec($sql_conn);
  110. echo json_encode($data);exit();
  111. } else {//如果返程票订票不成功,则取消单程票
  112. $sql_cancel = "CALL SP_CANCEL_ORDER(" . $userid . "," . $rowset[0]['order_id'] . ")";
  113. writeLog('fan_dan_faile_sql_cancel======'.$sql_cancel);
  114. $pdo_cancel = conn();
  115. $result_cancel = $pdo_cancel -> query($sql_cancel);
  116. $rowset_cancel = $result_cancel -> fetchAll(PDO::FETCH_ASSOC);
  117. $result_cancel -> closeCursor();
  118. //取消单程不发短信,但要写入取消订单原因
  119. $res_content = get_msg_info($rowset[0]['order_id']);
  120. // $tel = isset($res_content[1])?$res_content[1]:"";
  121. $content = $rowset_f[0]['errinfo'] . "-订单已取消";
  122. $comment_type = 0;
  123. $comment_text = "";
  124. $sql1 = "CALL HT_ADD_MSG_COMMENT(2,'addmsg'," . $rowset[0]['order_id'] . "," . $comment_type . ",'" . $comment_text . "','" . $tel . "','" . $content . "','" . date("Y-m-d H:i:s") . "',0)";
  125. $result1 = $pdo_cancel -> query($sql1);
  126. $rowset1 = $result1 -> fetchAll(PDO::FETCH_ASSOC);
  127. $result1 -> closeCursor();
  128. writeLog("order_list.php HT_ADD_MSG_COMMENT()::" . $sql1);
  129. $data['code_f'] = $rowset_f[0]['errcode'];
  130. $data['info_f'] = $rowset_f[0]['errinfo'];
  131. $data['order_id_f'] = isset($rowset_f[0]['order_id']) ? $rowset_f[0]['order_id'] : "";
  132. echo json_encode($data);exit();
  133. }
  134. }
  135. }
  136. function create_order($sql,$price_list) {
  137. $pdo = conn();
  138. if (is_object($pdo)) {
  139. $result = $pdo -> query($sql);
  140. if(!$result){
  141. echo json_encode(array('code'=>1,'info'=>'可售资源不足'));die;
  142. }
  143. // echo json_encode(array('aa'=>$sql));die;
  144. $rowset_create = $result -> fetchAll(PDO::FETCH_ASSOC);
  145. $result -> closeCursor();
  146. writeLog('下订单成功');
  147. writeLog(json_encode($rowset_create));
  148. if (is_array($rowset_create) && $rowset_create[0]['errcode'] == 0 && SEND_MESSAGE == true) {
  149. //下订单成功再修改价格
  150. writeLog('change_price.php' . json_encode($_POST));
  151. $sql_up_price = "call SP_CHANGE_PRICE(" . $rowset_create[0]['order_id'] . ",'" . $price_list . "')";
  152. //$sql="update order_main set order_price ='".$price_arr[$k]."' where PROD_ID=".$v." and PARENT_ORDER_ID=".$ordid." and RUN_ID>0";
  153. $result_up_price = $pdo -> query($sql_up_price);
  154. $rowset_up_price = $result_up_price -> fetchAll(PDO::FETCH_ASSOC);
  155. writeLog("change_price.php sql:: " . $sql_up_price . "::rowset ::" . json_encode($rowset_up_price));
  156. $result_up_price -> closeCursor();
  157. }
  158. }
  159. return $rowset_create;
  160. }
  161. //发短信
  162. function send_msg($ORDER_ID) {
  163. $send_pdo=conn();
  164. $order_id = $ORDER_ID;
  165. $res_content = get_msg_info($order_id);
  166. $name = $res_content[0];
  167. $tel = $res_content[1];
  168. $content = $res_content[2];
  169. writeLog("短信模板内容:【" . $content . "】");
  170. //..发短信先取消
  171. $response = sendTelMessage($tel, $name, $content, $order_id);
  172. writeLog(json_encode($response));
  173. $comment_type = 0;
  174. $comment_text = "";
  175. $send_success = (int)$response;
  176. $sql1 = "CALL HT_ADD_MSG_COMMENT(2,'addmsg'," . $order_id . "," . $comment_type . ",'" . $comment_text . "','" . $tel . "','" . $content . "','" . date("Y-m-d H:i:s") . "',{$send_success})";
  177. $result1 = $send_pdo -> query($sql1);
  178. $rowset1 = $result1 -> fetchAll(PDO::FETCH_ASSOC);
  179. $result1 -> closeCursor();
  180. writeLog("hotel_order_status.php HT_ADD_MSG_COMMENT()::" . $sql1);
  181. //insert order extra
  182. $hotelPrice = isset($_GET['hotelPrice']) ? $_GET['hotelPrice'] : "";
  183. $doorPrice = isset($_GET["doorPrice"]) ? $_GET["doorPrice"] : "";
  184. if ($hotelPrice != "" || $doorPrice != "") {
  185. $sqlInsert = " INSERT INTO order_extra_info (order_id,hotel_price,gate_price) VALUE(" . $ORDER_ID . ",'" . $hotelPrice . "','" . $doorPrice . "') ";
  186. writeLog("insert extra info: " . $sqlInsert);
  187. $result = $send_pdo -> exec($sqlInsert);
  188. }
  189. }
  190. //..短信模板-改为17:30后OK,当天下单也OK
  191. function get_msg_info($ORDER_ID) {
  192. $msg_pdo = conn();
  193. $msg_sql = "CALL SP_GET_MESSAGE_TEMPLATE('" . $ORDER_ID . "')";
  194. $content = '';
  195. if (is_object($msg_pdo)) {
  196. $msg_result = $msg_pdo -> query($msg_sql);
  197. $i = 1;
  198. $data = array();
  199. if ($msg_result) {
  200. $data['code'] = "0";
  201. $data['info'] = "";
  202. do {
  203. $row = $msg_result -> fetchAll(PDO::FETCH_ASSOC);
  204. if ($i == 1) {
  205. $data['seat'] = isset($row) ? $row : array();
  206. } else if ($i == 2) {
  207. $data['run_info'] = isset($row) ? $row : array();
  208. } else if ($i == 3) {
  209. $data['driver'] = isset($row) ? $row : array();
  210. } else {
  211. }
  212. $i++;
  213. } while($msg_result->nextRowset());
  214. }
  215. $json_obj = json_decode(json_encode($data), TRUE);
  216. $seat = isset($json_obj['seat'][0]) ? $json_obj['seat'][0] : array();
  217. $run_info = isset($json_obj['run_info'][0]) ? $json_obj['run_info'][0] : array();
  218. $driver = isset($json_obj['driver'][0]) ? $json_obj['driver'][0] : array();
  219. //出票成功
  220. // $content = "您预订的{出发日期 出发时间}{出发地}-{目的地}{票种名}{张数}张,已购票成功。乘车订单号为{订单号},请凭订单号或绑定微信(微信服务号“蜘蛛出行”)扫码上车,车牌号{车牌号},司机电话{司机姓司机电话}。";
  221. // 得到明天的时间
  222. date_default_timezone_set('prc');
  223. //解决时区问题
  224. $tomorrow = date("Y-m-d", strtotime("+1 day"));
  225. $now_time = date('H:i:s', time());
  226. //判断当前时间是否在17:30:00之后
  227. $cur_date = date('Y-m-d', time());
  228. if (($now_time > "17:30:00" && $run_info['start_date'] == $tomorrow) || $cur_date == $run_info['start_date']) {//17:30之后的订单或者下单时间为今天出行为今天下午 发送短信模板
  229. // if("18:30:00">"17:30:00" && $run_info['start_date']==$tomorrow){ //17:30之后的订单 发送短信模板
  230. // $content = "您预订的{出发日期 出发时间}{出发地}-{目的地}{票种名}{张数}张,已购票成功。乘车订单号为{订单号},请凭订单号或绑定微信(微信服务号“蜘蛛出行”)扫码上车,车牌号{车牌号},司机电话{司机姓司机电话}。";
  231. $content = "您预订的{出发日期}{出发地}-{目的地}{票种名}{张数}张,已成功出票,请在{出发时间}前到达{上车站点}。您的乘车订单号为{订单号},车牌号{车牌号},司机电话{司机姓司机电话},请凭短信订单号乘车,预祝您旅途愉快。";
  232. } else {
  233. // $content = "您预订的{出发日期 出发时间}{出发地}-{目的地}{票种名}{张数}张,已购票成功。乘车订单号为{订单号},请凭订单号或绑定微信(微信服务号“蜘蛛出行”)扫码上车。";
  234. $content = "您预订的{出发日期}{出发地}-{目的地}{票种名}{张数}张,已成功出票,请在{出发时间}前到达{上车站点}。您的乘车订单号为{订单号},请凭短信订单号乘车。出行前一天下午的17:30会将车牌号与司机电话发送给您,预祝您旅途愉快。";
  235. }
  236. // $content = "您预订的{出发日期 出发时间}{出发地}-{目的地}{票种名}{张数}张,已购票成功。乘车订单号为{订单号},请凭订单号或绑定微信(微信服务号“蜘蛛出行”)扫码上车。";
  237. if ($seat) {
  238. $seat_x = isset($seat['seat_x']) ? $seat['seat_x'] : "";
  239. $seat_y = isset($seat['seat_y']) ? $seat['seat_y'] : "";
  240. $seat_name = isset($seat['seat_name']) ? $seat['seat_name'] : "";
  241. $order_main_id = isset($seat['order_main_id']) ? $seat['order_main_id'] : "";
  242. } else {
  243. }
  244. if ($run_info) {
  245. $order_count = $run_info['order_count'];
  246. $start_date = $run_info['start_date'];
  247. $start_time = $run_info['start_time'];
  248. $parent_order_id = $run_info['parent_order_id'];
  249. $end_date = $run_info['end_date'];
  250. $start_area = $run_info['start_area'];
  251. $end_area = $run_info['end_area'];
  252. $res_name = $run_info['res_name'];
  253. $prod_name = $run_info['prod_name'];
  254. $prod_name = "标准票";
  255. $customer_name = $run_info['customer_name'];
  256. $customer_mobile = $run_info['customer_mobile'];
  257. $start_end_date = $start_date . "," . $start_time;
  258. $content = str_replace("{出发日期}", $start_date, $content);
  259. $content = str_replace("{出发时间}", $start_time, $content);
  260. $content = str_replace("{上车站点}", $res_name, $content);
  261. $content = str_replace("{出发地}", $start_area, $content);
  262. $content = str_replace("{目的地}", $end_area, $content);
  263. $content = str_replace("{票种名}", $prod_name, $content);
  264. $content = str_replace("{张数}", $order_count, $content);
  265. $content = str_replace("{订单号}", $ORDER_ID, $content);
  266. } else {
  267. $content = str_replace("{出发日期}", "", $content);
  268. $content = str_replace("{出发时间}", "", $content);
  269. $content = str_replace("{出发地}", "", $content);
  270. $content = str_replace("{目的地}", "", $content);
  271. $content = str_replace("{票种名}", "", $content);
  272. $content = str_replace("{张数}", "", $content);
  273. $content = str_replace("{订单号}", "", $content);
  274. }
  275. if ($driver) {
  276. $bus_no = isset($driver['bus_no']) ? $driver['bus_no'] : "";
  277. $driver_name = isset($driver['driver_name']) ? $driver['driver_name'] : "";
  278. $driver_mobile = isset($driver['driver_mobile']) ? $driver['driver_mobile'] : "";
  279. if ($bus_no == "") {
  280. $content = str_replace(",车牌号{车牌号}", "", $content);
  281. } else {
  282. $content = str_replace("{车牌号}", $bus_no, $content);
  283. }
  284. if ($driver_name == "") {
  285. $content = str_replace(",司机电话{司机姓司机电话},", "。", $content);
  286. } else {
  287. $driver_xing = mb_substr($driver_name, 0, 1, 'utf-8');
  288. $driver_name_mobile = $driver_xing . $driver_mobile;
  289. $content = str_replace("{司机姓司机电话}", $driver_name_mobile, $content);
  290. }
  291. } else {
  292. $content = str_replace("车牌号{车牌号},", "", $content);
  293. $content = str_replace("司机电话{司机姓司机电话},", "", $content);
  294. }
  295. return array(isset($customer_name) ? $customer_name : "", isset($customer_mobile) ? $customer_mobile : "", isset($content) ? $content : "短信错误,联系客服!!!");
  296. }
  297. }