user_id; $opera_org_id_sql = "select opera_org_id,main_corp_id from base_user where id = " . $user_id . " and cancel_flag = 0"; $opera_org_id_result = $this->query($opera_org_id_sql); $opera_org_id = $opera_org_id_result[0]['opera_org_id']; $main_corp_id = $opera_org_id_result[0]['main_corp_id']; $and_sql = ''; if ($opera_org_id != '') { $and_sql .= " and a.org_id in (" . $opera_org_id . ") "; } if($main_corp_id != 0){ $and_sql .= " and a.main_corp_id in (" . $main_corp_id . ") "; } #endregion $page_size = isset($param['page_size']) ? trim($param['page_size']) : false;//每页展示条数 $current_page = isset($param['current_page']) ? trim($param['current_page']) : false;//当前页 $line_code = isset($param['line_code']) ? (empty($param['line_code']) ? '' : trim($param['line_code'])) : false;//线路编码或名称 $start_area = isset($param['start_area']) ? (empty($param['start_area']) ? "''" : "'" . trim($param['start_area']) . "'") : false;//出发地 $end_area = isset($param['end_area']) ? (empty($param['end_area']) ? "''" : "'" . trim($param['end_area']) . "'") : false;//目的地 $run_date = isset($param['run_date']) ? (empty($param['run_date']) ? date('Y-m-d', time()) : trim($param['run_date'])) : false;//出发日期 $line_type = isset($param['line_type']) ? trim($param['line_type']) : false;//线路类型 $now_date = date('Y-m-d', time()); if (false===$line_code || false===$start_area || false===$end_area || false===$run_date || false===$line_type) { $json['code'] = '2'; $json['info'] = '缺少必要参数'; return $json; } $extra_sql = ""; if (isset($_COOKIE["opera_org_id"]) && mb_strlen($_COOKIE["opera_org_id"]) > 0) { $extra_sql = ' AND p.ORG_ID IN( ' . $_COOKIE["opera_org_id"] . ' ) '; } $search_line_sql = " and p.line_type = " . $line_type; if( $line_type == 255 ) { $search_line_sql = " and p.line_type IN (255,368)"; } $start_row = ($current_page - 1) * $page_size; $sql = "select a.run_id, a.prod_id, a.start_area_id, (select area_name from base_area where id = a.start_area_id LIMIT 1) as start_area_name, a.end_area_id, (select area_name from base_area where id = a.end_area_id LIMIT 1) as end_area_name, a.property, a.prod_name, a.run_date, if(INSTR(a.start_time,',')>0,concat(substring_index(a.start_time,',',1),'-',substring_index(a.start_time,',',-1)),a.start_time) as start_time, if(INSTR(a.end_time,',')>0,concat(substring_index(a.end_time,',',1),'-',substring_index(a.end_time,',',-1)),a.end_time) as end_time, (select type_name from dict_type where id = a.seat_type ) as seat, max(a.price) as price, (select min(total_count-saled_count) from run_stock where run_id = a.run_id and cancel_flag = 0 and seq_id >= a.start_order_id and seq_id < a.end_order_id and seat_type = a.seat_type) as stock from ( select distinct m.run_id, p.org_id, p.main_corp_id, p.line_id as prod_id, p.line_code as property, p.line_name as prod_name, m.run_date, r.start_station_area_id as start_area_id, r.end_station_area_id as end_area_id, r.seat_type, (select min(station_order_id) from run_station where run_id = m.run_id and area_id = r.start_station_area_id) as start_order_id, (select max(station_order_id) from run_station where run_id = m.run_id and area_id = r.end_station_area_id) as end_order_id, (select group_concat(distinct start_time) from run_station where run_id = m.run_id and area_id = r.start_station_area_id ) as start_time, (select group_concat(distinct start_time) from run_station where run_id = m.run_id and area_id = r.end_station_area_id ) as end_time, (select max(cus_price) from opera_tickets where ticket_id = r.prod_id and cancel_flag = 0) as price from opera_line p, run_main m, run_prod r where p.line_id = m.prod_id and m.run_id = r.run_id and p.line_id = r.parent_prod_id {$search_line_sql} and p.cancel_flag = 0 and p.is_onsale = 1 and p.if_disabled = 0 and r.cancel_flag = 0" . $extra_sql . " and m.run_status not in(137,142) and m.run_date = '" . $run_date . "' and IF('" . $line_code . "'='',0=0,(p.line_name LIKE CONCAT('%','" . $line_code . "','%') OR p.line_code LIKE CONCAT('%','" . $line_code . "','%'))) and r.start_station_area_id in (select id from base_area where cancel_flag = 0 and area_name like CONCAT('%'," . $start_area . ",'%')) and r.end_station_area_id in (select id from base_area where cancel_flag = 0 and area_name like CONCAT('%'," . $end_area . ",'%')) ) a where 0=0 " . $and_sql . " group by a.prod_id,a.start_area_id,a.end_area_id,a.run_date,a.start_time,a.end_time,a.seat_type LIMIT " . $start_row . "," . $page_size; /*原where条件 where p.line_id = m.prod_id and m.run_id = r.run_id and p.line_id = r.parent_prod_id and p.line_type = " . $line_type . " and p.cancel_flag = 0 and p.is_onsale = 1 and p.if_disabled = 0 and r.cancel_flag = 0" . $extra_sql . " and m.run_status = 138 and m.run_date >= '" . $now_date . "' and m.run_date = '" . $run_date . "' and case p.sale_expired_type when 321 then if(date_add(date_add(m.run_date,interval -1 day), interval (substring_index(p.sale_expired_time,':',1)*60 + substring_index(p.sale_expired_time,':',-1)) minute) > now(),0=0,0=1) when 322 then if(date_add(m.run_date, interval m.run_minutes -(substring_index(p.sale_expired_time,':',1)*60 + substring_index(p.sale_expired_time,':',-1)) minute)>= now(),0=0,0=1) else 0=0 end and IF('" . $line_code . "'='',0=0,(p.line_name LIKE CONCAT('%','" . $line_code . "','%') OR p.line_code LIKE CONCAT('%','" . $line_code . "','%'))) and r.start_station_area_id in (select id from base_area where cancel_flag = 0 and area_name like CONCAT('%'," . $start_area . ",'%')) and r.end_station_area_id in (select id from base_area where cancel_flag = 0 and area_name like CONCAT('%'," . $end_area . ",'%')) ) a */ $product_list = $this->query($sql); if (count($product_list) == 0) { $json['code'] = '0'; $json['info'] = '没有符合的线路'; $json['product_list'] = array(); $json['page']['page_size'] = $page_size; $json['page']['current_page'] = "0"; $json['page']['total_count'] = "0"; $json['page']['total_page'] = "0"; return $json; } foreach ($product_list as $k => $v) { if (!$v['price']) { $product_list[$k]['price'] = '0.00'; } if ($v['stock'] < 0) { $product_list[$k]['stock'] = 0; } if ($v['stock'] > 20) { $product_list[$k]['stock'] = '充足'; } } $count_sql = "select count(run_id) as total_count from (select run_id from ( select distinct m.run_id, p.line_id as prod_id, r.start_station_area_id as start_area_id, r.end_station_area_id as end_area_id, r.seat_type, (select group_concat(distinct start_time) from run_station where run_id = m.run_id and area_id = r.start_station_area_id ) as start_time, (select group_concat(distinct start_time) from run_station where run_id = m.run_id and area_id = r.end_station_area_id ) as end_time from opera_line p, run_main m, run_prod r where p.line_id = m.prod_id and m.run_id = r.run_id and p.line_id = r.parent_prod_id {$search_line_sql} and p.cancel_flag = 0 and r.cancel_flag = 0 and p.is_onsale = 1 and p.if_disabled = 0 and m.run_status not in(137,142) and m.run_date = '" . $run_date . "' and IF('" . $line_code . "'='',0=0,(p.line_name LIKE CONCAT('%','" . $line_code . "','%') OR p.line_code LIKE CONCAT('%','" . $line_code . "','%'))) and r.start_station_area_id in (select id from base_area where cancel_flag = 0 and area_name like CONCAT('%'," . $start_area . ",'%')) and r.end_station_area_id in (select id from base_area where cancel_flag = 0 and area_name like CONCAT('%'," . $end_area . ",'%')) ) a group by a.prod_id,a.start_area_id,a.end_area_id,a.start_time,a.end_time,a.seat_type) as b"; $total_count = $this->query($count_sql); $total_count = $total_count[0]['total_count']; $total_page = ceil($total_count / $page_size); $json['code'] = '0'; $json['info'] = '返回产品列表'; $json['product_list'] = $product_list; $json['page']['page_size'] = $page_size; $json['page']['current_page'] = $current_page; $json['page']['total_count'] = $total_count; $json['page']['total_page'] = $total_page; return $json; } /** * 获取巴士线路产品基础配置 */ public function getProductListBase($param) { $line_type = isset($param['line_type']) ? trim($param['line_type']) : false;//线路类型 if (!$line_type) { $json['code'] = '2'; $json['info'] = '缺少必要参数'; return $json; } $sql = "SELECT area_id, inout_type, (select area_name from base_area where id = area_id LIMIT 1) as area_name FROM opera_line AS l LEFT JOIN opera_station AS s ON l.line_id = s.line_id WHERE l.cancel_flag = 0 AND l.if_disabled = 0 AND l.is_onsale = 1 AND s.cancel_flag = 0 AND l.line_type = " . $line_type . " GROUP BY area_id,inout_type"; $area_list = $this->query($sql); foreach ($area_list as $k => $v) { if ($v['inout_type'] == 108 || $v['inout_type'] == 108) { $area_one['id'] = $v['area_id']; $area_one['name'] = $v['area_name']; $start_area[$v['area_id']] = $area_one; } if ($v['inout_type'] == 109 || $v['inout_type'] == 110) { $area_one['id'] = $v['area_id']; $area_one['name'] = $v['area_name']; $end_area[$v['area_id']] = $area_one; } } $json['code'] = '0'; $json['info'] = '返回可选地点列表成功'; $json['start_area'] = array_merge($start_area); $json['end_area'] = array_merge($end_area); return $json; } /** * 获取组合线路产品线 * @return mixed */ function groupProductHeadInfo() { //得到产品线 $res = $this->productLine(); if ($res) { //无信息 $json["code"] = '0'; $json["info"] = '产品线返回'; $json["product_line"] = $res; return $json; } else { $json["code"] = '1'; $json["info"] = '数据库异常'; return $json; } } /** * hyk * 组合线路产品列表 * @param $web_data * @return array */ function groupProductList($web_data) { //hyk //组合线路产品列表 $run_date = isset($web_data["run_date"]) ? trim($web_data["run_date"]) : 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_type = isset($web_data['product_type']) ? trim($web_data['product_type']) : false; $line = isset($web_data['line']) ? trim($web_data['line']) : false; if ($product_type === false || $current_page === false || $page_size === false || $run_date === false || $product_type === false || $line === false) { //参数不完整; $json["code"] = '2'; $json["info"] = "缺少必要参数"; return $json; } if (empty($product_type)) { $product_type = 0; } $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"] = '组合产品列表'; $json['page'] = array( 'current_page' => $reset['data'][0][0]["currpage"], 'total_page' => $reset['data'][0][0]["total_page"], 'total_count' => $reset['data'][0][0]["total"], 'page_size' => $reset['data'][0][0]["page_size"] ); if (isset($reset['data'][1])) { $json["product_list"] = $reset['data'][1]; } else { $json["product_list"] = array(); } return $json; } } } ?>