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

215 line
12 KiB

  1. <?php
  2. function get_order_list( $pdo, $search_param ) {
  3. $sql_array = create_search_sql( $search_param );
  4. $search_sql = $sql_array[0];
  5. $count_sql = $sql_array[1];
  6. $count_sql2 = $sql_array[2];
  7. $sum_sql = $sql_array[3];
  8. $count_people_sql = $sql_array[4];
  9. $result=$pdo->query($search_sql);
  10. if( $result == false ) {
  11. return false;
  12. }
  13. $order_list = $result->fetchAll(PDO::FETCH_ASSOC);
  14. $result->closeCursor();
  15. $result=$pdo->query($count_sql);
  16. if( $result == false ) {
  17. $total_num = count($order_list);
  18. } else {
  19. $count_list = $result->fetchAll(PDO::FETCH_ASSOC);
  20. $total_num = $count_list[0]["total_num"];
  21. $result->closeCursor();
  22. }
  23. $result=$pdo->query($count_sql2);
  24. if( $result == false ) {
  25. $status_count = array( "status_all" => 0,"145" => 0, "146" => 0, "147" => 0, "148" => 0 );
  26. } else {
  27. $status_count = array( "status_all" => $total_num, "145" => 0, "146" => 0, "147" => 0, "148" => 0 );
  28. $count_list2 = $result->fetchAll(PDO::FETCH_ASSOC);
  29. $all_count = 0;
  30. foreach( $count_list2 as $count_info ) {
  31. $status_count[$count_info["order_status"]] = $count_info["total_num"];
  32. $all_count += $count_info["total_num"];
  33. }
  34. $status_count["status_all"] = $all_count;
  35. $result->closeCursor();
  36. }
  37. $result = $pdo->query($sum_sql);
  38. if($result == false ){
  39. return false;
  40. }else{
  41. $sum_gmv_list = $result->fetchAll(PDO::FETCH_ASSOC);
  42. $total_gmv = $sum_gmv_list[0]["total_gmv"];
  43. $result->closeCursor();
  44. }
  45. $result = $pdo->query($count_people_sql);
  46. if($result == false){
  47. return false;
  48. }else{
  49. $sum_people_list = $result->fetchAll(PDO::FETCH_ASSOC);
  50. $total_people = $sum_people_list[0]["total_people"];
  51. $result->closeCursor();
  52. }
  53. $return_array = array();
  54. $return_array["total_num"] = $total_num;
  55. $return_array["order_list"] = $order_list;
  56. $return_array["status_count"] = $status_count;
  57. $return_array["total_gmv"] = $total_gmv;
  58. $return_array["total_people"] = $total_people;
  59. return $return_array;
  60. }
  61. function get_export_order_list( $pdo, $search_param ) {
  62. $select_sql = create_export_sql( $search_param );
  63. $result=$pdo->query($select_sql);
  64. if( $result == false ) {
  65. return false;
  66. }
  67. $order_list = $result->fetchAll(PDO::FETCH_ASSOC);
  68. return $order_list;
  69. }
  70. function create_search_sql( $search_param ) {
  71. $base_where = get_base_where();
  72. $select_column = get_select_column();
  73. $extra_sql = get_where_sql( $search_param );
  74. $extra_sql2 = get_where_sql( $search_param, false );
  75. $limit_sql = get_limit_sql( $search_param );
  76. $search_sql = " SELECT ".$select_column.
  77. " FROM order_main as om ".
  78. " LEFT JOIN opera_line as line ON om.parent_prod_id = line.line_id ".
  79. " WHERE ".$base_where.$extra_sql.
  80. " GROUP BY om.parent_order_id ORDER BY om.create_time DESC ".$limit_sql;
  81. $count_sql = " SELECT count(distinct om.parent_order_id) as total_num ".
  82. " FROM order_main as om ".
  83. " LEFT JOIN opera_line as line ON om.parent_prod_id = line.line_id ".
  84. " WHERE ".$base_where.$extra_sql;
  85. $count_sql2 = " SELECT order_status,count(distinct om.parent_order_id) as total_num ".
  86. " FROM order_main as om ".
  87. " LEFT JOIN opera_line as line ON om.parent_prod_id = line.line_id ".
  88. " WHERE ".$base_where.$extra_sql2.
  89. " GROUP BY om.order_status ";
  90. $sum_sql = "SELECT SUM(om.order_price) as total_gmv".
  91. " FROM order_main as om ".
  92. " LEFT JOIN opera_line as line ON om.parent_prod_id = line.line_id ".
  93. " WHERE ".$base_where.$extra_sql;
  94. $count_people_sql = " SELECT count(*) as total_people ".
  95. " FROM order_main as om ".
  96. " LEFT JOIN opera_line as line ON om.parent_prod_id = line.line_id ".
  97. " WHERE ".$base_where.$extra_sql."AND PARENT_ORDER_ID <> 0";
  98. return array( $search_sql, $count_sql, $count_sql2 ,$sum_sql , $count_people_sql);
  99. }
  100. function create_export_sql( $search_param ) {
  101. $base_where = get_base_where();
  102. $select_column = get_export_column();
  103. $extra_sql = get_where_sql( $search_param );
  104. $search_sql = " SELECT ".$select_column.
  105. " FROM order_main as om ".
  106. " LEFT JOIN opera_line as line ON om.parent_prod_id = line.line_id ".
  107. " LEFT JOIN run_bus as r ON om.run_id = r.run_id and om.run_bus_order_id = r.bus_order_id and r.cancel_flag = 0 ".
  108. " LEFT JOIN order_pay_detail e on e.pay_main_id = om.order_pay_main_id and e.cancel_flag = 0 ".
  109. " WHERE ".$base_where.$extra_sql.
  110. " GROUP BY om.parent_order_id ORDER BY om.create_time DESC ";
  111. return $search_sql;
  112. }
  113. function get_select_column() {
  114. $select_column = " om.parent_order_id as M_ID, om.create_time as create_time, om.outside_sale_org_id as org_id,line.line_code,om.parent_prod_name as line,om.order_pay_main_id,om.principal_id as run_duty_id,".
  115. " om.prod_start_station_area_name as start_area,om.prod_end_station_area_name as end_area,om.prod_start_station_res_name as start_station,".
  116. " om.prod_end_station_res_name as end_station,om.prod_start_station_res_id as start_station_id,om.prod_end_station_res_id as end_station_id,".
  117. " concat(om.prod_start_station_date,' ',om.prod_start_station_time) as travel_time,om.prod_name as prod_name,om.run_bus_order_id as bus_order_id,".
  118. " om.parent_order_id as parent_orderNo,om.customer_name as contacts,om.customer_mobile as tel,om.customer_memo as remark,om.customer_address as customer_address,om.customer_id_no as idNo,".
  119. " om.order_status as order_status,om.order_pay_status as pay_status,om.outside_order_no as outside_order_no,om.run_id as run_id,om.prod_start_station_area_id as start_area_id,".
  120. " om.prod_end_station_area_id as end_area_id,om.order_book_status as book_status,om.order_title_id as order_title_id,line.line_type as bus_type,SUM(om.order_price) as order_price,".
  121. " count(om.order_id) as count,om.agent_level,om.source_main_corp_id,om.sub_channel_id,om.sub_channel_no, ".
  122. "(select GROUP_CONCAT(concat(cus_name,'*',cus_id_no)) from order_customer_info where order_parent_id =om.parent_order_id) as passenger_info";
  123. return $select_column;
  124. }
  125. function get_export_column() {
  126. $select_column = " om.create_user_id,om.parent_order_id as M_ID, om.create_time as create_time, om.outside_sale_org_id as org_id,line.line_code,om.parent_prod_name as line,om.order_pay_main_id,om.principal_id as run_duty_id,".
  127. " om.prod_start_station_area_name as start_area,om.prod_end_station_area_name as end_area,om.prod_start_station_res_name as start_station,om.customer_address,".
  128. " om.prod_end_station_res_name as end_station,om.prod_start_station_res_id as start_station_id,om.prod_end_station_res_id as end_station_id,om.if_gift,".
  129. " concat(om.prod_start_station_date,' ',om.prod_start_station_time) as travel_time,om.prod_name as prod_name,om.run_bus_order_id as bus_order_id,".
  130. " om.parent_order_id as parent_orderNo,om.customer_name as contacts,om.customer_mobile as tel,om.customer_memo as remark,om.customer_id_no as idNo,".
  131. " om.order_status as order_status,om.order_pay_status as pay_status,om.outside_order_no as outside_order_no,om.run_id as run_id,om.prod_start_station_area_id as start_area_id,".
  132. " om.prod_end_station_area_id as end_area_id,om.order_book_status as book_status,om.order_title_id as order_title_id,line.line_type as bus_type,om.order_price as order_price,SUM(om.order_price) as gmv,".
  133. " count(om.order_id) as count, SUM(om.base_price) as base_price, SUM(om.total_commission) as total_commission, om.run_date,om.prod_start_station_time,".
  134. " r.send_bus_res_id,r.send_bus_no,r.send_driver_name, r.send_driver_mobile,e.pay_type_id_1 as pay_type,om.run_time as bus_run_time,om.agent_level,om.source_main_corp_id,om.sub_channel_id,om.sub_channel_no,".
  135. "(select GROUP_CONCAT(concat(cus_name,'*',cus_id_no)) from order_customer_info where order_parent_id =om.parent_order_id) as passenger_info";
  136. return $select_column;
  137. }
  138. function get_base_where() {
  139. $base_where = " om.order_prod_type = 82 AND om.cancel_flag=0 AND om.parent_order_id > 0 ";
  140. return $base_where;
  141. }
  142. function get_where_sql( $search_param, $ignor_status = true ) {
  143. $where_array = array();
  144. if( isset($search_param['starttime']) && strlen($search_param['starttime']) > 0 ) {
  145. $where_array[] = (isset($search_param['timelimit']) && $search_param['timelimit'] == "下单时间" ) ? " om.create_time >= '{$search_param['starttime']} 00:00:00' " : " om.run_date >= '{$search_param['starttime']}' ";
  146. }
  147. if( isset($search_param['endtime']) && strlen($search_param['endtime']) > 0 ) {
  148. $where_array[] = (isset($search_param['timelimit']) && $search_param['timelimit'] == "下单时间" ) ? " om.create_time <= '{$search_param['endtime']} 23:59:59' " : " om.run_date <= '{$search_param['endtime']}' ";
  149. }
  150. if( isset($search_param['ordersource']) && $search_param['ordersource'] > 0 ) {
  151. $where_array[] = " om.outside_sale_org_id = {$search_param['ordersource']} ";
  152. }
  153. if( isset($search_param['orderstatus']) && $search_param['orderstatus'] > 0 && $ignor_status == true ) {
  154. $where_array[] = " om.order_status = {$search_param['orderstatus']} ";
  155. }
  156. if( isset($search_param['paystatus']) && $search_param['paystatus'] > 0 ) {
  157. $where_array[] = " om.order_pay_status = {$search_param['paystatus']} ";
  158. }
  159. if( isset($search_param['bus_type']) && $search_param['bus_type'] > 0 ) {
  160. $where_array[] = " line.line_type = {$search_param['bus_type']} ";
  161. }
  162. if( isset($search_param['line']) && strlen($search_param['line']) > 0 ) {
  163. $where_array[] = " ( om.parent_prod_name like \"%%{$search_param['line']}%%\" OR line.line_code like \"%%{$search_param['line']}%%\" ) ";
  164. }
  165. if( isset($search_param['start_area']) && strlen($search_param['start_area']) > 0 ) {
  166. $where_array[] = " om.prod_start_station_area_name like \"%%{$search_param['start_area']}%%\" ";
  167. }
  168. if( isset($search_param['end_area']) && strlen($search_param['end_area']) > 0 ) {
  169. $where_array[] = " om.prod_end_station_area_name like \"%%{$search_param['end_area']}%%\" ";
  170. }
  171. if( isset($search_param['moresearch']) && strlen($search_param['moresearch']) > 0 ) {
  172. $where_array[] = " ( om.outside_order_no like \"%%{$search_param['moresearch']}%%\" OR om.parent_order_id like \"%%{$search_param['moresearch']}%%\" OR om.outside_sale_org_id like \"%%{$search_param['moresearch']}%%\" OR om.customer_name like \"%%{$search_param['moresearch']}%%\" OR om.customer_mobile like \"%%{$search_param['moresearch']}%%\" ) ";
  173. }
  174. if( isset($search_param['run_time']) && strlen($search_param['run_time']) > 0 ) {
  175. $where_array[] = " om.run_time = '{$search_param['run_time']}' ";
  176. }
  177. if( isset($search_param['search_bus_no']) && strlen($search_param['search_bus_no']) > 0 ) {
  178. $where_array[] = " om.run_bus_order_id = {$search_param['search_bus_no']} ";
  179. }
  180. if( isset($search_param['main_corp_id']) && $search_param['main_corp_id'] > 0 ) {
  181. $where_array[] = " om.main_corp_id = {$search_param['main_corp_id']} ";
  182. }
  183. if( isset($search_param['run_duty']) && $search_param['run_duty'] >= 0 ) {
  184. $where_array[] = " om.principal_id = {$search_param['run_duty']} ";
  185. }
  186. return count($where_array) > 0 ? " AND ".implode( " AND ", $where_array ) : "";
  187. }
  188. function get_limit_sql( $search_param ) {
  189. $currpage = isset($search_param['currpage']) ? (empty($search_param['currpage']) ? 1 : $search_param['currpage']) : 1;
  190. $pagesize = isset($search_param['pagesize']) ? (empty($search_param['pagesize']) ? 10 : $search_param['pagesize']) : 10;
  191. $start_index = ($currpage-1)*$pagesize;
  192. $limit_sql = " LIMIT {$start_index}, {$pagesize}";
  193. return $limit_sql;
  194. }