Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

groupOrder.class.php 68 KiB

3 anos atrás
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Steven
  5. * Date: 2016/10/17
  6. * Time: 18:50
  7. */
  8. /**
  9. * Class groupOrder 组合线路订单相关
  10. */
  11. class groupOrder extends base
  12. {
  13. /**zs
  14. * 获取组合线路录入订单基本数据
  15. * @param $param
  16. */
  17. public function getProductBase($param)
  18. {
  19. $valid = zzcsUtils::validateParams(array('line_id,run_date' => 'empty'), $param);
  20. if (!$valid['status']) {
  21. $result['code'] = (string)$valid['status'];
  22. $result['info'] = $valid['info'];
  23. return $result;
  24. }
  25. $line_id = isset($param['line_id']) ? trim($param['line_id']) : false;
  26. $run_date = isset($param['run_date']) ? trim($param['run_date']) : false;
  27. if (!$line_id || !$run_date) {
  28. $json['code'] = '2';
  29. $json['info'] = '缺少必要参数';
  30. return $json;
  31. }
  32. //1.获取线路名称
  33. $line_name = $this->getDetailName($line_id);
  34. //2.获取销售渠道
  35. $channel_list = $this->getChannelList($line_id);
  36. //3.获取开始站点信息
  37. $start_station = $this->getStartStation($line_id, $run_date);
  38. //这里判断如果没有数据,返回错误--温依莅
  39. if (!$start_station) {
  40. $json['code'] = '2';
  41. $json['info'] = '所选日期没有相关线路';
  42. return $json;
  43. }
  44. $json['code'] = '0';
  45. $json['info'] = '返回' . $line_id . '数据成果';
  46. $json['line_name'] = $line_name;
  47. $json['channel_list'] = $channel_list;
  48. $json['start_station'] = $start_station;
  49. return $json;
  50. }
  51. /**
  52. * 温依莅
  53. * 根据日期得到有班次的组合线路信息
  54. * @param $web_data
  55. * @return array
  56. * *成功返回参数
  57. * code(str)
  58. * info(str)
  59. * product_list(array):
  60. * line_id(int) 组合线路id
  61. * line_name(str) 组合线路名称
  62. */
  63. public function groupProductList($web_data)
  64. {
  65. if($web_data['run_date'] <= date('Y-m-d') && empty($web_data['line_id']) == false){//历史订单则线路可以进行规定
  66. //数据查询成功
  67. $json["code"] = '0';
  68. $json["info"] = '组合产品列表';
  69. $json["product_list"][] = array('line_id'=> $web_data['line_id'],'line_name'=> $web_data['line_name']);
  70. return $json;
  71. }
  72. //组合线路产品列表
  73. $run_date = isset($web_data["run_date"]) ? trim($web_data["run_date"]) : false;
  74. //判断参数是否缺少
  75. if (false === $run_date) {
  76. $json['code'] = '2';
  77. $json['info'] = '缺少必要参数';
  78. return $json;
  79. }
  80. //判断日期格式正确
  81. $tmp_arr = explode('-', $run_date);
  82. $bool = checkdate($tmp_arr[1], $tmp_arr[2], $tmp_arr[0]);//判断日期是否是合法日期
  83. if (!$bool) {
  84. $json['code'] = '3';
  85. $json['info'] = '日期格式不正确';
  86. return $json;
  87. }
  88. $current_page = 1;
  89. $page_size = 100;
  90. $product_type = 0;
  91. $line = null;
  92. $json = array();
  93. $sql = "call sp_choice_kicket_group ($this->user_id,$current_page,$page_size,'$line',$product_type,'$run_date')";
  94. zzcsUtils::writeLog($sql);
  95. $reset = $this->procQuery($sql);
  96. if ($reset === false) {
  97. $json["code"] = $reset['code'];
  98. $json["info"] = $reset['info'];
  99. return $json;
  100. } else {
  101. //数据查询成功
  102. $json["code"] = '0';
  103. $json["info"] = '组合产品列表';
  104. if (isset($reset['data'][1])) {
  105. $product_list = array();
  106. foreach ($reset['data'][1] as $k => $v) {
  107. $product_list[$k]['line_id'] = $v['line_id'];
  108. //$product_list[$k]['line_code']=$v['line_code'];
  109. $product_list[$k]['line_name'] = $v['line_name'];
  110. }
  111. $json["product_list"] = $product_list;
  112. } else {
  113. $json["product_list"] = array();
  114. }
  115. return $json;
  116. }
  117. }
  118. /**
  119. * Function Description:得到所有组合线路列表
  120. * Function Name: getGroupLine
  121. *
  122. * @return mixed
  123. *
  124. * @author 温依莅
  125. */
  126. public function getGroupLine()
  127. {
  128. $sql = "SELECT line_id,line_name FROM `opera_line` WHERE line_type=316 AND IS_ONSALE=1 AND CANCEL_FLAG=0 ORDER BY DISP_ORDER;";
  129. $line_info = $this->query($sql);
  130. if (!$line_info) {
  131. $json['code'] = '1';
  132. $json['info'] = '数据获取错误';
  133. return $json;
  134. }
  135. //若查询无信息
  136. if (count($line_info) == 0) {
  137. $json['code'] = '1';
  138. $json['info'] = '无符合条件的线路';
  139. //$json['list'] = array();
  140. return $json;
  141. }
  142. $json['code'] = '0';
  143. $json['info'] = '获取线路成功';
  144. $json['list'] = $line_info;
  145. return $json;
  146. }
  147. /**
  148. * Des:根据手机号和日期得到该手机号今日是否下过组合线路订单
  149. * Name: getPurchaseHistory
  150. * @param $param
  151. * @return mixed
  152. * @author 温依莅
  153. */
  154. public function getPurchaseHistory($param)
  155. {
  156. $valid = zzcsUtils::validateParams(array('tel' => 'tel'), $param); //参数验证
  157. if (!$valid['status']) {
  158. $result['code'] = (string)$valid['status'];
  159. $result['info'] = $valid['info'];
  160. return $result;
  161. }
  162. $phone = $param['tel'];
  163. $sql = "SELECT
  164. a.order_id,a.order_description
  165. FROM
  166. order_main a
  167. RIGHT JOIN
  168. opera_line b
  169. ON
  170. a.parent_prod_id = b.line_id
  171. WHERE
  172. b.line_type=316 AND b.cancel_flag=0 AND b.if_disabled=0 AND b.is_onsale=1 AND a.cancel_flag=0 AND a.customer_mobile='$phone' AND a.order_valid_status=1 AND a.order_status<>148 AND a.parent_order_id=0 AND date_format(now(),'%Y-%m-%d') = date_format(a.create_time,'%Y-%m-%d');";
  173. $history_info = $this->query($sql);
  174. if (!$history_info) {
  175. $json['code'] = '1';
  176. $json['info'] = '数据库错误';
  177. return $json;
  178. }
  179. //若查询无信息
  180. if (count($history_info) == 0) {
  181. $json['code'] = '1';
  182. $json['info'] = '无符合条件的订单';
  183. //$json['list'] = array();
  184. return $json;
  185. }
  186. $json['code'] = '0';
  187. $json['info'] = '今日已下过订单';
  188. //$json['list'] = $history_info;
  189. return $json;
  190. }
  191. /**zs
  192. * 获取组合线路票种信息
  193. * @param $param
  194. */
  195. public function getTicketType($param)
  196. {
  197. $line_id = isset($param['line_id']) ? $param['line_id'] : false;
  198. $channel_id = isset($param['channel_id']) ? trim($param['channel_id']) : false;//渠道商id;
  199. if (!$line_id || $channel_id === false) {
  200. $result['code'] = '2';
  201. $result['info'] = "缺少必要参数";
  202. return $result;
  203. }
  204. $sql = "SELECT
  205. ticket_id,
  206. seat_type,
  207. (SELECT type_name FROM dict_type WHERE id = seat_type) AS seat_type_name,
  208. human_type,
  209. (SELECT type_name FROM dict_type WHERE id = human_type) AS human_type_name,
  210. prod_price,
  211. cus_price
  212. FROM
  213. opera_tickets
  214. WHERE
  215. line_id = " . $line_id . "
  216. AND cancel_flag = 0";
  217. $ticket_info = $this->query($sql);
  218. if (count($ticket_info) == 0) {
  219. $json['code'] = '0';
  220. $json['info'] = '没有可售卖的票种';
  221. $json['list'] = array();
  222. }
  223. foreach ($ticket_info as $k => $v) {
  224. $sale_type = $this->getTicketChannelSaleType($channel_id, $v['ticket_id'], 316);//获取销售类型
  225. if ($sale_type)//如果该销售方式被关掉
  226. {
  227. if ($sale_type == "177") {
  228. $ticket_info[$k]['price'] = $v['prod_price'];
  229. } else {
  230. $ticket_info[$k]['price'] = $v['cus_price'];
  231. }
  232. } else {
  233. unset($ticket_info[$k]);
  234. }
  235. }
  236. $json['code'] = '0';
  237. $json['info'] = '返回票种信息成功';
  238. $json['list'] = array_merge($ticket_info);
  239. return $json;
  240. }
  241. /**
  242. * 添加组合线路的订单
  243. * @param $param
  244. */
  245. public function addOrder($param)
  246. {
  247. /* line_id:
  248. outside_sale_org_id:订单渠道
  249. outside_order_no:渠道订单号
  250. salesman:业务员
  251. start_date:出发日期
  252. start_station: 上车站点
  253. prod_list: 预定票种,格式为{票种ID,票种价格,预定数量}{票种ID,票种价格,预定数量}
  254. customer_info:联系人信息,格式为 {联系人,联系电话,备注}*/
  255. $valid = zzcsUtils::validateParams(
  256. array(
  257. 'line_id,org_id,start_date,seq_id,start_station,start_time,prod_list,customer_info,rec_list' => 'empty',
  258. 'receive_value' => 'amount'
  259. ), $param); //参数验证
  260. if (!$valid['status']) {
  261. $result['code'] = (string)$valid['status'];
  262. $result['info'] = $valid['info'];
  263. return $result;
  264. }
  265. $user_id = $this->user_id;
  266. $line_id = $param['line_id']; //线路编号
  267. $org_id = $param['org_id'];
  268. $order_no = isset($param['order_no']) ? $param['order_no'] : false;
  269. $salesman = isset($param['salesman']) ? $param['salesman'] : false;
  270. $start_date = $param['start_date'];
  271. $start_station = $param['start_station'];
  272. $prod_list = $param['prod_list'];
  273. $rec_list = $param['rec_list'];
  274. $receive_value = $param['receive_value'];
  275. $seq_id = $param['seq_id'];
  276. $start_time = $param['start_time'];
  277. $customer_info = $param['customer_info'];
  278. //customer_info中,手机和联系人只要有1个信息就可以
  279. $tmp = substr($customer_info, 1, -1);
  280. $tmpArray = explode(',', $tmp);
  281. //前台传过来的顺序不能变 1、联系人 2、手机号 3、备注 4、后期添加的新字段
  282. if (trim($tmpArray[0]) == '' && !zzcsUtils::validate(trim($tmpArray[1]), 'tel')) {
  283. $customer_info = false;
  284. }
  285. if (zzcsUtils::validate(trim($tmpArray[1]), 'tel')) {
  286. $phone = $tmpArray[1];//手机号码
  287. $sql = "select count(1) cnt from order_main WHERE PROD_START_STATION_DATE='{$start_date}' and CUSTOMER_MOBILE='{$phone}' and PARENT_PROD_ID = {$line_id};";
  288. $getCnt = $this->query($sql);
  289. if ($getCnt['0']['cnt'] >= 1) {
  290. $result['code'] = '2';
  291. $result['info'] = "同一手机号不可在一天内下多个同线路的订单!";
  292. return $result;
  293. }
  294. }
  295. $pay_type = 275;
  296. $time = date('Y-m-d H:i:s', time());
  297. if (!$user_id || false === $line_id || false === $org_id || false === $order_no || false === $salesman || false === $start_date || false === $start_station || false === $prod_list || false === $customer_info || false === $receive_value || false === $seq_id || false === $start_time) {
  298. $result['code'] = '2';
  299. $result['info'] = "缺少必要参数";
  300. return $result;
  301. }
  302. $sql = "call sp_make_order_group($user_id,$line_id,$org_id,'{$order_no}','{$salesman}','{$start_date}',$seq_id,$start_station,'{$start_time}','{$prod_list}','{$customer_info}',{$receive_value},{$pay_type})";
  303. zzcsUtils::writeLog($sql);
  304. $res = $this->procQuery($sql);
  305. if ($res['code'] != 0) { //存储过程执行出错
  306. $json["code"] = (string)$res['code'];
  307. $json["info"] = $res['info'];
  308. return $json;
  309. }
  310. //查询成功后,修改该主订单的子订单信息(receive_value值)
  311. $rec_arr = explode('|', trim($rec_list, '|'));
  312. $update_rec_sql = '';
  313. foreach ($rec_arr as $k => $v) {
  314. $arr = explode(',', $v);
  315. $update_rec_sql .= "UPDATE order_main SET RECEIVE_VALUE=$arr[1] WHERE parent_order_id = " . $res['data'][0][0]['order_id'] . " and prod_id=$arr[0];";
  316. }
  317. zzcsUtils::writeLog($update_rec_sql);
  318. $res2 = $this->exec($update_rec_sql);
  319. if (false === $res2) {
  320. $json['code'] = '1';
  321. $json['info'] = '更改子订单失败';
  322. return $json;
  323. }
  324. //数据查询成功
  325. $json["code"] = '0';
  326. $json["info"] = '组合线路下单成功';
  327. $json["order_id"] = $res['data'][0][0]['order_id'];
  328. $update_status_sql = "UPDATE order_main
  329. SET update_user_id = " . $user_id . ",
  330. update_time = '" . $time . "',
  331. order_status = 146
  332. WHERE
  333. order_id = " . $json["order_id"] . "
  334. OR parent_order_id = " . $json["order_id"];
  335. zzcsUtils::writeLog($update_status_sql);
  336. $res3 = $this->exec($update_status_sql);
  337. if (false === $res3) {
  338. $json['code'] = '1';
  339. $json['info'] = '更改订单状态失败';
  340. return $json;
  341. }
  342. //获取拓展信息
  343. $expandParams = array(
  344. 'terrace' => empty($param['terrace']) ? '' : $param['terrace'],//上平台-即渠道商的子渠道
  345. 'tavern_stay' => empty($param['tavern_stay']) ? '' : $param['tavern_stay'],//入住酒店
  346. 'add_line_price' => empty($param['add_line_price']) ? '' : $param['add_line_price']//加线金额
  347. );
  348. $this->addExpand($res['data'][0][0]['order_id'], $expandParams);//添加订单的拓展信息
  349. return $json;
  350. }
  351. /**
  352. * 根据订单ID获取订单基本数据
  353. * @param $param
  354. * @return mixed 订单修改需要返回 run_date, line_id
  355. *
  356. * User: 温依莅
  357. */
  358. public function getOrderInfo($param)
  359. {
  360. //验证order_id
  361. $valid = zzcsUtils::validateParams(array('order_id' => 'empty'), $param); //参数验证
  362. if (!$valid['status']) {
  363. $result['code'] = (string)$valid['status'];
  364. $result['info'] = $valid['info'];
  365. return $result;
  366. }
  367. $order_id = trim($param['order_id']);
  368. //根据order_id 获取订基本信息
  369. $sql = "SELECT
  370. a.order_id,b.LINE_ID,
  371. b.line_name,
  372. a.PROD_START_STATION_DATE,
  373. IFNULL((SELECT terrace from order_expand_xm where order_id='$order_id'),0.00) as 'terrace',
  374. IFNULL((SELECT tavern_stay from order_expand_xm where order_id='$order_id'),0.00) as 'tavern_stay',
  375. IFNULL((SELECT add_line_price from order_expand_xm where order_id='$order_id'),0.00) as 'add_line_price',
  376. a.PROD_START_STATION_RES_ID,a.PROD_START_STATION_RES_NAME,
  377. c.SUPPLIER_NAME,c.ID SUPPLIER_ID,
  378. (select GROUP_CONCAT(tmp.rec SEPARATOR '|') from(SELECT *,CONCAT_WS(',',PROD_ID,RECEIVE_VALUE) as rec FROM `order_main` where PARENT_ORDER_ID=$order_id group by prod_id) as tmp) as rec_desc,
  379. a.OUTSIDE_ORDER_NO,
  380. a.ORDER_DESCRIPTION,
  381. a.RECEIVE_VALUE,a.customer_name,a.customer_mobile,a.customer_memo,a.sales_man
  382. FROM
  383. order_main a
  384. LEFT JOIN opera_line b ON a.PARENT_PROD_ID = b.LINE_ID
  385. LEFT JOIN base_supplier c on a.OUTSIDE_SALE_ORG_ID=c.ID
  386. WHERE a.ORDER_ID=$order_id and a.CANCEL_FLAG=0 and b.line_type=316 and b.cancel_flag=0 and a.order_status<>148 limit 1";
  387. $res_list = $this->query($sql);
  388. if (!$res_list) {
  389. $json['code'] = '2';
  390. $json['info'] = '数据库错误';
  391. return $json;
  392. }
  393. if (count($res_list) == 0) {
  394. $json['code'] = '2';
  395. $json['info'] = '无有效订单数据';
  396. return $json;
  397. }
  398. //得到tickets信息
  399. $temp_str = $res_list[0]['ORDER_DESCRIPTION'];
  400. $rec_str = $res_list[0]['rec_desc'];//代收单价信息
  401. $temp_arr = explode('|', $temp_str, -1);
  402. $rec_arr = explode('|', $rec_str);
  403. $ticket_list = array();
  404. foreach ($temp_arr as $k => $v) {
  405. $arr = explode(',', $v);
  406. $ticket_list[$k]['ticket_id'] = $arr[0];
  407. $ticket_list[$k]['num'] = end($arr);
  408. //插入票种代收单价
  409. foreach ($rec_arr as $k1 => $v1) {
  410. $arr2 = explode(',', $v1);
  411. if ($arr2[0] == $arr[0]) {
  412. $ticket_list[$k]['sin_price'] = end($arr2);
  413. }
  414. }
  415. }
  416. $json['code'] = '0';
  417. $json['info'] = '根据订单号返回订单信息';
  418. $json['list'] = $res_list;
  419. $json['list'][0]['ticket_info'] = $ticket_list;
  420. return $json;
  421. }
  422. /**
  423. * 组合订单的修改功能
  424. * @param $param
  425. * @return mixed
  426. *
  427. * User: Steven
  428. */
  429. public function updateGroupOrder($param)
  430. {
  431. $valid = zzcsUtils::validateParams(
  432. array(
  433. 'line_id,org_id,start_date,seq_id,start_station,start_time,prod_list,customer_info,rec_list' => 'empty',
  434. 'receive_value' => 'amount'
  435. ), $param); //参数验证
  436. if (!$valid['status']) {
  437. $result['code'] = (string)$valid['status'];
  438. $result['info'] = $valid['info'];
  439. return $result;
  440. }
  441. $user_id = $this->user_id;
  442. $line_id = $param['line_id']; //线路编号
  443. $org_id = $param['org_id'];
  444. $order_no = isset($param['order_no']) ? $param['order_no'] : false;
  445. $salesman = isset($param['salesman']) ? $param['salesman'] : false;
  446. $start_date = $param['start_date'];
  447. $start_station = $param['start_station'];
  448. $prod_list = $param['prod_list'];
  449. $rec_list = $param['rec_list'];
  450. $receive_value = $param['receive_value'];
  451. $seq_id = $param['seq_id'];
  452. $start_time = $param['start_time'];
  453. $customer_info = $param['customer_info'];
  454. //customer_info中,手机和联系人只要有1个信息就可以
  455. $tmp = substr($customer_info, 1, -1);
  456. $tmpArray = explode(',', $tmp);
  457. //前台传过来的顺序不能变 1、联系人 2、手机号 3、备注 4、后期添加的新字段
  458. if (trim($tmpArray[0]) == ''&& trim($tmpArray[1]) == '') {
  459. $customer_info = false;
  460. }
  461. if (zzcsUtils::validate(trim($tmpArray[1]), 'tel')) {
  462. $phone = $tmpArray[1];//手机号码
  463. $sql = "
  464. select count(1) cnt
  465. from order_main a
  466. WHERE a.PROD_START_STATION_DATE='{$start_date}'
  467. and a.CUSTOMER_MOBILE='{$phone}'
  468. and a.PARENT_PROD_ID = {$line_id}
  469. AND a.CUSTOMER_MOBILE != (
  470. select CUSTOMER_MOBILE from order_main WHERE ORDER_ID = {$param['order_id']}
  471. );";
  472. $getCnt = $this->query($sql);
  473. if ($getCnt['0']['cnt'] >= 1) {
  474. $result['code'] = '2';
  475. $result['info'] = "同一手机号不可在一天内下多个同线路的订单!";
  476. return $result;
  477. }
  478. }
  479. $pay_type = 275;
  480. $order_id = $param['order_id']; //要修改的订单号码
  481. //取消当前订单
  482. $sql_cancel = "call sp_cancel_order(" . $user_id . "," . $order_id . ")";
  483. zzcsUtils::writeLog($sql_cancel);
  484. $res_cancel = $this->procQuery($sql_cancel);
  485. if ($res_cancel['code'] != 0) { //存储过程执行出错
  486. $result["code"] = (string)$res_cancel['code'];
  487. $result["info"] = $res_cancel['info'];
  488. return $result;
  489. }
  490. //将该订单的cancel_flag置为1,以区分是修改订单还是取消订单
  491. $sql = "update order_main set update_user_id=$user_id,update_time=now(),cancel_flag=1 where order_id={$order_id} or parent_order_id={$order_id}";
  492. $this->query($sql);
  493. $sql_update = "call sp_make_order_group($user_id,$line_id,$org_id,'{$order_no}','{$salesman}','{$start_date}',$seq_id,$start_station,'{$start_time}','{$prod_list}','{$customer_info}',{$receive_value},{$pay_type})";
  494. zzcsUtils::writeLog($sql_update);
  495. $res_update = $this->procQuery($sql_update);
  496. if ($res_update['code'] != 0) { //存储过程执行出错
  497. $result["code"] = (string)$res_update['code'];
  498. $result["info"] = $res_update['info'];
  499. return $result;
  500. }
  501. //查询成功后,修改该主订单的子订单信息(receive_value值)
  502. $rec_arr = explode('|', trim($rec_list, '|'));
  503. $update_rec_sql = '';
  504. foreach ($rec_arr as $k => $v) {
  505. $arr = explode(',', $v);
  506. $update_rec_sql .= "UPDATE order_main SET RECEIVE_VALUE=$arr[1] WHERE parent_order_id = " . $res_update['data'][0][0]['order_id'] . " and prod_id=$arr[0];";
  507. }
  508. zzcsUtils::writeLog($update_rec_sql);
  509. $res = $this->exec($update_rec_sql);
  510. if (false === $res) {
  511. $json['code'] = '1';
  512. $json['info'] = '更改子订单失败';
  513. return $json;
  514. }
  515. $time = date('Y-m-d H:i:s', time());
  516. //修改订单状态为146(已支付)
  517. $update_status_sql = "UPDATE order_main
  518. SET update_user_id = " . $user_id . ",
  519. update_time = '" . $time . "',
  520. order_status = 146
  521. WHERE
  522. order_id = " . $res_update['data'][0][0]['order_id'] . "
  523. OR parent_order_id = " . $res_update['data'][0][0]['order_id'];
  524. zzcsUtils::writeLog($update_status_sql);
  525. $res3 = $this->exec($update_status_sql);
  526. if (false === $res3) {
  527. $json['code'] = '1';
  528. $json['info'] = '更改订单状态失败';
  529. return $json;
  530. }
  531. //获取拓展信息
  532. $expandParams = array(
  533. 'terrace' => empty($param['terrace']) ? '' : $param['terrace'],//上平台-即渠道商的子渠道
  534. 'tavern_stay' => empty($param['tavern_stay']) ? '' : $param['tavern_stay'],//入住酒店
  535. 'add_line_price' => empty($param['add_line_price']) ? '' : $param['add_line_price']//加线金额
  536. );
  537. $this->setOrderExpand($res_update['data'][0][0]['order_id'], $expandParams);//设置订单的拓展信息
  538. $result["code"] = '0';
  539. $result["info"] = '修改成功';
  540. return $result;
  541. }
  542. //设置订单拓展信息
  543. public function setOrderExpand($order_id, $expandParams)
  544. {
  545. $sql = '' . "SELECT order_id, terrace, tavern_stay, add_line_price from order_expand_xm WHERE order_id = {$order_id}";
  546. $getExpand = $this->query($sql);//获取特殊标记订单信息
  547. if (isset($getExpand[0]['order_id'])) {
  548. $this->editExpand($order_id, $expandParams);//如果存在则修改
  549. } else {
  550. $this->addExpand($order_id, $expandParams);//如果不存在则添加
  551. }
  552. }
  553. //添加拓展信息
  554. protected function addExpand($order_id, $params)
  555. {
  556. $sql = '' . "REPLACE INTO `order_expand_xm` ( `order_id`,`terrace`,`tavern_stay`,`add_line_price`)
  557. VALUES ('{$order_id}', '{$params['terrace']}', '{$params['tavern_stay']}', '{$params['add_line_price']}');";
  558. $this->insert($sql);
  559. }
  560. //修改拓展信息
  561. protected function editExpand($order_id, $params)
  562. {
  563. $sql = '' . "UPDATE order_expand_xm
  564. set terrace='{$params['terrace']}' , tavern_stay='{$params['tavern_stay']}',add_line_price='{$params['add_line_price']}'
  565. where order_id = {{$order_id}};";
  566. $this->edit($sql);
  567. }
  568. /**获取组合线路出发站点
  569. * Des:
  570. * Name: getStartStation
  571. * @param $line_id
  572. * @param $run_date
  573. * @return array|bool
  574. */
  575. private function getStartStation($line_id, $run_date)
  576. {
  577. $sql = "SELECT a.seq_id,c.zone_mark,c.res_id,c.res_name,s.start_time
  578. FROM opera_line_group a,run_main m, run_station s,base_resource c
  579. WHERE a.line_id = " . $line_id . " AND a.day_num = 1 AND a.start_res_id = 0
  580. AND a.sub_line_id = m.prod_id AND a.start_minutes = m.run_minutes AND m.run_date = '" . $run_date . "'
  581. AND m.run_id = s.run_id
  582. AND s.station_res_id = c.res_id AND s.station_inout_type IN (108,109)
  583. UNION ALL
  584. SELECT a.seq_id,c.zone_mark,c.res_id,c.res_name,s.start_time
  585. FROM opera_line_group a,run_main m, run_station s,base_resource c
  586. WHERE a.line_id = " . $line_id . " AND a.day_num = 1 AND a.start_res_id > 0
  587. AND a.sub_line_id = m.prod_id AND a.start_minutes = m.run_minutes AND m.run_date = '" . $run_date . "'
  588. AND m.run_id = s.run_id AND a.start_order_id <= s.station_order_id
  589. AND s.station_res_id = c.res_id AND s.station_inout_type IN (108,109)";
  590. $res_list = $this->query($sql);
  591. //这里加一步判断,如果所传日期没有信息,返回false--温依莅
  592. if (count($res_list) == 0) {
  593. return false;
  594. }
  595. $res_list_zone = array();
  596. $res_array = array();
  597. foreach ($res_list as $k => $v) {
  598. if ($v['zone_mark'] == '1') {
  599. $res_array[$v['res_id']] = $v['res_id'];
  600. $res_list_zone[$v['res_id']] = $v;
  601. unset($res_list[$k]);
  602. }
  603. }
  604. foreach ($res_list as $k => $v) {
  605. $res_list1[$v['res_id']] = $v;
  606. }
  607. $res_sql = "SELECT res_id,res_name,parent_id FROM base_resource WHERE cancel_flag = 0 AND parent_id IN (" . implode(',', $res_array) . ") AND zone_mark = 0 AND res_type_id = 24";
  608. $res_array_list1 = $this->query($res_sql);
  609. $res_array_list = array();
  610. foreach ($res_array_list1 as $k => $v) {
  611. $res_array_list[$v['res_id']]['res_id'] = $v['res_id'];
  612. $res_array_list[$v['res_id']]['res_name'] = $v['res_name'];
  613. $res_array_list[$v['res_id']]['seq_id'] = $res_list_zone[$v['parent_id']]['seq_id'];
  614. $res_array_list[$v['res_id']]['start_time'] = $res_list_zone[$v['parent_id']]['start_time'];
  615. $res_array_list[$v['res_id']]['zone_mark'] = $res_list_zone[$v['parent_id']]['zone_mark'];
  616. }
  617. $res_list1 = array();
  618. foreach ($res_array_list as $k => $v) {
  619. $res_list1[$k] = $v;
  620. }
  621. $res_list = array_merge($res_list1);
  622. //这里做一个重排如果包含厦门酒店未知则把其设置为第一个元素
  623. foreach ($res_list as $k3 => $v3) {
  624. if ($v3['res_id'] == 11964) {
  625. unset($res_list[$k3]);
  626. array_unshift($res_list, $v3);
  627. }
  628. }
  629. return $res_list;
  630. }
  631. /**
  632. * Des:获取组合线路订单渠道商列表
  633. * Name: getChannelList
  634. * @param $line_id
  635. * @return array
  636. */
  637. private function getChannelList($line_id)
  638. {
  639. $sql = "SELECT
  640. a.supplier_id,b.supplier_name,b.sales_man
  641. FROM
  642. base_supplier_sale AS a
  643. INNER JOIN base_supplier AS b ON a.supplier_id = b.id
  644. WHERE
  645. a.parent_type = 310
  646. AND a.product_type IN (316, 0)
  647. AND a.cancel_flag = 0
  648. AND b.cancel_flag = 0
  649. AND b.is_disabled = 0
  650. AND a.supplier_id NOT IN
  651. (
  652. SELECT
  653. supplier_id
  654. FROM
  655. (
  656. SELECT
  657. supplier_id,count(ticket_id) AS cn
  658. FROM
  659. opera_tickets_distrib
  660. WHERE
  661. cancel_flag = 0
  662. AND authority_status = 0
  663. AND ticket_id IN (SELECT ticket_id FROM opera_tickets WHERE line_id = " . $line_id . " AND cancel_flag = 0)
  664. GROUP BY
  665. supplier_id
  666. ) AS dt
  667. WHERE
  668. cn = (SELECT count(ticket_id) FROM opera_tickets WHERE line_id = " . $line_id . " AND cancel_flag = 0)
  669. )
  670. GROUP BY
  671. a.supplier_id";
  672. $channel_list = $this->query($sql);
  673. return $channel_list;
  674. }
  675. /**
  676. * Des:获取组合线路名字
  677. * Name: getDetailName
  678. * @param $line_id
  679. * @return array
  680. */
  681. private function getDetailName($line_id)
  682. {
  683. $sql = "SELECT line_name FROM opera_line WHERE line_id = " . $line_id . " AND cancel_flag = 0";
  684. $line_name = $this->query($sql);
  685. $line_name = $line_name[0]['line_name'];
  686. return $line_name;
  687. }
  688. /**
  689. * Des:获取渠道的票种销售方式
  690. * Name: getTicketChannelSaleType
  691. * @param $channel_id
  692. * @param $ticket_id
  693. * @param $line_type
  694. * @return array|bool
  695. */
  696. public function getTicketChannelSaleType($channel_id, $ticket_id, $line_type)
  697. {
  698. $sql = "SELECT
  699. sale_type
  700. FROM
  701. base_supplier_sale AS a
  702. WHERE
  703. NOT EXISTS
  704. (
  705. SELECT
  706. supplier_id
  707. FROM
  708. opera_tickets_distrib
  709. WHERE
  710. supplier_id = a.supplier_id
  711. AND ticket_id = " . $ticket_id . "
  712. AND cancel_flag = 0
  713. )
  714. AND supplier_id = " . $channel_id . "
  715. AND parent_type = 310
  716. AND product_type IN (" . $line_type . ", 0)
  717. AND cancel_flag = 0
  718. UNION ALL
  719. SELECT
  720. sale_type
  721. FROM
  722. opera_tickets_distrib
  723. WHERE
  724. supplier_id = " . $channel_id . "
  725. AND ticket_id = " . $ticket_id . "
  726. AND authority_status = 1
  727. AND cancel_flag = 0";
  728. $sale_type = $this->query($sql);
  729. if (count($sale_type) == 0) {
  730. return false;
  731. }
  732. $sale_type = $sale_type[0]['sale_type'];
  733. return $sale_type;
  734. }
  735. /**
  736. * 组合产品订单列表
  737. * @param $web_data
  738. * @return mixed
  739. */
  740. function groupOrderList($web_data)
  741. {
  742. //组合产品订单列表
  743. //hyk
  744. $time_limit = isset($web_data["time_limit"]) ? trim($web_data["time_limit"]) : false;
  745. $start_time = isset($web_data["start_time"]) ? trim($web_data["start_time"]) : false;
  746. $end_time = isset($web_data["end_time"]) ? trim($web_data["end_time"]) : false;
  747. $order_source = isset($web_data["order_source"]) ? trim($web_data["order_source"]) : false;
  748. $order_status = isset($web_data["order_status"]) ? trim($web_data["order_status"]) : false;
  749. $current_page = isset($web_data["current_page"]) ? trim($web_data["current_page"]) : false;
  750. $page_size = isset($web_data["page_size"]) ? trim($web_data["page_size"]) : false;
  751. $product_line = isset($web_data["product_line"]) ? trim($web_data["product_line"]) : false;
  752. $biller = isset($web_data["biller"]) ? trim($web_data["biller"]) : false;//添加计调员id
  753. $create_user_id = $biller;
  754. $line = isset($web_data["line"]) ? trim($web_data["line"]) : false;
  755. $more_search = isset($web_data["more_search"]) ? trim($web_data["more_search"]) : false;
  756. $search_type = isset($web_data["search_type"]) ? trim($web_data["search_type"]) : false;
  757. if ($time_limit === false || $start_time === false || $end_time === false || $order_source === false || $order_status === false || $current_page === false || $page_size === false || $product_line === false || $search_type === false || $line === false || $more_search === false || $biller === false) {
  758. //参数不完整;
  759. $json["code"] = '2';
  760. $json["info"] = "缺少必要参数";
  761. return $json;
  762. }
  763. $sql = "CALL xm_order_get_list_xm(" . $this->user_id . "," . $create_user_id . "," . $time_limit . ",'" .
  764. $start_time . "','" . $end_time . "'," . $order_source . "," . $order_status . ",'"
  765. . $more_search . "'," . $current_page . "," . $page_size . ",'" . $line . "','',''," . $search_type . "," . $product_line . ")";
  766. zzcsUtils::writeLog($sql);
  767. $res = $this->procQuery($sql);
  768. if ($res['code'] != 0) {
  769. //执行存储过程出错
  770. $json["code"] = $res['code'];
  771. $json["info"] = $res['info'];
  772. return $json;
  773. } else {
  774. $json["code"] = "0";
  775. $json["info"] = "订单列表";
  776. $json["page"]["total_count"] = $res["data"][0][0]["num"];
  777. $json["page"]["page_count"] = $res["data"][0][0]["pagecount"];
  778. $json["page"]["curr_page"] = $res["data"][0][0]["currpage"];
  779. $json["page"]["page_size"] = $res["data"][0][0]["pagesize"];
  780. $json["order_list"] = $res["data"][1];
  781. $label_data = array();
  782. if (empty($res["data"][2])) {
  783. // $json["label"]["pay"]=$res["data"][2];
  784. $label_data["pay"] = 0;
  785. $label_data["out"] = 0;
  786. $label_data["end"] = 0;
  787. $label_data["cancle"] = 0;
  788. $label_data["all"] = 0;
  789. } else {
  790. $label_data["pay"] = 0;
  791. $label_data["out"] = 0;
  792. $label_data["end"] = 0;
  793. $label_data["cancle"] = 0;
  794. $label_data["all"] = 0;
  795. $ttt = 0;
  796. foreach ($res["data"][2] as $temp) {
  797. $ttt = $ttt + $temp["order_cnt"];
  798. switch ($temp["order_status"]) {
  799. case 145:
  800. $label_data["pay"] = $temp["order_cnt"];
  801. break;
  802. case 146:
  803. $label_data["out"] = $temp["order_cnt"];
  804. break;
  805. case 147:
  806. $label_data["end"] = $temp["order_cnt"];
  807. break;
  808. case 148:
  809. $label_data["cancle"] = $temp["order_cnt"];
  810. break;
  811. }
  812. }
  813. $label_data["all"] = $ttt;
  814. }
  815. $json["label"] = $label_data;
  816. return $json;
  817. }
  818. }
  819. /**
  820. * Des:将符合筛选条件的订单导出为Excel文件(.xls)
  821. * Name: exportOrder
  822. * @param $web_data
  823. * @return mixed
  824. * @author 温依莅
  825. */
  826. public function exportOrder($web_data)
  827. {
  828. //得到导出信息
  829. //单产品订单列表
  830. //hyk
  831. $time_limit = isset($web_data['time_limit']) ? trim($web_data['time_limit']) : false;
  832. $start_time = isset($web_data["start_time"]) ? trim($web_data["start_time"]) : false;
  833. $end_time = isset($web_data["end_time"]) ? trim($web_data["end_time"]) : false;
  834. $order_source = isset($web_data["order_source"]) ? trim($web_data["order_source"]) : false;
  835. $order_status = isset($web_data["order_status"]) ? trim($web_data["order_status"]) : false;
  836. $current_page = isset($web_data["current_page"]) ? trim($web_data["current_page"]) : false;
  837. $page_size = isset($web_data["page_size"]) ? trim($web_data["page_size"]) : false;
  838. $product_line = isset($web_data["product_line"]) ? trim($web_data["product_line"]) : false;
  839. $biller = isset($web_data["biller"]) ? trim($web_data["biller"]) : false;//添加计调员id
  840. $create_user_id = $biller;
  841. $user_id = $this->user_id;
  842. $line = isset($web_data["line"]) ? trim($web_data["line"]) : false;
  843. $more_search = isset($web_data["more_search"]) ? trim($web_data["more_search"]) : false;
  844. $search_type = isset($web_data["search_type"]) ? trim($web_data["search_type"]) : false;
  845. if ($time_limit === false || $start_time === false || $end_time === false || $order_source === false || $order_status === false || $current_page === false || $page_size === false || $product_line === false || $search_type === false || $line === false || $more_search === false || $biller === false) {
  846. //参数不完整;
  847. $json["code"] = '2';
  848. $json["info"] = "缺少必要参数";
  849. return $json;
  850. }
  851. $sql = "CALL xm_order_get_list_xm(" . $user_id . "," . $create_user_id . "," . $time_limit . ",'" .
  852. $start_time . "','" . $end_time . "'," . $order_source . "," . $order_status . ",'"
  853. . $more_search . "'," . $current_page . "," . $page_size . ",'" . $line . "','',''," . $search_type . "," . $product_line . ")";
  854. //zzcsUtils::writeLog($sql);
  855. $res = $this->procQuery($sql);
  856. if ($res['code'] != 0) {
  857. //执行存储过程出错
  858. $json["code"] = $res['code'];
  859. $json["info"] = $res['info'];
  860. return $json;
  861. }
  862. //如果无订单信息,不导出,返回提示信息
  863. $list_ori = $res['data'][1];
  864. if (count($list_ori) == 0) {
  865. $json["code"] = '3';
  866. $json["info"] = '无订单信息';
  867. return $json;
  868. }
  869. //----excel导出信息
  870. require_once ROOT_PATH . '/ZZCS/Common/PHPExcel.php';
  871. //error_reporting(E_ALL);
  872. date_default_timezone_set('Asia/Shanghai');
  873. $objPHPExcel = new PHPExcel();
  874. $order_main_id_array = array();
  875. //处理存储过程返回的数据,得到前端页面数据
  876. foreach ($list_ori as $k => $v) {
  877. $order_main_id_array[] = $v['M_ID'];
  878. //预订产品信息
  879. $list_ori[$k]['line'] = $v['line'];
  880. $list_ori[$k]['start_station'] = $v['start_station'];
  881. $list_ori[$k]['end_station'] = $v['end_station'];
  882. $list_ori[$k]['children_num'] = 0;
  883. $list_ori[$k]['adults_num'] = 0;
  884. if (!$v['order_description']) {
  885. $seat_array_tmp = explode("×", $v['seat']);
  886. $passenger_num_all = $seat_array_tmp[1];
  887. $list_ori[$k]['adults_num'] = $passenger_num_all;
  888. $list_ori[$k]['real_passager_num'] = $v['real_passager_num'] == -1 ? $passenger_num_all : $v['real_passager_num'];
  889. $list_ori[$k]['book'] = $v['line'] . '|' . ($v['real_passager_num'] == -1 ? $v['seat'] : $v['seat'] . '(实际人数:' . $v['real_passager_num'] . ')') . '|' . $v['start_station'] . '--' . $v['end_station'];
  890. } else {
  891. $temp_str = $v['order_description'];
  892. $temp_arr = explode('|', $temp_str, -1);
  893. $ticket_detail = '';
  894. $passenger_num_all = 0;
  895. foreach ($temp_arr as $k1 => $v1) {
  896. $arr = explode(',', $v1);
  897. $len = count($arr);
  898. $ticket_detail .= $arr[$len - 2] . '×' . end($arr) . ' ';
  899. $passenger_num_all += end($arr);
  900. if ($arr[$len - 2] == "儿童") {
  901. $list_ori[$k]['children_num'] += end($arr);
  902. } else {
  903. $list_ori[$k]['adults_num'] += end($arr);
  904. }
  905. }
  906. $list_ori[$k]['real_passager_num'] = $v['real_passager_num'] == -1 ? $passenger_num_all : $v['real_passager_num'];
  907. $list_ori[$k]['book'] = $v['line'] . '|' . ($v['real_passager_num'] == -1 ? $ticket_detail : $ticket_detail . '(实际人数:' . $v['real_passager_num'] . ')') . '|' . $v['start_station'] . '--' . $v['end_station'];
  908. }
  909. //订单状态
  910. if ($v['order_status'] == '145') {
  911. $state_str = '待支付';
  912. } else if ($v['order_status'] == '146') {
  913. $state_str = '已出票';
  914. } else if ($v['order_status'] == '147') {
  915. $state_str = '已完成';
  916. } else {
  917. $state_str = '已取消';
  918. }
  919. $list_ori[$k]['state_str'] = $state_str;
  920. }
  921. $sql = " SELECT o.parent_order_id, o.run_id,o.run_bus_order_id,r.send_bus_no,r.send_driver_name,r.send_driver_mobile,r.send_tour_guide_name,r.send_tour_guide_mobile " .
  922. " FROM order_main as o left join run_bus as r ON r.run_id=o.run_id AND r.bus_order_id=o.run_bus_order_id " .
  923. " WHERE o.parent_order_id IN(" . implode(",", $order_main_id_array) . ") " .
  924. " ORDER BY o.parent_order_id,o.run_date,o.run_time ";
  925. $sql_result = $this->query($sql);
  926. $order_bus_array = array();
  927. $order_bus_run_id = array();
  928. foreach ($sql_result as $sql_info) {
  929. $order_id = $sql_info["parent_order_id"];
  930. if (!isset($order_bus_array[$order_id])) {
  931. $order_bus_array[$order_id] = array();
  932. $order_bus_run_id[$order_id] = array();
  933. }
  934. if (in_array($sql_info["run_id"], $order_bus_run_id[$order_id])) {
  935. continue;
  936. }
  937. $order_bus_run_id[$order_id][] = $sql_info["run_id"];
  938. if ($sql_info["run_bus_order_id"] > 0) {
  939. $order_bus_array[$order_id][] = $sql_info;
  940. } else {
  941. $order_bus_array[$order_id][] = array("send_bus_no" => "", "send_driver_name" => "", "send_driver_mobile" => "", "send_tour_guide_name" => "", "send_tour_guide_mobile" => "");
  942. }
  943. }
  944. /*以下是一些设置 ,作者 ,标题之类*/
  945. $objPHPExcel->getProperties()->setCreator("出行")
  946. ->setLastModifiedBy("出行")
  947. ->setTitle("数据EXCEL导出")
  948. ->setSubject("数据EXCEL导出")
  949. ->setDescription("备份数据")
  950. ->setKeywords("excel")
  951. ->setCategory("result file");
  952. /*以下就是对处理Excel里的数据, 横着取数据*/
  953. //$data=array(array('uid'=>'1','email'=>'ceshi@163.com','password'=>'111111'),array('uid'=>'2','email'=>'uuu@126.com','password'=>'6666'));//测试数据
  954. $objPHPExcel->setActiveSheetIndex(0)
  955. //Excel的第A列,uid是你查出数组的键值,下面以此类推
  956. ->setCellValue('A1', '订单编号')
  957. ->setCellValue('B1', '下单时间')
  958. ->setCellValue('C1', '下单人账号')
  959. ->setCellValue('D1', '下单人姓名')
  960. ->setCellValue('E1', '订单渠道')
  961. ->setCellValue('F1', '渠道订单号')
  962. ->setCellValue('G1', '业务员')
  963. ->setCellValue('H1', '预订产品')
  964. ->setCellValue('I1', '成人数')
  965. ->setCellValue('J1', '儿童数')
  966. ->setCellValue('K1', '上车总人数')
  967. ->setCellValue('L1', '出发日期')
  968. ->setCellValue('M1', '出发时间')
  969. ->setCellValue('N1', '上车地点')
  970. ->setCellValue('O1', '下车地点')
  971. ->setCellValue('P1', '接驳车号')
  972. ->setCellValue('Q1', '接驳司机')
  973. ->setCellValue('R1', '接驳司机手机')
  974. ->setCellValue('S1', '接驳导游')
  975. ->setCellValue('T1', '接驳导游手机')
  976. ->setCellValue('U1', '联系人')
  977. ->setCellValue('V1', '联系电话')
  978. ->setCellValue('W1', '金额')
  979. ->setCellValue('X1', '代收金额')
  980. ->setCellValue('Y1', '状态')
  981. ->setCellValue('Z1', '订单备忘')
  982. ->setCellValue('AA1', '出团车号')
  983. ->setCellValue('AB1', '出团司机')
  984. ->setCellValue('AC1', '出团司机手机')
  985. ->setCellValue('AD1', '出团导游')
  986. ->setCellValue('AE1', '出团导游手机')
  987. ->setCellValue('AF1', '第二日出团车号')
  988. ->setCellValue('AG1', '第二日出团司机')
  989. ->setCellValue('AH1', '第二日出团司机手机')
  990. ->setCellValue('AI1', '第二日出团导游')
  991. ->setCellValue('AJ1', '第二日出团导游手机');
  992. foreach ($list_ori as $k => $v) {
  993. $send_bus_array = $order_bus_array[$v['M_ID']];
  994. $num = $k + 2;
  995. //$objPHPExcel->getActiveSheet(0)->getStyle('F'.$num)->getAlignment()->setWrapText(true);
  996. //$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(50);
  997. $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setAutoSize(true);
  998. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
  999. $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setAutoSize(true);
  1000. $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setAutoSize(true);
  1001. $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setAutoSize(true);
  1002. $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setAutoSize(true);
  1003. $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setAutoSize(true);
  1004. $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setAutoSize(true);
  1005. $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setAutoSize(true);
  1006. $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setAutoSize(true);
  1007. $objPHPExcel->getActiveSheet()->getColumnDimension('K')->setAutoSize(true);
  1008. $objPHPExcel->getActiveSheet()->getColumnDimension('L')->setAutoSize(true);
  1009. $objPHPExcel->getActiveSheet()->getColumnDimension('M')->setAutoSize(true);
  1010. $objPHPExcel->getActiveSheet()->getColumnDimension('N')->setAutoSize(true);
  1011. $objPHPExcel->getActiveSheet()->getColumnDimension('O')->setAutoSize(true);
  1012. $objPHPExcel->getActiveSheet()->getColumnDimension('P')->setAutoSize(true);
  1013. $objPHPExcel->getActiveSheet()->getColumnDimension('Q')->setAutoSize(true);
  1014. $objPHPExcel->getActiveSheet()->getColumnDimension('R')->setAutoSize(true);
  1015. $objPHPExcel->getActiveSheet()->getColumnDimension('S')->setAutoSize(true);
  1016. $objPHPExcel->getActiveSheet()->getColumnDimension('T')->setAutoSize(true);
  1017. $objPHPExcel->getActiveSheet()->getColumnDimension('U')->setAutoSize(true);
  1018. $objPHPExcel->getActiveSheet()->getColumnDimension('V')->setAutoSize(true);
  1019. $objPHPExcel->getActiveSheet()->getColumnDimension('W')->setAutoSize(true);
  1020. $objPHPExcel->getActiveSheet()->getColumnDimension('X')->setAutoSize(true);
  1021. $objPHPExcel->getActiveSheet()->getColumnDimension('Y')->setAutoSize(true);
  1022. $objPHPExcel->getActiveSheet()->getColumnDimension('Z')->setAutoSize(true);
  1023. $objPHPExcel->getActiveSheet()->getColumnDimension('AA')->setAutoSize(true);
  1024. $objPHPExcel->getActiveSheet()->getColumnDimension('AB')->setAutoSize(true);
  1025. $objPHPExcel->getActiveSheet()->getColumnDimension('AC')->setAutoSize(true);
  1026. $objPHPExcel->getActiveSheet()->getColumnDimension('AD')->setAutoSize(true);
  1027. $objPHPExcel->getActiveSheet()->getColumnDimension('AE')->setAutoSize(true);
  1028. $objPHPExcel->getActiveSheet()->getColumnDimension('AF')->setAutoSize(true);
  1029. $objPHPExcel->getActiveSheet()->getColumnDimension('AG')->setAutoSize(true);
  1030. $objPHPExcel->getActiveSheet()->getColumnDimension('AH')->setAutoSize(true);
  1031. $objPHPExcel->getActiveSheet()->getColumnDimension('AI')->setAutoSize(true);
  1032. $objPHPExcel->getActiveSheet()->getColumnDimension('AJ')->setAutoSize(true);
  1033. $objPHPExcel->setActiveSheetIndex(0)
  1034. //Excel的第A列,uid是你查出数组的键值,下面以此类推
  1035. ->setCellValue('A' . $num, $v['M_ID'])
  1036. ->setCellValue('B' . $num, $v['create_time'])
  1037. ->setCellValue('C' . $num, $v['create_user_account'])
  1038. ->setCellValue('D' . $num, $v['create_user_name'])
  1039. ->setCellValue('E' . $num, $v['org_name'])
  1040. ->setCellValue('F' . $num, $v['outside_order_no'])
  1041. ->setCellValue('G' . $num, $v['sales_man_name'])
  1042. ->setCellValue('H' . $num, $v['line'])
  1043. ->setCellValue('I' . $num, $v['adults_num'])
  1044. ->setCellValue('J' . $num, $v['children_num'])
  1045. ->setCellValue('K' . $num, $v['real_passager_num'])
  1046. ->setCellValue('L' . $num, substr($v['travel_time'], 0, 10))
  1047. ->setCellValue('M' . $num, substr($v['travel_time'], 11))
  1048. ->setCellValue('N' . $num, $v['start_station'])
  1049. ->setCellValue('O' . $num, $v['end_station'])
  1050. ->setCellValue('P' . $num, $send_bus_array[0]['send_bus_no'])
  1051. ->setCellValue('Q' . $num, $send_bus_array[0]['send_driver_name'])
  1052. ->setCellValue('R' . $num, $send_bus_array[0]['send_driver_mobile'])
  1053. ->setCellValue('S' . $num, $send_bus_array[0]['send_tour_guide_name'])
  1054. ->setCellValue('T' . $num, $send_bus_array[0]['send_tour_guide_mobile'])
  1055. ->setCellValue('U' . $num, $v['contacts'])
  1056. ->setCellValue('V' . $num, $v['tel'])
  1057. ->setCellValue('W' . $num, $v['total_price'])
  1058. ->setCellValue('X' . $num, $v['receive_value'])
  1059. ->setCellValue('Y' . $num, $v['state_str'])
  1060. ->setCellValue('Z' . $num, $v['remark'])
  1061. ->setCellValue('AA' . $num, $send_bus_array[1]['send_bus_no'])
  1062. ->setCellValue('AB' . $num, $send_bus_array[1]['send_driver_name'])
  1063. ->setCellValue('AC' . $num, $send_bus_array[1]['send_driver_mobile'])
  1064. ->setCellValue('AD' . $num, $send_bus_array[1]['send_tour_guide_name'])
  1065. ->setCellValue('AE' . $num, $send_bus_array[1]['send_tour_guide_mobile'])
  1066. ->setCellValue('AF' . $num, isset($send_bus_array[2]) && isset($send_bus_array[2]['send_bus_no']) ? $send_bus_array[2]['send_bus_no'] : "-")
  1067. ->setCellValue('AG' . $num, isset($send_bus_array[2]) && isset($send_bus_array[2]['send_driver_name']) ? $send_bus_array[2]['send_driver_name'] : "-")
  1068. ->setCellValue('AH' . $num, isset($send_bus_array[2]) && isset($send_bus_array[2]['send_driver_mobile']) ? $send_bus_array[2]['send_driver_mobile'] : "-")
  1069. ->setCellValue('AI' . $num, isset($send_bus_array[2]) && isset($send_bus_array[2]['send_tour_guide_name']) ? $send_bus_array[2]['send_tour_guide_name'] : "-")
  1070. ->setCellValue('AJ' . $num, isset($send_bus_array[2]) && isset($send_bus_array[2]['send_tour_guide_mobile']) ? $send_bus_array[2]['send_tour_guide_mobile'] : "-");
  1071. }
  1072. $objPHPExcel->getActiveSheet()->setTitle('User');
  1073. $objPHPExcel->setActiveSheetIndex(0);
  1074. header('Content-Type: application/vnd.ms-excel');
  1075. header('Content-Disposition: attachment;filename="' . date('Y-m-d') . '.xls"');
  1076. header('Cache-Control: max-age=0');
  1077. $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  1078. ob_start();
  1079. $objWriter->save('php://output');
  1080. $xlsData = ob_get_contents();
  1081. ob_end_clean();
  1082. $json["code"] = '0';
  1083. $json["file"] = "data:application/vnd.ms-excel;base64," . base64_encode($xlsData);
  1084. $json["file_name"] = date('Y-m-d') . '订单';
  1085. return $json;
  1086. }
  1087. /**
  1088. * Function Description:得到组合线路的天数
  1089. * Function Name: getDayNum
  1090. * @param $line_id
  1091. *
  1092. * @return mixed
  1093. *
  1094. * @author 温依莅
  1095. */
  1096. public function getDayNum($line_id)
  1097. {
  1098. if (!is_numeric($line_id + 0)) {
  1099. return false;
  1100. }
  1101. $sql = "SELECT count(DISTINCT day_num) AS day FROM opera_line_group WHERE line_id=" . $line_id;
  1102. $day = $this->query($sql);
  1103. if (!$day) {
  1104. return false;
  1105. }
  1106. return $day[0]['day'];
  1107. }
  1108. /**
  1109. * Function Description:得到补单日期的接驳和直通车次信息【注意两日游情况】
  1110. * Function Name: getDayNum
  1111. * @param $param
  1112. *
  1113. * @return mixed
  1114. *
  1115. * @author 温依莅
  1116. */
  1117. public function getDayCar($param)
  1118. {
  1119. $valid = zzcsUtils::validateParams(
  1120. array(
  1121. 'run_date' => 'empty',
  1122. 'line_id' => 'number'
  1123. ), $param); //参数验证
  1124. if (!$valid['status']) {
  1125. $result['code'] = (string)$valid['status'];
  1126. $result['info'] = $valid['info'];
  1127. return $result;
  1128. }
  1129. $day = $this->getDayNum($param['line_id']);
  1130. if (!$day) {
  1131. $json["code"] = '5';
  1132. $json["info"] = "获取线路天数失败";
  1133. return $json;
  1134. }
  1135. $run_date = $param['run_date'];
  1136. //判断日期格式正确
  1137. $tmp_arr = explode('-', $run_date);
  1138. $bool = checkdate($tmp_arr[1], $tmp_arr[2], $tmp_arr[0]);//判断日期是否是合法日期
  1139. if (!$bool) {
  1140. $json['code'] = '3';
  1141. $json['info'] = '日期格式不正确';
  1142. return $json;
  1143. }
  1144. $next_day = date('Y-m-d', strtotime('+1 day', strtotime($run_date)));
  1145. //开始获取当日的接驳和直通车信息
  1146. #接驳
  1147. $sql1 = "select b.run_id,
  1148. m.run_date,
  1149. b.bus_order_id as run_bus_id,
  1150. (b.SEAT_COUNT-b.SALED_COUNT) AS stock,
  1151. b.send_bus_no,
  1152. b.send_driver_name,
  1153. b.send_tour_guide_name
  1154. from run_bus b left join
  1155. run_main m on b.run_id = m.run_id
  1156. where m.run_date = '$run_date' and b.group_line_flag = 1 and b.cancel_flag = 0 and m.prod_id > 0
  1157. and b.run_id in (
  1158. select distinct run_id from order_main where parent_order_id > 0 and prod_id in (select ticket_id from opera_tickets t, opera_line l where t.line_id = l.line_id and l.line_type = 316 and l.product_type = 324)
  1159. ) order by b.bus_order_id";
  1160. $bus_info11 = $this->query($sql1);
  1161. #直通
  1162. $sql2 = "SELECT
  1163. a.order_id,a.parent_order_id,a.run_id,b.BUS_ORDER_ID as run_bus_id,(b.seat_count - b.saled_count) AS stock,
  1164. d.run_date,
  1165. b.send_bus_no,
  1166. b.send_driver_name,
  1167. b.send_tour_guide_name
  1168. FROM
  1169. order_main a,run_bus b,
  1170. opera_line c,run_main d
  1171. WHERE
  1172. a.run_id = b.run_id
  1173. AND a.PARENT_PROD_ID = c.line_id
  1174. AND b.run_id = d.run_id
  1175. AND d.prod_id = 0
  1176. AND d.run_date = '$run_date'
  1177. AND c.line_type = 255
  1178. AND b.cancel_flag = 0
  1179. group by b.bus_order_id
  1180. having 324=(SELECT l.product_type FROM opera_line l LEFT JOIN order_main m ON l.line_id = m.PARENT_PROD_ID WHERE m.order_id = a.PARENT_ORDER_ID limit 1);";
  1181. $bus_info12 = $this->query($sql2);
  1182. //两日游--需追加第二天的接驳和直通车次信息
  1183. if ($day == 2) {
  1184. #第二天的车次--接驳【第二日默认无接驳】
  1185. /* $sql1 = "select b.run_id,
  1186. b.bus_order_id as run_bus_id,
  1187. (b.SEAT_COUNT-b.SALED_COUNT) AS stock,
  1188. b.send_bus_no,
  1189. b.send_driver_name,
  1190. b.send_tour_guide_name
  1191. from run_bus b left join
  1192. run_main m on b.run_id = m.run_id
  1193. where m.run_date = '$run_date' and b.group_line_flag = 1 and b.cancel_flag = 0 and m.prod_id > 0
  1194. and b.run_id in (
  1195. select distinct run_id from order_main where parent_order_id > 0 and prod_id in (select ticket_id from opera_tickets t, opera_line l where t.line_id = l.line_id and l.line_type = 316 and l.product_type = 324)
  1196. ) order by b.bus_order_id";
  1197. $bus_info21 = $this->query($sql1);*/
  1198. #第二天的车次--直通
  1199. $sql3 = "SELECT
  1200. a.order_id,a.parent_order_id,a.run_id,b.bus_order_id as run_bus_id,(b.seat_count - b.saled_count) AS stock,
  1201. d.run_date,
  1202. b.send_bus_no,
  1203. b.send_driver_name,
  1204. b.send_tour_guide_name
  1205. FROM
  1206. order_main a,run_bus b,
  1207. opera_line c,run_main d
  1208. WHERE
  1209. a.run_id = b.run_id
  1210. AND a.PARENT_PROD_ID = c.line_id
  1211. AND b.run_id = d.run_id
  1212. AND d.prod_id = 0
  1213. AND d.run_date = '$next_day'
  1214. AND c.line_type = 255
  1215. AND b.cancel_flag = 0
  1216. group by b.bus_order_id
  1217. having 324=(SELECT l.product_type FROM opera_line l LEFT JOIN order_main m ON l.line_id = m.PARENT_PROD_ID WHERE m.order_id = a.parent_order_id limit 1);";
  1218. $bus_info22 = $this->query($sql3);
  1219. //一日游
  1220. } else {
  1221. //$bus_info21=array();
  1222. $bus_info22 = array();
  1223. }
  1224. $data['bus11'] = $bus_info11;
  1225. $data['bus12'] = $bus_info12;
  1226. $data['bus22'] = $bus_info22;
  1227. $json['code'] = '0';
  1228. $json['info'] = '获取车次信息成功';
  1229. $json['list'] = $data;
  1230. return $json;
  1231. }
  1232. /**
  1233. * Function Description:补单下单
  1234. * Function Name: addExtraOrder
  1235. * @param $param
  1236. *
  1237. * @return mixed
  1238. *
  1239. * @author 温依莅
  1240. */
  1241. public function addExtraOrder($param)
  1242. {
  1243. /* line_id:
  1244. outside_sale_org_id:订单渠道
  1245. outside_order_no:渠道订单号
  1246. salesman:业务员
  1247. start_date:出发日期
  1248. start_station: 上车站点
  1249. prod_list: 预定票种,格式为{票种ID,票种价格,预定数量}{票种ID,票种价格,预定数量}
  1250. customer_info:联系人信息,格式为 {联系人,联系电话,备注}*/
  1251. $valid = zzcsUtils::validateParams(
  1252. array(
  1253. 'line_id,org_id,start_date,seq_id,start_station,start_time,prod_list,customer_info,rec_list,count_num' => 'empty',
  1254. 'receive_value' => 'amount'
  1255. ), $param); //参数验证
  1256. if (!$valid['status']) {
  1257. $result['code'] = (string)$valid['status'];
  1258. $result['info'] = $valid['info'];
  1259. return $result;
  1260. }
  1261. $user_id = $this->user_id;
  1262. $line_id = $param['line_id']; //线路编号
  1263. $org_id = $param['org_id'];
  1264. $order_no = isset($param['order_no']) ? $param['order_no'] : false;
  1265. $salesman = isset($param['salesman']) ? $param['salesman'] : false;
  1266. $start_date = $param['start_date'];
  1267. $start_station = $param['start_station'];
  1268. $prod_list = $param['prod_list'];
  1269. $rec_list = $param['rec_list'];
  1270. $receive_value = $param['receive_value'];
  1271. $seq_id = $param['seq_id'];
  1272. $start_time = $param['start_time'];
  1273. $customer_info = $param['customer_info'];
  1274. //####车次信息--需在下单后做相应数据处理
  1275. $car_info = $param['car_info'];
  1276. $count_num = $param['count_num'];
  1277. //customer_info中,手机和联系人只要有1个信息就可以
  1278. $tmp = substr($customer_info, 1, -1);
  1279. $tmpArray = explode(',', $tmp);
  1280. //前台传过来的顺序不能变 1、联系人 2、手机号 3、备注 4、后期添加的新字段
  1281. if (trim($tmpArray[0]) == '' && !zzcsUtils::validate(trim($tmpArray[1]), 'tel')) {
  1282. $customer_info = false;
  1283. }
  1284. if (zzcsUtils::validate(trim($tmpArray[1]), 'tel')) {
  1285. $phone = $tmpArray[1];//手机号码
  1286. $sql = "select count(1) cnt from order_main WHERE PROD_START_STATION_DATE='{$start_date}' and CUSTOMER_MOBILE='{$phone}' and PARENT_PROD_ID = {$line_id};";
  1287. $getCnt = $this->query($sql);
  1288. if ($getCnt['0']['cnt'] >= 1) {
  1289. $result['code'] = '2';
  1290. $result['info'] = "同一手机号不可在一天内下多个同线路的订单!";
  1291. return $result;
  1292. }
  1293. }
  1294. $pay_type = 275;
  1295. $time = date('Y-m-d H:i:s', time());
  1296. if (!$user_id || false === $line_id || false === $org_id || false === $order_no || false === $salesman || false === $start_date || false === $start_station || false === $prod_list || false === $customer_info || false === $receive_value || false === $seq_id || false === $start_time) {
  1297. $result['code'] = '2';
  1298. $result['info'] = "缺少必要参数";
  1299. return $result;
  1300. }
  1301. $sql = "call sp_make_order_group($user_id,$line_id,$org_id,'{$order_no}','{$salesman}','{$start_date}',$seq_id,$start_station,'{$start_time}','{$prod_list}','{$customer_info}',{$receive_value},{$pay_type})";
  1302. zzcsUtils::writeLog($sql);
  1303. $res = $this->procQuery($sql);
  1304. if ($res['code'] != 0) { //存储过程执行出错
  1305. $json["code"] = (string)$res['code'];
  1306. $json["info"] = $res['info'];
  1307. return $json;
  1308. }
  1309. //查询成功后,修改该主订单的子订单信息(receive_value值)
  1310. $rec_arr = explode('|', trim($rec_list, '|'));
  1311. $update_rec_sql = '';
  1312. foreach ($rec_arr as $k => $v) {
  1313. $arr = explode(',', $v);
  1314. $update_rec_sql .= "UPDATE order_main SET RECEIVE_VALUE={$arr[1]} WHERE parent_order_id = {$res['data'][0][0]['order_id']} and prod_id={$arr[0]};";
  1315. }
  1316. zzcsUtils::writeLog($update_rec_sql);
  1317. $res2 = $this->exec($update_rec_sql);
  1318. if (false === $res2) {
  1319. $json['code'] = '1';
  1320. $json['info'] = '更改子订单失败';
  1321. return $json;
  1322. }
  1323. //数据查询成功
  1324. $json["code"] = '0';
  1325. $json["info"] = '组合线路下单成功';
  1326. $json["order_id"] = $res['data'][0][0]['order_id'];
  1327. //##修改订单状态
  1328. $update_status_sql = "UPDATE order_main
  1329. SET update_user_id = " . $user_id . ",
  1330. update_time = '" . $time . "',
  1331. order_status = 146
  1332. WHERE
  1333. order_id = " . $json["order_id"] . "
  1334. OR parent_order_id = " . $json["order_id"];
  1335. zzcsUtils::writeLog($update_status_sql);
  1336. $res3 = $this->exec($update_status_sql);
  1337. if (false === $res3) {
  1338. $json['code'] = '1';
  1339. $json['info'] = '更改订单状态失败';
  1340. return $json;
  1341. }
  1342. ####此处添加补单逻辑,对订单表order_main的run_id,bus_order_id 和run_bus的字段进行修改
  1343. $update_bus_sql = '';
  1344. foreach ($car_info as $k => $v) {
  1345. #只有$v的run_id 和run_bus_id都不为0才更新数据
  1346. if ($v['run_id'] == 0 || $v['run_bus_id'] == 0) {
  1347. continue;
  1348. }
  1349. //以下更新订单班次和车次信息(run_id,run_bus_order_id),更新车次的已售座位数信息(saled_count,real_total_count)
  1350. //当日接驳
  1351. if ($k == 0) {
  1352. //修改新增乘客巴士已售座位
  1353. $update_bus_sql .= "UPDATE run_bus
  1354. SET saled_count = (saled_count +" . $count_num . "),
  1355. real_total_count = (real_total_count +" . $count_num . "),
  1356. UPDATE_USER_ID=$user_id
  1357. WHERE
  1358. run_id = " . $v['run_id'] . "
  1359. and bus_order_id=" . $v['run_bus_id'] . ";";
  1360. //修改子订单以及车次号
  1361. $update_bus_sql .= "update order_main
  1362. set
  1363. RUN_ID=" . $v['run_id'] . ",
  1364. RUN_BUS_ORDER_ID=" . $v['run_bus_id'] . ",
  1365. UPDATE_USER_ID=$user_id
  1366. where
  1367. parent_order_id in (" . $json["order_id"] . ")
  1368. and run_date= '" . $v['run_date'] . "'
  1369. and PARENT_PROD_ID in (select line_id from opera_line where line_type=256);";
  1370. //当日直通
  1371. } else if ($k == 1) {
  1372. //修改新增乘客巴士已售座位
  1373. $update_bus_sql .= "UPDATE run_bus
  1374. SET saled_count = (saled_count +" . $count_num . "),
  1375. real_total_count = (real_total_count +" . $count_num . "),
  1376. UPDATE_USER_ID=$user_id
  1377. WHERE
  1378. run_id = " . $v['run_id'] . "
  1379. and bus_order_id=" . $v['run_bus_id'] . ";";
  1380. //修改子订单以及车次号
  1381. $update_bus_sql .= "update order_main
  1382. set
  1383. RUN_ID=" . $v['run_id'] . ",
  1384. RUN_BUS_ORDER_ID=" . $v['run_bus_id'] . ",
  1385. UPDATE_USER_ID=$user_id
  1386. where
  1387. parent_order_id in (" . $json["order_id"] . ")
  1388. and run_date= '" . $v['run_date'] . "'
  1389. and PARENT_PROD_ID in (select line_id from opera_line where line_type=255);";
  1390. //第二日直通
  1391. } else {
  1392. //修改新增乘客巴士已售座位
  1393. $update_bus_sql .= "UPDATE run_bus
  1394. SET saled_count = (saled_count +" . $count_num . "),
  1395. real_total_count = (real_total_count +" . $count_num . "),
  1396. UPDATE_USER_ID=$user_id
  1397. WHERE
  1398. run_id = " . $v['run_id'] . "
  1399. and bus_order_id=" . $v['run_bus_id'] . ";";
  1400. //修改子订单以及车次号
  1401. $update_bus_sql .= "update order_main
  1402. set
  1403. RUN_ID=" . $v['run_id'] . ",
  1404. RUN_BUS_ORDER_ID=" . $v['run_bus_id'] . ",
  1405. UPDATE_USER_ID=$user_id
  1406. where
  1407. parent_order_id in (" . $json["order_id"] . ")
  1408. and run_date= '" . $v['run_date'] . "'
  1409. and PARENT_PROD_ID in (select line_id from opera_line where line_type=255);";
  1410. }
  1411. }
  1412. zzcsUtils::writeLog($update_bus_sql);
  1413. if ($update_bus_sql) {
  1414. $res_bus = $this->exec($update_bus_sql);
  1415. if (false === $res_bus) {
  1416. $json['code'] = '1';
  1417. $json['info'] = '更改车次信息失败';
  1418. return $json;
  1419. }
  1420. }
  1421. ####补单逻辑结束
  1422. //获取拓展信息
  1423. $expandParams = array(
  1424. 'terrace' => empty($param['terrace']) ? '' : $param['terrace'],//上平台-即渠道商的子渠道
  1425. 'tavern_stay' => empty($param['tavern_stay']) ? '' : $param['tavern_stay'],//入住酒店
  1426. 'add_line_price' => empty($param['add_line_price']) ? '' : $param['add_line_price']//加线金额
  1427. );
  1428. $this->setOrderExpand($json["order_id"], $expandParams);//设置订单的拓展信息
  1429. return $json;
  1430. }
  1431. }