|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489 |
- <?php
-
- /**
- * Created by PhpStorm.
- * User: Steven
- * Date: 2016/10/17
- * Time: 18:50
- */
-
- /**
- * Class groupOrder 组合线路订单相关
- */
- class groupOrder extends base
- {
-
- /**zs
- * 获取组合线路录入订单基本数据
- * @param $param
- */
- public function getProductBase($param)
- {
- $valid = zzcsUtils::validateParams(array('line_id,run_date' => 'empty'), $param);
- if (!$valid['status']) {
- $result['code'] = (string)$valid['status'];
- $result['info'] = $valid['info'];
- return $result;
- }
- $line_id = isset($param['line_id']) ? trim($param['line_id']) : false;
- $run_date = isset($param['run_date']) ? trim($param['run_date']) : false;
- if (!$line_id || !$run_date) {
- $json['code'] = '2';
- $json['info'] = '缺少必要参数';
- return $json;
- }
-
- //1.获取线路名称
- $line_name = $this->getDetailName($line_id);
- //2.获取销售渠道
- $channel_list = $this->getChannelList($line_id);
- //3.获取开始站点信息
- $start_station = $this->getStartStation($line_id, $run_date);
- //这里判断如果没有数据,返回错误--温依莅
- if (!$start_station) {
- $json['code'] = '2';
- $json['info'] = '所选日期没有相关线路';
- return $json;
- }
- $json['code'] = '0';
- $json['info'] = '返回' . $line_id . '数据成果';
- $json['line_name'] = $line_name;
- $json['channel_list'] = $channel_list;
- $json['start_station'] = $start_station;
- return $json;
- }
-
- /**
- * 温依莅
- * 根据日期得到有班次的组合线路信息
- * @param $web_data
- * @return array
- * *成功返回参数
- * code(str)
- * info(str)
- * product_list(array):
- * line_id(int) 组合线路id
- * line_name(str) 组合线路名称
- */
- public function groupProductList($web_data)
- {
- if($web_data['run_date'] <= date('Y-m-d') && empty($web_data['line_id']) == false){//历史订单则线路可以进行规定
- //数据查询成功
- $json["code"] = '0';
- $json["info"] = '组合产品列表';
- $json["product_list"][] = array('line_id'=> $web_data['line_id'],'line_name'=> $web_data['line_name']);
- return $json;
- }
- //组合线路产品列表
- $run_date = isset($web_data["run_date"]) ? trim($web_data["run_date"]) : false;
- //判断参数是否缺少
- if (false === $run_date) {
- $json['code'] = '2';
- $json['info'] = '缺少必要参数';
- return $json;
- }
- //判断日期格式正确
- $tmp_arr = explode('-', $run_date);
- $bool = checkdate($tmp_arr[1], $tmp_arr[2], $tmp_arr[0]);//判断日期是否是合法日期
- if (!$bool) {
- $json['code'] = '3';
- $json['info'] = '日期格式不正确';
- return $json;
- }
- $current_page = 1;
- $page_size = 100;
- $product_type = 0;
- $line = null;
- $json = array();
- $sql = "call sp_choice_kicket_group ($this->user_id,$current_page,$page_size,'$line',$product_type,'$run_date')";
- zzcsUtils::writeLog($sql);
- $reset = $this->procQuery($sql);
- if ($reset === false) {
- $json["code"] = $reset['code'];
- $json["info"] = $reset['info'];
- return $json;
- } else {
- //数据查询成功
- $json["code"] = '0';
- $json["info"] = '组合产品列表';
- if (isset($reset['data'][1])) {
- $product_list = array();
- foreach ($reset['data'][1] as $k => $v) {
- $product_list[$k]['line_id'] = $v['line_id'];
- //$product_list[$k]['line_code']=$v['line_code'];
- $product_list[$k]['line_name'] = $v['line_name'];
- }
- $json["product_list"] = $product_list;
-
- } else {
- $json["product_list"] = array();
- }
- return $json;
- }
- }
-
- /**
- * Function Description:得到所有组合线路列表
- * Function Name: getGroupLine
- *
- * @return mixed
- *
- * @author 温依莅
- */
- public function getGroupLine()
- {
- $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;";
- $line_info = $this->query($sql);
- if (!$line_info) {
- $json['code'] = '1';
- $json['info'] = '数据获取错误';
- return $json;
- }
- //若查询无信息
- if (count($line_info) == 0) {
- $json['code'] = '1';
- $json['info'] = '无符合条件的线路';
- //$json['list'] = array();
- return $json;
- }
- $json['code'] = '0';
- $json['info'] = '获取线路成功';
- $json['list'] = $line_info;
- return $json;
- }
-
- /**
- * Des:根据手机号和日期得到该手机号今日是否下过组合线路订单
- * Name: getPurchaseHistory
- * @param $param
- * @return mixed
- * @author 温依莅
- */
- public function getPurchaseHistory($param)
- {
- $valid = zzcsUtils::validateParams(array('tel' => 'tel'), $param); //参数验证
- if (!$valid['status']) {
- $result['code'] = (string)$valid['status'];
- $result['info'] = $valid['info'];
- return $result;
- }
- $phone = $param['tel'];
- $sql = "SELECT
- a.order_id,a.order_description
- FROM
- order_main a
- RIGHT JOIN
- opera_line b
- ON
- a.parent_prod_id = b.line_id
- WHERE
-
- 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');";
-
- $history_info = $this->query($sql);
- if (!$history_info) {
- $json['code'] = '1';
- $json['info'] = '数据库错误';
- return $json;
- }
- //若查询无信息
- if (count($history_info) == 0) {
- $json['code'] = '1';
- $json['info'] = '无符合条件的订单';
- //$json['list'] = array();
- return $json;
- }
- $json['code'] = '0';
- $json['info'] = '今日已下过订单';
- //$json['list'] = $history_info;
- return $json;
- }
-
- /**zs
- * 获取组合线路票种信息
- * @param $param
- */
- public function getTicketType($param)
- {
- $line_id = isset($param['line_id']) ? $param['line_id'] : false;
- $channel_id = isset($param['channel_id']) ? trim($param['channel_id']) : false;//渠道商id;
-
- if (!$line_id || $channel_id === false) {
- $result['code'] = '2';
- $result['info'] = "缺少必要参数";
- return $result;
- }
- $sql = "SELECT
- ticket_id,
- seat_type,
- (SELECT type_name FROM dict_type WHERE id = seat_type) AS seat_type_name,
- human_type,
- (SELECT type_name FROM dict_type WHERE id = human_type) AS human_type_name,
- prod_price,
- cus_price
- FROM
- opera_tickets
- WHERE
- line_id = " . $line_id . "
- AND cancel_flag = 0";
- $ticket_info = $this->query($sql);
- if (count($ticket_info) == 0) {
- $json['code'] = '0';
- $json['info'] = '没有可售卖的票种';
- $json['list'] = array();
- }
-
- foreach ($ticket_info as $k => $v) {
- $sale_type = $this->getTicketChannelSaleType($channel_id, $v['ticket_id'], 316);//获取销售类型
- if ($sale_type)//如果该销售方式被关掉
- {
- if ($sale_type == "177") {
- $ticket_info[$k]['price'] = $v['prod_price'];
- } else {
- $ticket_info[$k]['price'] = $v['cus_price'];
- }
- } else {
- unset($ticket_info[$k]);
- }
- }
-
- $json['code'] = '0';
- $json['info'] = '返回票种信息成功';
- $json['list'] = array_merge($ticket_info);
- return $json;
- }
-
- /**
- * 添加组合线路的订单
- * @param $param
- */
- public function addOrder($param)
- {
- /* line_id:
- outside_sale_org_id:订单渠道
- outside_order_no:渠道订单号
- salesman:业务员
- start_date:出发日期
- start_station: 上车站点
- prod_list: 预定票种,格式为{票种ID,票种价格,预定数量}{票种ID,票种价格,预定数量}
- customer_info:联系人信息,格式为 {联系人,联系电话,备注}*/
-
- $valid = zzcsUtils::validateParams(
- array(
- 'line_id,org_id,start_date,seq_id,start_station,start_time,prod_list,customer_info,rec_list' => 'empty',
- 'receive_value' => 'amount'
- ), $param); //参数验证
- if (!$valid['status']) {
- $result['code'] = (string)$valid['status'];
- $result['info'] = $valid['info'];
- return $result;
- }
- $user_id = $this->user_id;
- $line_id = $param['line_id']; //线路编号
- $org_id = $param['org_id'];
- $order_no = isset($param['order_no']) ? $param['order_no'] : false;
- $salesman = isset($param['salesman']) ? $param['salesman'] : false;
- $start_date = $param['start_date'];
- $start_station = $param['start_station'];
- $prod_list = $param['prod_list'];
- $rec_list = $param['rec_list'];
- $receive_value = $param['receive_value'];
- $seq_id = $param['seq_id'];
- $start_time = $param['start_time'];
- $customer_info = $param['customer_info'];
- //customer_info中,手机和联系人只要有1个信息就可以
- $tmp = substr($customer_info, 1, -1);
- $tmpArray = explode(',', $tmp);
- //前台传过来的顺序不能变 1、联系人 2、手机号 3、备注 4、后期添加的新字段
- if (trim($tmpArray[0]) == '' && !zzcsUtils::validate(trim($tmpArray[1]), 'tel')) {
-
- $customer_info = false;
- }
- if (zzcsUtils::validate(trim($tmpArray[1]), 'tel')) {
- $phone = $tmpArray[1];//手机号码
- $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};";
- $getCnt = $this->query($sql);
- if ($getCnt['0']['cnt'] >= 1) {
- $result['code'] = '2';
- $result['info'] = "同一手机号不可在一天内下多个同线路的订单!";
- return $result;
- }
- }
- $pay_type = 275;
- $time = date('Y-m-d H:i:s', time());
- 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) {
- $result['code'] = '2';
- $result['info'] = "缺少必要参数";
- return $result;
- }
- $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})";
- zzcsUtils::writeLog($sql);
- $res = $this->procQuery($sql);
- if ($res['code'] != 0) { //存储过程执行出错
- $json["code"] = (string)$res['code'];
- $json["info"] = $res['info'];
- return $json;
- }
- //查询成功后,修改该主订单的子订单信息(receive_value值)
- $rec_arr = explode('|', trim($rec_list, '|'));
- $update_rec_sql = '';
- foreach ($rec_arr as $k => $v) {
- $arr = explode(',', $v);
- $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];";
- }
- zzcsUtils::writeLog($update_rec_sql);
- $res2 = $this->exec($update_rec_sql);
- if (false === $res2) {
- $json['code'] = '1';
- $json['info'] = '更改子订单失败';
- return $json;
- }
- //数据查询成功
- $json["code"] = '0';
- $json["info"] = '组合线路下单成功';
- $json["order_id"] = $res['data'][0][0]['order_id'];
- $update_status_sql = "UPDATE order_main
- SET update_user_id = " . $user_id . ",
- update_time = '" . $time . "',
- order_status = 146
- WHERE
- order_id = " . $json["order_id"] . "
- OR parent_order_id = " . $json["order_id"];
- zzcsUtils::writeLog($update_status_sql);
- $res3 = $this->exec($update_status_sql);
- if (false === $res3) {
- $json['code'] = '1';
- $json['info'] = '更改订单状态失败';
- return $json;
- }
- //获取拓展信息
- $expandParams = array(
- 'terrace' => empty($param['terrace']) ? '' : $param['terrace'],//上平台-即渠道商的子渠道
- 'tavern_stay' => empty($param['tavern_stay']) ? '' : $param['tavern_stay'],//入住酒店
- 'add_line_price' => empty($param['add_line_price']) ? '' : $param['add_line_price']//加线金额
- );
- $this->addExpand($res['data'][0][0]['order_id'], $expandParams);//添加订单的拓展信息
- return $json;
- }
-
- /**
- * 根据订单ID获取订单基本数据
- * @param $param
- * @return mixed 订单修改需要返回 run_date, line_id
- *
- * User: 温依莅
- */
- public function getOrderInfo($param)
- {
- //验证order_id
- $valid = zzcsUtils::validateParams(array('order_id' => 'empty'), $param); //参数验证
- if (!$valid['status']) {
- $result['code'] = (string)$valid['status'];
- $result['info'] = $valid['info'];
- return $result;
- }
- $order_id = trim($param['order_id']);
- //根据order_id 获取订基本信息
- $sql = "SELECT
- a.order_id,b.LINE_ID,
- b.line_name,
- a.PROD_START_STATION_DATE,
- IFNULL((SELECT terrace from order_expand_xm where order_id='$order_id'),0.00) as 'terrace',
- IFNULL((SELECT tavern_stay from order_expand_xm where order_id='$order_id'),0.00) as 'tavern_stay',
- IFNULL((SELECT add_line_price from order_expand_xm where order_id='$order_id'),0.00) as 'add_line_price',
- a.PROD_START_STATION_RES_ID,a.PROD_START_STATION_RES_NAME,
- c.SUPPLIER_NAME,c.ID SUPPLIER_ID,
- (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,
- a.OUTSIDE_ORDER_NO,
- a.ORDER_DESCRIPTION,
- a.RECEIVE_VALUE,a.customer_name,a.customer_mobile,a.customer_memo,a.sales_man
- FROM
- order_main a
- LEFT JOIN opera_line b ON a.PARENT_PROD_ID = b.LINE_ID
- LEFT JOIN base_supplier c on a.OUTSIDE_SALE_ORG_ID=c.ID
- 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";
- $res_list = $this->query($sql);
- if (!$res_list) {
- $json['code'] = '2';
- $json['info'] = '数据库错误';
- return $json;
- }
- if (count($res_list) == 0) {
- $json['code'] = '2';
- $json['info'] = '无有效订单数据';
- return $json;
- }
- //得到tickets信息
- $temp_str = $res_list[0]['ORDER_DESCRIPTION'];
- $rec_str = $res_list[0]['rec_desc'];//代收单价信息
- $temp_arr = explode('|', $temp_str, -1);
- $rec_arr = explode('|', $rec_str);
- $ticket_list = array();
- foreach ($temp_arr as $k => $v) {
- $arr = explode(',', $v);
- $ticket_list[$k]['ticket_id'] = $arr[0];
- $ticket_list[$k]['num'] = end($arr);
- //插入票种代收单价
- foreach ($rec_arr as $k1 => $v1) {
- $arr2 = explode(',', $v1);
- if ($arr2[0] == $arr[0]) {
- $ticket_list[$k]['sin_price'] = end($arr2);
- }
- }
- }
-
- $json['code'] = '0';
- $json['info'] = '根据订单号返回订单信息';
- $json['list'] = $res_list;
- $json['list'][0]['ticket_info'] = $ticket_list;
- return $json;
- }
-
- /**
- * 组合订单的修改功能
- * @param $param
- * @return mixed
- *
- * User: Steven
- */
- public function updateGroupOrder($param)
- {
- $valid = zzcsUtils::validateParams(
- array(
- 'line_id,org_id,start_date,seq_id,start_station,start_time,prod_list,customer_info,rec_list' => 'empty',
- 'receive_value' => 'amount'
- ), $param); //参数验证
- if (!$valid['status']) {
- $result['code'] = (string)$valid['status'];
- $result['info'] = $valid['info'];
- return $result;
- }
- $user_id = $this->user_id;
- $line_id = $param['line_id']; //线路编号
- $org_id = $param['org_id'];
- $order_no = isset($param['order_no']) ? $param['order_no'] : false;
- $salesman = isset($param['salesman']) ? $param['salesman'] : false;
- $start_date = $param['start_date'];
- $start_station = $param['start_station'];
- $prod_list = $param['prod_list'];
- $rec_list = $param['rec_list'];
- $receive_value = $param['receive_value'];
- $seq_id = $param['seq_id'];
- $start_time = $param['start_time'];
- $customer_info = $param['customer_info'];
- //customer_info中,手机和联系人只要有1个信息就可以
- $tmp = substr($customer_info, 1, -1);
- $tmpArray = explode(',', $tmp);
- //前台传过来的顺序不能变 1、联系人 2、手机号 3、备注 4、后期添加的新字段
- if (trim($tmpArray[0]) == ''&& trim($tmpArray[1]) == '') {
- $customer_info = false;
- }
- if (zzcsUtils::validate(trim($tmpArray[1]), 'tel')) {
- $phone = $tmpArray[1];//手机号码
- $sql = "
- select count(1) cnt
- from order_main a
- WHERE a.PROD_START_STATION_DATE='{$start_date}'
- and a.CUSTOMER_MOBILE='{$phone}'
- and a.PARENT_PROD_ID = {$line_id}
- AND a.CUSTOMER_MOBILE != (
- select CUSTOMER_MOBILE from order_main WHERE ORDER_ID = {$param['order_id']}
- );";
- $getCnt = $this->query($sql);
- if ($getCnt['0']['cnt'] >= 1) {
- $result['code'] = '2';
- $result['info'] = "同一手机号不可在一天内下多个同线路的订单!";
- return $result;
- }
- }
-
-
- $pay_type = 275;
- $order_id = $param['order_id']; //要修改的订单号码
- //取消当前订单
- $sql_cancel = "call sp_cancel_order(" . $user_id . "," . $order_id . ")";
- zzcsUtils::writeLog($sql_cancel);
- $res_cancel = $this->procQuery($sql_cancel);
- if ($res_cancel['code'] != 0) { //存储过程执行出错
- $result["code"] = (string)$res_cancel['code'];
- $result["info"] = $res_cancel['info'];
- return $result;
- }
- //将该订单的cancel_flag置为1,以区分是修改订单还是取消订单
- $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}";
- $this->query($sql);
- $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})";
- zzcsUtils::writeLog($sql_update);
- $res_update = $this->procQuery($sql_update);
- if ($res_update['code'] != 0) { //存储过程执行出错
- $result["code"] = (string)$res_update['code'];
- $result["info"] = $res_update['info'];
- return $result;
- }
- //查询成功后,修改该主订单的子订单信息(receive_value值)
- $rec_arr = explode('|', trim($rec_list, '|'));
- $update_rec_sql = '';
- foreach ($rec_arr as $k => $v) {
- $arr = explode(',', $v);
- $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];";
- }
- zzcsUtils::writeLog($update_rec_sql);
- $res = $this->exec($update_rec_sql);
- if (false === $res) {
- $json['code'] = '1';
- $json['info'] = '更改子订单失败';
- return $json;
- }
- $time = date('Y-m-d H:i:s', time());
- //修改订单状态为146(已支付)
- $update_status_sql = "UPDATE order_main
- SET update_user_id = " . $user_id . ",
- update_time = '" . $time . "',
- order_status = 146
- WHERE
- order_id = " . $res_update['data'][0][0]['order_id'] . "
- OR parent_order_id = " . $res_update['data'][0][0]['order_id'];
- zzcsUtils::writeLog($update_status_sql);
- $res3 = $this->exec($update_status_sql);
- if (false === $res3) {
- $json['code'] = '1';
- $json['info'] = '更改订单状态失败';
- return $json;
- }
- //获取拓展信息
- $expandParams = array(
- 'terrace' => empty($param['terrace']) ? '' : $param['terrace'],//上平台-即渠道商的子渠道
- 'tavern_stay' => empty($param['tavern_stay']) ? '' : $param['tavern_stay'],//入住酒店
- 'add_line_price' => empty($param['add_line_price']) ? '' : $param['add_line_price']//加线金额
- );
- $this->setOrderExpand($res_update['data'][0][0]['order_id'], $expandParams);//设置订单的拓展信息
- $result["code"] = '0';
- $result["info"] = '修改成功';
- return $result;
- }
-
- //设置订单拓展信息
- public function setOrderExpand($order_id, $expandParams)
- {
- $sql = '' . "SELECT order_id, terrace, tavern_stay, add_line_price from order_expand_xm WHERE order_id = {$order_id}";
- $getExpand = $this->query($sql);//获取特殊标记订单信息
- if (isset($getExpand[0]['order_id'])) {
- $this->editExpand($order_id, $expandParams);//如果存在则修改
- } else {
- $this->addExpand($order_id, $expandParams);//如果不存在则添加
- }
- }
-
- //添加拓展信息
- protected function addExpand($order_id, $params)
- {
- $sql = '' . "REPLACE INTO `order_expand_xm` ( `order_id`,`terrace`,`tavern_stay`,`add_line_price`)
- VALUES ('{$order_id}', '{$params['terrace']}', '{$params['tavern_stay']}', '{$params['add_line_price']}');";
- $this->insert($sql);
- }
-
- //修改拓展信息
- protected function editExpand($order_id, $params)
- {
- $sql = '' . "UPDATE order_expand_xm
- set terrace='{$params['terrace']}' , tavern_stay='{$params['tavern_stay']}',add_line_price='{$params['add_line_price']}'
- where order_id = {{$order_id}};";
- $this->edit($sql);
- }
-
- /**获取组合线路出发站点
- * Des:
- * Name: getStartStation
- * @param $line_id
- * @param $run_date
- * @return array|bool
- */
- private function getStartStation($line_id, $run_date)
- {
- $sql = "SELECT a.seq_id,c.zone_mark,c.res_id,c.res_name,s.start_time
- FROM opera_line_group a,run_main m, run_station s,base_resource c
- WHERE a.line_id = " . $line_id . " AND a.day_num = 1 AND a.start_res_id = 0
- AND a.sub_line_id = m.prod_id AND a.start_minutes = m.run_minutes AND m.run_date = '" . $run_date . "'
- AND m.run_id = s.run_id
- AND s.station_res_id = c.res_id AND s.station_inout_type IN (108,109)
- UNION ALL
- SELECT a.seq_id,c.zone_mark,c.res_id,c.res_name,s.start_time
- FROM opera_line_group a,run_main m, run_station s,base_resource c
- WHERE a.line_id = " . $line_id . " AND a.day_num = 1 AND a.start_res_id > 0
- AND a.sub_line_id = m.prod_id AND a.start_minutes = m.run_minutes AND m.run_date = '" . $run_date . "'
- AND m.run_id = s.run_id AND a.start_order_id <= s.station_order_id
- AND s.station_res_id = c.res_id AND s.station_inout_type IN (108,109)";
- $res_list = $this->query($sql);
- //这里加一步判断,如果所传日期没有信息,返回false--温依莅
- if (count($res_list) == 0) {
- return false;
- }
- $res_list_zone = array();
- $res_array = array();
- foreach ($res_list as $k => $v) {
- if ($v['zone_mark'] == '1') {
- $res_array[$v['res_id']] = $v['res_id'];
- $res_list_zone[$v['res_id']] = $v;
- unset($res_list[$k]);
- }
- }
- foreach ($res_list as $k => $v) {
- $res_list1[$v['res_id']] = $v;
- }
- $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";
- $res_array_list1 = $this->query($res_sql);
- $res_array_list = array();
- foreach ($res_array_list1 as $k => $v) {
- $res_array_list[$v['res_id']]['res_id'] = $v['res_id'];
- $res_array_list[$v['res_id']]['res_name'] = $v['res_name'];
- $res_array_list[$v['res_id']]['seq_id'] = $res_list_zone[$v['parent_id']]['seq_id'];
- $res_array_list[$v['res_id']]['start_time'] = $res_list_zone[$v['parent_id']]['start_time'];
- $res_array_list[$v['res_id']]['zone_mark'] = $res_list_zone[$v['parent_id']]['zone_mark'];
- }
- $res_list1 = array();
- foreach ($res_array_list as $k => $v) {
- $res_list1[$k] = $v;
- }
- $res_list = array_merge($res_list1);
- //这里做一个重排如果包含厦门酒店未知则把其设置为第一个元素
- foreach ($res_list as $k3 => $v3) {
- if ($v3['res_id'] == 11964) {
- unset($res_list[$k3]);
- array_unshift($res_list, $v3);
- }
- }
- return $res_list;
- }
-
- /**
- * Des:获取组合线路订单渠道商列表
- * Name: getChannelList
- * @param $line_id
- * @return array
- */
- private function getChannelList($line_id)
- {
- $sql = "SELECT
- a.supplier_id,b.supplier_name,b.sales_man
- FROM
- base_supplier_sale AS a
- INNER JOIN base_supplier AS b ON a.supplier_id = b.id
- WHERE
- a.parent_type = 310
- AND a.product_type IN (316, 0)
- AND a.cancel_flag = 0
- AND b.cancel_flag = 0
- AND b.is_disabled = 0
- AND a.supplier_id NOT IN
- (
- SELECT
- supplier_id
- FROM
- (
- SELECT
- supplier_id,count(ticket_id) AS cn
- FROM
- opera_tickets_distrib
- WHERE
- cancel_flag = 0
- AND authority_status = 0
- AND ticket_id IN (SELECT ticket_id FROM opera_tickets WHERE line_id = " . $line_id . " AND cancel_flag = 0)
- GROUP BY
- supplier_id
- ) AS dt
- WHERE
- cn = (SELECT count(ticket_id) FROM opera_tickets WHERE line_id = " . $line_id . " AND cancel_flag = 0)
- )
- GROUP BY
- a.supplier_id";
- $channel_list = $this->query($sql);
-
- return $channel_list;
- }
-
- /**
- * Des:获取组合线路名字
- * Name: getDetailName
- * @param $line_id
- * @return array
- */
- private function getDetailName($line_id)
- {
- $sql = "SELECT line_name FROM opera_line WHERE line_id = " . $line_id . " AND cancel_flag = 0";
- $line_name = $this->query($sql);
- $line_name = $line_name[0]['line_name'];
- return $line_name;
- }
-
-
- /**
- * Des:获取渠道的票种销售方式
- * Name: getTicketChannelSaleType
- * @param $channel_id
- * @param $ticket_id
- * @param $line_type
- * @return array|bool
- */
- public function getTicketChannelSaleType($channel_id, $ticket_id, $line_type)
- {
- $sql = "SELECT
- sale_type
- FROM
- base_supplier_sale AS a
- WHERE
- NOT EXISTS
- (
- SELECT
- supplier_id
- FROM
- opera_tickets_distrib
- WHERE
- supplier_id = a.supplier_id
- AND ticket_id = " . $ticket_id . "
- AND cancel_flag = 0
- )
- AND supplier_id = " . $channel_id . "
- AND parent_type = 310
- AND product_type IN (" . $line_type . ", 0)
- AND cancel_flag = 0
- UNION ALL
- SELECT
- sale_type
- FROM
- opera_tickets_distrib
- WHERE
- supplier_id = " . $channel_id . "
- AND ticket_id = " . $ticket_id . "
- AND authority_status = 1
- AND cancel_flag = 0";
- $sale_type = $this->query($sql);
- if (count($sale_type) == 0) {
- return false;
- }
- $sale_type = $sale_type[0]['sale_type'];
- return $sale_type;
- }
-
- /**
- * 组合产品订单列表
- * @param $web_data
- * @return mixed
- */
- function groupOrderList($web_data)
- {
- //组合产品订单列表
- //hyk
- $time_limit = isset($web_data["time_limit"]) ? trim($web_data["time_limit"]) : false;
- $start_time = isset($web_data["start_time"]) ? trim($web_data["start_time"]) : false;
- $end_time = isset($web_data["end_time"]) ? trim($web_data["end_time"]) : false;
- $order_source = isset($web_data["order_source"]) ? trim($web_data["order_source"]) : false;
- $order_status = isset($web_data["order_status"]) ? trim($web_data["order_status"]) : false;
- $current_page = isset($web_data["current_page"]) ? trim($web_data["current_page"]) : false;
- $page_size = isset($web_data["page_size"]) ? trim($web_data["page_size"]) : false;
- $product_line = isset($web_data["product_line"]) ? trim($web_data["product_line"]) : false;
- $biller = isset($web_data["biller"]) ? trim($web_data["biller"]) : false;//添加计调员id
- $create_user_id = $biller;
- $line = isset($web_data["line"]) ? trim($web_data["line"]) : false;
- $more_search = isset($web_data["more_search"]) ? trim($web_data["more_search"]) : false;
- $search_type = isset($web_data["search_type"]) ? trim($web_data["search_type"]) : false;
- 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) {
- //参数不完整;
- $json["code"] = '2';
- $json["info"] = "缺少必要参数";
- return $json;
- }
- $sql = "CALL xm_order_get_list_xm(" . $this->user_id . "," . $create_user_id . "," . $time_limit . ",'" .
- $start_time . "','" . $end_time . "'," . $order_source . "," . $order_status . ",'"
- . $more_search . "'," . $current_page . "," . $page_size . ",'" . $line . "','',''," . $search_type . "," . $product_line . ")";
- zzcsUtils::writeLog($sql);
- $res = $this->procQuery($sql);
- if ($res['code'] != 0) {
- //执行存储过程出错
- $json["code"] = $res['code'];
- $json["info"] = $res['info'];
- return $json;
- } else {
- $json["code"] = "0";
- $json["info"] = "订单列表";
- $json["page"]["total_count"] = $res["data"][0][0]["num"];
- $json["page"]["page_count"] = $res["data"][0][0]["pagecount"];
- $json["page"]["curr_page"] = $res["data"][0][0]["currpage"];
- $json["page"]["page_size"] = $res["data"][0][0]["pagesize"];
- $json["order_list"] = $res["data"][1];
- $label_data = array();
- if (empty($res["data"][2])) {
- // $json["label"]["pay"]=$res["data"][2];
- $label_data["pay"] = 0;
- $label_data["out"] = 0;
- $label_data["end"] = 0;
- $label_data["cancle"] = 0;
- $label_data["all"] = 0;
- } else {
- $label_data["pay"] = 0;
- $label_data["out"] = 0;
- $label_data["end"] = 0;
- $label_data["cancle"] = 0;
- $label_data["all"] = 0;
- $ttt = 0;
- foreach ($res["data"][2] as $temp) {
- $ttt = $ttt + $temp["order_cnt"];
- switch ($temp["order_status"]) {
- case 145:
- $label_data["pay"] = $temp["order_cnt"];
- break;
- case 146:
- $label_data["out"] = $temp["order_cnt"];
- break;
- case 147:
- $label_data["end"] = $temp["order_cnt"];
- break;
- case 148:
- $label_data["cancle"] = $temp["order_cnt"];
- break;
- }
- }
- $label_data["all"] = $ttt;
- }
- $json["label"] = $label_data;
- return $json;
- }
- }
-
- /**
- * Des:将符合筛选条件的订单导出为Excel文件(.xls)
- * Name: exportOrder
- * @param $web_data
- * @return mixed
- * @author 温依莅
- */
- public function exportOrder($web_data)
- {
- //得到导出信息
- //单产品订单列表
- //hyk
- $time_limit = isset($web_data['time_limit']) ? trim($web_data['time_limit']) : false;
- $start_time = isset($web_data["start_time"]) ? trim($web_data["start_time"]) : false;
- $end_time = isset($web_data["end_time"]) ? trim($web_data["end_time"]) : false;
- $order_source = isset($web_data["order_source"]) ? trim($web_data["order_source"]) : false;
- $order_status = isset($web_data["order_status"]) ? trim($web_data["order_status"]) : false;
- $current_page = isset($web_data["current_page"]) ? trim($web_data["current_page"]) : false;
- $page_size = isset($web_data["page_size"]) ? trim($web_data["page_size"]) : false;
- $product_line = isset($web_data["product_line"]) ? trim($web_data["product_line"]) : false;
- $biller = isset($web_data["biller"]) ? trim($web_data["biller"]) : false;//添加计调员id
- $create_user_id = $biller;
- $user_id = $this->user_id;
- $line = isset($web_data["line"]) ? trim($web_data["line"]) : false;
- $more_search = isset($web_data["more_search"]) ? trim($web_data["more_search"]) : false;
- $search_type = isset($web_data["search_type"]) ? trim($web_data["search_type"]) : false;
- 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) {
- //参数不完整;
- $json["code"] = '2';
- $json["info"] = "缺少必要参数";
- return $json;
- }
- $sql = "CALL xm_order_get_list_xm(" . $user_id . "," . $create_user_id . "," . $time_limit . ",'" .
- $start_time . "','" . $end_time . "'," . $order_source . "," . $order_status . ",'"
- . $more_search . "'," . $current_page . "," . $page_size . ",'" . $line . "','',''," . $search_type . "," . $product_line . ")";
- //zzcsUtils::writeLog($sql);
- $res = $this->procQuery($sql);
- if ($res['code'] != 0) {
- //执行存储过程出错
- $json["code"] = $res['code'];
- $json["info"] = $res['info'];
- return $json;
- }
- //如果无订单信息,不导出,返回提示信息
- $list_ori = $res['data'][1];
- if (count($list_ori) == 0) {
- $json["code"] = '3';
- $json["info"] = '无订单信息';
- return $json;
- }
- //----excel导出信息
- require_once ROOT_PATH . '/ZZCS/Common/PHPExcel.php';
- //error_reporting(E_ALL);
- date_default_timezone_set('Asia/Shanghai');
- $objPHPExcel = new PHPExcel();
-
- $order_main_id_array = array();
-
- //处理存储过程返回的数据,得到前端页面数据
- foreach ($list_ori as $k => $v) {
- $order_main_id_array[] = $v['M_ID'];
- //预订产品信息
- $list_ori[$k]['line'] = $v['line'];
- $list_ori[$k]['start_station'] = $v['start_station'];
- $list_ori[$k]['end_station'] = $v['end_station'];
- $list_ori[$k]['children_num'] = 0;
- $list_ori[$k]['adults_num'] = 0;
- if (!$v['order_description']) {
- $seat_array_tmp = explode("×", $v['seat']);
- $passenger_num_all = $seat_array_tmp[1];
- $list_ori[$k]['adults_num'] = $passenger_num_all;
- $list_ori[$k]['real_passager_num'] = $v['real_passager_num'] == -1 ? $passenger_num_all : $v['real_passager_num'];
- $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'];
- } else {
- $temp_str = $v['order_description'];
- $temp_arr = explode('|', $temp_str, -1);
- $ticket_detail = '';
- $passenger_num_all = 0;
- foreach ($temp_arr as $k1 => $v1) {
- $arr = explode(',', $v1);
- $len = count($arr);
- $ticket_detail .= $arr[$len - 2] . '×' . end($arr) . ' ';
- $passenger_num_all += end($arr);
- if ($arr[$len - 2] == "儿童") {
- $list_ori[$k]['children_num'] += end($arr);
- } else {
- $list_ori[$k]['adults_num'] += end($arr);
- }
- }
- $list_ori[$k]['real_passager_num'] = $v['real_passager_num'] == -1 ? $passenger_num_all : $v['real_passager_num'];
- $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'];
- }
- //订单状态
- if ($v['order_status'] == '145') {
- $state_str = '待支付';
- } else if ($v['order_status'] == '146') {
- $state_str = '已出票';
- } else if ($v['order_status'] == '147') {
- $state_str = '已完成';
- } else {
- $state_str = '已取消';
- }
- $list_ori[$k]['state_str'] = $state_str;
- }
-
- $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 " .
- " 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 " .
- " WHERE o.parent_order_id IN(" . implode(",", $order_main_id_array) . ") " .
- " ORDER BY o.parent_order_id,o.run_date,o.run_time ";
- $sql_result = $this->query($sql);
- $order_bus_array = array();
- $order_bus_run_id = array();
- foreach ($sql_result as $sql_info) {
- $order_id = $sql_info["parent_order_id"];
- if (!isset($order_bus_array[$order_id])) {
- $order_bus_array[$order_id] = array();
- $order_bus_run_id[$order_id] = array();
- }
- if (in_array($sql_info["run_id"], $order_bus_run_id[$order_id])) {
- continue;
- }
- $order_bus_run_id[$order_id][] = $sql_info["run_id"];
- if ($sql_info["run_bus_order_id"] > 0) {
- $order_bus_array[$order_id][] = $sql_info;
- } else {
- $order_bus_array[$order_id][] = array("send_bus_no" => "", "send_driver_name" => "", "send_driver_mobile" => "", "send_tour_guide_name" => "", "send_tour_guide_mobile" => "");
- }
- }
-
-
- /*以下是一些设置 ,作者 ,标题之类*/
- $objPHPExcel->getProperties()->setCreator("出行")
- ->setLastModifiedBy("出行")
- ->setTitle("数据EXCEL导出")
- ->setSubject("数据EXCEL导出")
- ->setDescription("备份数据")
- ->setKeywords("excel")
- ->setCategory("result file");
- /*以下就是对处理Excel里的数据, 横着取数据*/
- //$data=array(array('uid'=>'1','email'=>'ceshi@163.com','password'=>'111111'),array('uid'=>'2','email'=>'uuu@126.com','password'=>'6666'));//测试数据
-
- $objPHPExcel->setActiveSheetIndex(0)
- //Excel的第A列,uid是你查出数组的键值,下面以此类推
- ->setCellValue('A1', '订单编号')
- ->setCellValue('B1', '下单时间')
- ->setCellValue('C1', '下单人账号')
- ->setCellValue('D1', '下单人姓名')
- ->setCellValue('E1', '订单渠道')
- ->setCellValue('F1', '渠道订单号')
- ->setCellValue('G1', '业务员')
- ->setCellValue('H1', '预订产品')
- ->setCellValue('I1', '成人数')
- ->setCellValue('J1', '儿童数')
- ->setCellValue('K1', '上车总人数')
- ->setCellValue('L1', '出发日期')
- ->setCellValue('M1', '出发时间')
- ->setCellValue('N1', '上车地点')
- ->setCellValue('O1', '下车地点')
- ->setCellValue('P1', '接驳车号')
- ->setCellValue('Q1', '接驳司机')
- ->setCellValue('R1', '接驳司机手机')
- ->setCellValue('S1', '接驳导游')
- ->setCellValue('T1', '接驳导游手机')
- ->setCellValue('U1', '联系人')
- ->setCellValue('V1', '联系电话')
- ->setCellValue('W1', '金额')
- ->setCellValue('X1', '代收金额')
- ->setCellValue('Y1', '状态')
- ->setCellValue('Z1', '订单备忘')
- ->setCellValue('AA1', '出团车号')
- ->setCellValue('AB1', '出团司机')
- ->setCellValue('AC1', '出团司机手机')
- ->setCellValue('AD1', '出团导游')
- ->setCellValue('AE1', '出团导游手机')
- ->setCellValue('AF1', '第二日出团车号')
- ->setCellValue('AG1', '第二日出团司机')
- ->setCellValue('AH1', '第二日出团司机手机')
- ->setCellValue('AI1', '第二日出团导游')
- ->setCellValue('AJ1', '第二日出团导游手机');
-
-
- foreach ($list_ori as $k => $v) {
- $send_bus_array = $order_bus_array[$v['M_ID']];
- $num = $k + 2;
- //$objPHPExcel->getActiveSheet(0)->getStyle('F'.$num)->getAlignment()->setWrapText(true);
- //$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(50);
- $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('K')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('L')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('M')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('N')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('O')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('P')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('Q')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('R')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('S')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('T')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('U')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('V')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('W')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('X')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('Y')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('Z')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('AA')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('AB')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('AC')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('AD')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('AE')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('AF')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('AG')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('AH')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('AI')->setAutoSize(true);
- $objPHPExcel->getActiveSheet()->getColumnDimension('AJ')->setAutoSize(true);
- $objPHPExcel->setActiveSheetIndex(0)
- //Excel的第A列,uid是你查出数组的键值,下面以此类推
- ->setCellValue('A' . $num, $v['M_ID'])
- ->setCellValue('B' . $num, $v['create_time'])
- ->setCellValue('C' . $num, $v['create_user_account'])
- ->setCellValue('D' . $num, $v['create_user_name'])
- ->setCellValue('E' . $num, $v['org_name'])
- ->setCellValue('F' . $num, $v['outside_order_no'])
- ->setCellValue('G' . $num, $v['sales_man_name'])
- ->setCellValue('H' . $num, $v['line'])
- ->setCellValue('I' . $num, $v['adults_num'])
- ->setCellValue('J' . $num, $v['children_num'])
- ->setCellValue('K' . $num, $v['real_passager_num'])
- ->setCellValue('L' . $num, substr($v['travel_time'], 0, 10))
- ->setCellValue('M' . $num, substr($v['travel_time'], 11))
- ->setCellValue('N' . $num, $v['start_station'])
- ->setCellValue('O' . $num, $v['end_station'])
- ->setCellValue('P' . $num, $send_bus_array[0]['send_bus_no'])
- ->setCellValue('Q' . $num, $send_bus_array[0]['send_driver_name'])
- ->setCellValue('R' . $num, $send_bus_array[0]['send_driver_mobile'])
- ->setCellValue('S' . $num, $send_bus_array[0]['send_tour_guide_name'])
- ->setCellValue('T' . $num, $send_bus_array[0]['send_tour_guide_mobile'])
- ->setCellValue('U' . $num, $v['contacts'])
- ->setCellValue('V' . $num, $v['tel'])
- ->setCellValue('W' . $num, $v['total_price'])
- ->setCellValue('X' . $num, $v['receive_value'])
- ->setCellValue('Y' . $num, $v['state_str'])
- ->setCellValue('Z' . $num, $v['remark'])
- ->setCellValue('AA' . $num, $send_bus_array[1]['send_bus_no'])
- ->setCellValue('AB' . $num, $send_bus_array[1]['send_driver_name'])
- ->setCellValue('AC' . $num, $send_bus_array[1]['send_driver_mobile'])
- ->setCellValue('AD' . $num, $send_bus_array[1]['send_tour_guide_name'])
- ->setCellValue('AE' . $num, $send_bus_array[1]['send_tour_guide_mobile'])
- ->setCellValue('AF' . $num, isset($send_bus_array[2]) && isset($send_bus_array[2]['send_bus_no']) ? $send_bus_array[2]['send_bus_no'] : "-")
- ->setCellValue('AG' . $num, isset($send_bus_array[2]) && isset($send_bus_array[2]['send_driver_name']) ? $send_bus_array[2]['send_driver_name'] : "-")
- ->setCellValue('AH' . $num, isset($send_bus_array[2]) && isset($send_bus_array[2]['send_driver_mobile']) ? $send_bus_array[2]['send_driver_mobile'] : "-")
- ->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'] : "-")
- ->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'] : "-");
- }
- $objPHPExcel->getActiveSheet()->setTitle('User');
- $objPHPExcel->setActiveSheetIndex(0);
- header('Content-Type: application/vnd.ms-excel');
- header('Content-Disposition: attachment;filename="' . date('Y-m-d') . '.xls"');
- header('Cache-Control: max-age=0');
- $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
-
- ob_start();
- $objWriter->save('php://output');
- $xlsData = ob_get_contents();
- ob_end_clean();
- $json["code"] = '0';
- $json["file"] = "data:application/vnd.ms-excel;base64," . base64_encode($xlsData);
- $json["file_name"] = date('Y-m-d') . '订单';
- return $json;
- }
-
- /**
- * Function Description:得到组合线路的天数
- * Function Name: getDayNum
- * @param $line_id
- *
- * @return mixed
- *
- * @author 温依莅
- */
- public function getDayNum($line_id)
- {
- if (!is_numeric($line_id + 0)) {
- return false;
- }
- $sql = "SELECT count(DISTINCT day_num) AS day FROM opera_line_group WHERE line_id=" . $line_id;
- $day = $this->query($sql);
- if (!$day) {
- return false;
- }
-
- return $day[0]['day'];
- }
-
- /**
- * Function Description:得到补单日期的接驳和直通车次信息【注意两日游情况】
- * Function Name: getDayNum
- * @param $param
- *
- * @return mixed
- *
- * @author 温依莅
- */
- public function getDayCar($param)
- {
- $valid = zzcsUtils::validateParams(
- array(
- 'run_date' => 'empty',
- 'line_id' => 'number'
- ), $param); //参数验证
- if (!$valid['status']) {
- $result['code'] = (string)$valid['status'];
- $result['info'] = $valid['info'];
- return $result;
- }
- $day = $this->getDayNum($param['line_id']);
- if (!$day) {
- $json["code"] = '5';
- $json["info"] = "获取线路天数失败";
- return $json;
- }
- $run_date = $param['run_date'];
- //判断日期格式正确
- $tmp_arr = explode('-', $run_date);
- $bool = checkdate($tmp_arr[1], $tmp_arr[2], $tmp_arr[0]);//判断日期是否是合法日期
- if (!$bool) {
- $json['code'] = '3';
- $json['info'] = '日期格式不正确';
- return $json;
- }
- $next_day = date('Y-m-d', strtotime('+1 day', strtotime($run_date)));
- //开始获取当日的接驳和直通车信息
- #接驳
- $sql1 = "select b.run_id,
- m.run_date,
- b.bus_order_id as run_bus_id,
- (b.SEAT_COUNT-b.SALED_COUNT) AS stock,
- b.send_bus_no,
- b.send_driver_name,
- b.send_tour_guide_name
- from run_bus b left join
- run_main m on b.run_id = m.run_id
- where m.run_date = '$run_date' and b.group_line_flag = 1 and b.cancel_flag = 0 and m.prod_id > 0
- and b.run_id in (
- 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)
- ) order by b.bus_order_id";
- $bus_info11 = $this->query($sql1);
- #直通
- $sql2 = "SELECT
- 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,
- d.run_date,
- b.send_bus_no,
- b.send_driver_name,
- b.send_tour_guide_name
- FROM
- order_main a,run_bus b,
- opera_line c,run_main d
- WHERE
- a.run_id = b.run_id
- AND a.PARENT_PROD_ID = c.line_id
- AND b.run_id = d.run_id
- AND d.prod_id = 0
- AND d.run_date = '$run_date'
- AND c.line_type = 255
- AND b.cancel_flag = 0
- group by b.bus_order_id
- 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);";
- $bus_info12 = $this->query($sql2);
- //两日游--需追加第二天的接驳和直通车次信息
- if ($day == 2) {
- #第二天的车次--接驳【第二日默认无接驳】
- /* $sql1 = "select b.run_id,
- b.bus_order_id as run_bus_id,
- (b.SEAT_COUNT-b.SALED_COUNT) AS stock,
- b.send_bus_no,
- b.send_driver_name,
- b.send_tour_guide_name
- from run_bus b left join
- run_main m on b.run_id = m.run_id
- where m.run_date = '$run_date' and b.group_line_flag = 1 and b.cancel_flag = 0 and m.prod_id > 0
- and b.run_id in (
- 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)
- ) order by b.bus_order_id";
- $bus_info21 = $this->query($sql1);*/
- #第二天的车次--直通
- $sql3 = "SELECT
- 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,
- d.run_date,
- b.send_bus_no,
- b.send_driver_name,
- b.send_tour_guide_name
- FROM
- order_main a,run_bus b,
- opera_line c,run_main d
- WHERE
- a.run_id = b.run_id
- AND a.PARENT_PROD_ID = c.line_id
- AND b.run_id = d.run_id
- AND d.prod_id = 0
- AND d.run_date = '$next_day'
- AND c.line_type = 255
- AND b.cancel_flag = 0
- group by b.bus_order_id
- 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);";
- $bus_info22 = $this->query($sql3);
- //一日游
- } else {
- //$bus_info21=array();
- $bus_info22 = array();
- }
- $data['bus11'] = $bus_info11;
- $data['bus12'] = $bus_info12;
- $data['bus22'] = $bus_info22;
-
-
- $json['code'] = '0';
- $json['info'] = '获取车次信息成功';
- $json['list'] = $data;
- return $json;
- }
-
- /**
- * Function Description:补单下单
- * Function Name: addExtraOrder
- * @param $param
- *
- * @return mixed
- *
- * @author 温依莅
- */
- public function addExtraOrder($param)
- {
- /* line_id:
- outside_sale_org_id:订单渠道
- outside_order_no:渠道订单号
- salesman:业务员
- start_date:出发日期
- start_station: 上车站点
- prod_list: 预定票种,格式为{票种ID,票种价格,预定数量}{票种ID,票种价格,预定数量}
- customer_info:联系人信息,格式为 {联系人,联系电话,备注}*/
-
- $valid = zzcsUtils::validateParams(
- array(
- 'line_id,org_id,start_date,seq_id,start_station,start_time,prod_list,customer_info,rec_list,count_num' => 'empty',
- 'receive_value' => 'amount'
- ), $param); //参数验证
- if (!$valid['status']) {
- $result['code'] = (string)$valid['status'];
- $result['info'] = $valid['info'];
- return $result;
- }
- $user_id = $this->user_id;
- $line_id = $param['line_id']; //线路编号
- $org_id = $param['org_id'];
- $order_no = isset($param['order_no']) ? $param['order_no'] : false;
- $salesman = isset($param['salesman']) ? $param['salesman'] : false;
- $start_date = $param['start_date'];
- $start_station = $param['start_station'];
- $prod_list = $param['prod_list'];
- $rec_list = $param['rec_list'];
- $receive_value = $param['receive_value'];
- $seq_id = $param['seq_id'];
- $start_time = $param['start_time'];
- $customer_info = $param['customer_info'];
- //####车次信息--需在下单后做相应数据处理
- $car_info = $param['car_info'];
- $count_num = $param['count_num'];
-
-
- //customer_info中,手机和联系人只要有1个信息就可以
- $tmp = substr($customer_info, 1, -1);
- $tmpArray = explode(',', $tmp);
- //前台传过来的顺序不能变 1、联系人 2、手机号 3、备注 4、后期添加的新字段
- if (trim($tmpArray[0]) == '' && !zzcsUtils::validate(trim($tmpArray[1]), 'tel')) {
-
- $customer_info = false;
- }
- if (zzcsUtils::validate(trim($tmpArray[1]), 'tel')) {
- $phone = $tmpArray[1];//手机号码
- $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};";
- $getCnt = $this->query($sql);
- if ($getCnt['0']['cnt'] >= 1) {
- $result['code'] = '2';
- $result['info'] = "同一手机号不可在一天内下多个同线路的订单!";
- return $result;
- }
- }
-
- $pay_type = 275;
- $time = date('Y-m-d H:i:s', time());
- 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) {
- $result['code'] = '2';
- $result['info'] = "缺少必要参数";
- return $result;
- }
- $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})";
- zzcsUtils::writeLog($sql);
- $res = $this->procQuery($sql);
- if ($res['code'] != 0) { //存储过程执行出错
- $json["code"] = (string)$res['code'];
- $json["info"] = $res['info'];
- return $json;
- }
- //查询成功后,修改该主订单的子订单信息(receive_value值)
- $rec_arr = explode('|', trim($rec_list, '|'));
- $update_rec_sql = '';
- foreach ($rec_arr as $k => $v) {
- $arr = explode(',', $v);
- $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]};";
- }
- zzcsUtils::writeLog($update_rec_sql);
- $res2 = $this->exec($update_rec_sql);
- if (false === $res2) {
- $json['code'] = '1';
- $json['info'] = '更改子订单失败';
- return $json;
- }
- //数据查询成功
- $json["code"] = '0';
- $json["info"] = '组合线路下单成功';
- $json["order_id"] = $res['data'][0][0]['order_id'];
-
-
- //##修改订单状态
- $update_status_sql = "UPDATE order_main
- SET update_user_id = " . $user_id . ",
- update_time = '" . $time . "',
- order_status = 146
- WHERE
- order_id = " . $json["order_id"] . "
- OR parent_order_id = " . $json["order_id"];
- zzcsUtils::writeLog($update_status_sql);
- $res3 = $this->exec($update_status_sql);
- if (false === $res3) {
- $json['code'] = '1';
- $json['info'] = '更改订单状态失败';
- return $json;
- }
- ####此处添加补单逻辑,对订单表order_main的run_id,bus_order_id 和run_bus的字段进行修改
- $update_bus_sql = '';
- foreach ($car_info as $k => $v) {
- #只有$v的run_id 和run_bus_id都不为0才更新数据
- if ($v['run_id'] == 0 || $v['run_bus_id'] == 0) {
- continue;
- }
- //以下更新订单班次和车次信息(run_id,run_bus_order_id),更新车次的已售座位数信息(saled_count,real_total_count)
- //当日接驳
- if ($k == 0) {
- //修改新增乘客巴士已售座位
- $update_bus_sql .= "UPDATE run_bus
- SET saled_count = (saled_count +" . $count_num . "),
- real_total_count = (real_total_count +" . $count_num . "),
- UPDATE_USER_ID=$user_id
- WHERE
- run_id = " . $v['run_id'] . "
- and bus_order_id=" . $v['run_bus_id'] . ";";
- //修改子订单以及车次号
- $update_bus_sql .= "update order_main
- set
- RUN_ID=" . $v['run_id'] . ",
- RUN_BUS_ORDER_ID=" . $v['run_bus_id'] . ",
- UPDATE_USER_ID=$user_id
- where
- parent_order_id in (" . $json["order_id"] . ")
- and run_date= '" . $v['run_date'] . "'
- and PARENT_PROD_ID in (select line_id from opera_line where line_type=256);";
-
- //当日直通
- } else if ($k == 1) {
- //修改新增乘客巴士已售座位
- $update_bus_sql .= "UPDATE run_bus
- SET saled_count = (saled_count +" . $count_num . "),
- real_total_count = (real_total_count +" . $count_num . "),
- UPDATE_USER_ID=$user_id
- WHERE
- run_id = " . $v['run_id'] . "
- and bus_order_id=" . $v['run_bus_id'] . ";";
- //修改子订单以及车次号
- $update_bus_sql .= "update order_main
- set
- RUN_ID=" . $v['run_id'] . ",
- RUN_BUS_ORDER_ID=" . $v['run_bus_id'] . ",
- UPDATE_USER_ID=$user_id
- where
- parent_order_id in (" . $json["order_id"] . ")
- and run_date= '" . $v['run_date'] . "'
- and PARENT_PROD_ID in (select line_id from opera_line where line_type=255);";
-
- //第二日直通
- } else {
- //修改新增乘客巴士已售座位
- $update_bus_sql .= "UPDATE run_bus
- SET saled_count = (saled_count +" . $count_num . "),
- real_total_count = (real_total_count +" . $count_num . "),
- UPDATE_USER_ID=$user_id
- WHERE
- run_id = " . $v['run_id'] . "
- and bus_order_id=" . $v['run_bus_id'] . ";";
- //修改子订单以及车次号
- $update_bus_sql .= "update order_main
- set
- RUN_ID=" . $v['run_id'] . ",
- RUN_BUS_ORDER_ID=" . $v['run_bus_id'] . ",
- UPDATE_USER_ID=$user_id
- where
- parent_order_id in (" . $json["order_id"] . ")
- and run_date= '" . $v['run_date'] . "'
- and PARENT_PROD_ID in (select line_id from opera_line where line_type=255);";
- }
- }
- zzcsUtils::writeLog($update_bus_sql);
- if ($update_bus_sql) {
- $res_bus = $this->exec($update_bus_sql);
- if (false === $res_bus) {
- $json['code'] = '1';
- $json['info'] = '更改车次信息失败';
- return $json;
- }
- }
-
- ####补单逻辑结束
- //获取拓展信息
- $expandParams = array(
- 'terrace' => empty($param['terrace']) ? '' : $param['terrace'],//上平台-即渠道商的子渠道
- 'tavern_stay' => empty($param['tavern_stay']) ? '' : $param['tavern_stay'],//入住酒店
- 'add_line_price' => empty($param['add_line_price']) ? '' : $param['add_line_price']//加线金额
- );
- $this->setOrderExpand($json["order_id"], $expandParams);//设置订单的拓展信息
- return $json;
- }
- }
|