['title' => '每月新增用户', 'url' => url('index', ['status' => '0'])], '1' => ['title' => '用户地区排行', 'url' => url('index', ['status' => '1'])], '2' => ['title' => '用户订单排行', 'url' => url('index', ['status' => '2'])], ]; $user_count=db('users')->count('id'); $year=date('Y'); $month=date('m'); $st=strtotime($year.'-'.$month.'-01 00:00:00'); if($month=='12'){ $en_year=$year+1; $en_month=1; }else{ $en_year=$year; $en_month=$month+1; } $en=strtotime($en_year.'-'.$en_month.'-01 00:00:00')-1; $user_month_count=db('users')->where('created_at','between',$st.','.$en)->count('id'); $tips="当前总用户数量:{$user_count}人,本月新增用户:{$user_month_count}人。"; switch ($status) { case '0': $request_url=$_SERVER["REQUEST_URI"]; $url_arr=parse_url($request_url); if(isset($url_arr['query'])){ parse_str($url_arr['query'], $query_arr); if(isset($query_arr['status']) && $query_arr['status']==0){ $pix=true; }else{ $pix=false; } }else{ $pix=false; } $map = $this->getMap(); if (empty($map) || (!isset($map['year']) && !isset($map['month']))) { if($pix){ $s_year=2018; $s_month=1; }else{ $s_year=$year; $s_month=$month; } }elseif(!isset($map['year']) && isset($map['month'])){ $s_year=2018; $s_month=$map['month']; }elseif(!isset($map['month']) && isset($map['year'])){ $s_year=$map['year']; $s_month=1; }else{ $s_year=$map['year']; $s_month=$map['month']; } if($s_month=='12'){ $en_year=$s_year+1; $en_month=1; }else{ $en_year=$s_year; $en_month=$s_month+1; } $st=strtotime($s_year.'-'.$s_month.'-01 00:00:00'); $en=strtotime($en_year.'-'.$en_month.'-01 00:00:00')-1; $for=ceil(($en-$st)/(24*60*60)); $data_list=[]; for ($i=1; $i <= $for; $i++) { $st_d=strtotime($s_year.'-'.$s_month.'-'.$i.' 00:00:00'); $en_d=strtotime($s_year.'-'.$s_month.'-'.$i.' 23:59:59'); $data_list[]=[ 'day'=>'第'.$i.'日', 'count'=>db('users')->where('created_at','between',$st_d.','.$en_d)->count('id') ]; } session('user_add_excel_year',$s_year); session('user_add_excel_month',$s_month); session('user_add_excel_data',$data_list); $months=['2'=>'二月','3'=>'三月','4'=>'四月','5'=>'五月','6'=>'六月','7'=>'七月','8'=>'八月','9'=>'九月','10'=>'十月','11'=>'十一月','12'=>'十二月']; $years=[]; for ($i=2019; $i <= 2118; $i++) { $years[$i]=$i.'年'; } return ZBuilder::make('table') ->setPageTitle('') // 设置页面标题 ->setPageTips($tips) // 设置页面提示信息 ->setTabNav($list_tab, $status)//分组 ->hideCheckbox() //隐藏第一列多选框 ->addTopSelect('year', '2018年', $years, $year) //添加顶部下拉筛选 ->addTopSelect('month', '一月', $months, $month) //添加顶部下拉筛选 ->addColumns([ ['day', '第几日'], ['count', '新增用户数'], ]) //添加多列数据 ->addTopButton('custom',['title'=>'导出excel文件','href'=>url('excel',['status'=>0])]) ->setRowList($data_list) // 设置表格数据 ->fetch(); break; case '1': $map = $this->getMap(); session('user_region_rank_excel_map',$map); if(isset($map['created_at'][0]) && isset($map['created_at'][1]) && $map['created_at'][0]=='between time'){ $where=" WHERE created_at<=".strtotime($map['created_at'][1][1])." && created_at>=".strtotime($map['created_at'][1][0]); }else{ $where=""; } $data=Db::query("SELECT area_id,COUNT(id) AS counts from ".config('database.prefix')."users {$where} GROUP BY area_id ORDER BY counts DESC LIMIT 100"); $data_list=[]; foreach ($data as $key => $value) { $area=db('regions')->where('id',$value['area_id'])->find(); $city=db('regions')->where('id',$area['parent_id'])->find(); $province=db('regions')->where('id',$city['parent_id'])->find(); $region=$province['name'].' '.$city['name'].' '.$area['name']; if($key==0){ $rank=$key+1; }else{ if($value['counts']!=$data[$key-1]['counts']){ $rank=$key+1; } } $data_list[]=['rank'=>$rank,'region'=>$region,'counts'=>$value['counts']]; } session('user_region_rank_excel_data',$data_list); return ZBuilder::make('table') ->setPageTitle('') // 设置页面标题 ->setPageTips($tips) // 设置页面提示信息 ->setTabNav($list_tab, $status)//分组 ->hideCheckbox() //隐藏第一列多选框 ->addTimeFilter('created_at') // 添加时间段筛选 ->addColumns([ ['rank', '排名'], ['region', '地区'], ['counts', '数量'], ]) //添加多列数据 ->addTopButton('custom',['title'=>'导出excel文件','href'=>url('excel',['status'=>1])]) ->setRowList($data_list) // 设置表格数据 ->fetch(); break; case '2': $map = $this->getMap(); session('user_order_rank_excel_map',$map); if(isset($map['created_at'][0]) && isset($map['created_at'][1]) && $map['created_at'][0]=='between time'){ $where=" WHERE created_at<=".strtotime($map['created_at'][1][1])." && created_at>=".strtotime($map['created_at'][1][0])." && state=1"; }else{ $where=" WHERE state=1"; } $data=Db::query("SELECT user_id,SUM(pay_amount) AS sums from ".config('database.prefix')."trades{$where} GROUP BY user_id ORDER BY sums DESC LIMIT 100"); $data_list=[]; foreach ($data as $key => $value) { if($key==0){ $rank=$key+1; }else{ if($value['sums']!=$data[$key-1]['sums']){ $rank=$key+1; } } $pix=['rank'=>$rank]; $user=db('users')->where('id',$value['user_id'])->find(); if($user){ $pix['name']=$user['name']; $pix['mobile']=$user['mobile']; }else{ $pix['name']=''; $pix['mobile']=''; } $pix['sums']=$value['sums']; $count1=db('orders')->where('user_id',$value['user_id'])->where('state','in','1,3,4,5,8')->where('refund_state','in','-1,0,1,2,3,6,9,10,11')->count('id'); $count2=db('collage_orders')->where('user_id',$value['user_id'])->where('state','in','1,4')->count('id'); $pix['order_counts']=$count1+$count2; $sum1=db('orders a')->join('order_products b','a.id=b.order_id','LEFT')->where('a.user_id',$value['user_id'])->where('a.state','in','1,3,4,5,8')->where('a.refund_state','in','-1,0,1,2,3,6,9,10,11')->sum('b.num'); $sum2=db('collage_orders')->where('user_id',$value['user_id'])->where('state','in','1,4')->sum('num'); $pix['product_sums']=$sum1+$sum2; $data_list[]=$pix; } session('user_order_rank_excel_data',$data_list); return ZBuilder::make('table') ->setPageTitle('') // 设置页面标题 ->setPageTips($tips) // 设置页面提示信息 ->setTabNav($list_tab, $status)//分组 ->hideCheckbox() //隐藏第一列多选框 ->addTimeFilter('created_at') // 添加时间段筛选 ->addColumns([ ['rank', '排名'], ['name', '用户名'], ['mobile', '联系电话'], ['sums', '订单总金额'], ['order_counts', '订单总数量'], ['product_sums', '包含商品总数量'], ]) //添加多列数据 ->addTopButton('custom',['title'=>'导出excel文件','href'=>url('excel',['status'=>2])]) ->setRowList($data_list) // 设置表格数据 ->fetch(); break; default: break; } } public function excel($status){ switch ($status) { case '0': $header = array( '第几日'=>'string',//text '新增用户数'=>'string',//text ); $data_list = session('user_add_excel_data'); $year=session('user_add_excel_year'); $month=session('user_add_excel_month'); $file_name = $year.'年'.$month.'月每日新增用户数量-'.mt_rand(1000,9999).'.xlsx'; //下载文件名 $file_dir = "excels/users/adds/"; //下载文件存放目录 do_rmdir($file_dir,false);//先清空文件夹 break; case '1': $header = array( '排名'=>'string',//text '地区'=>'string',//text '数量'=>'string',//text ); $map = session('user_region_rank_excel_map'); if(isset($map['created_at'][0]) && isset($map['created_at'][1]) && $map['created_at'][0]=='between time'){ $date='('.explode(' ',$map['created_at'][1][0])[0].'至'.explode(' ',$map['created_at'][1][1])[0].')-'; }else{ $date=''; } $data_list = session('user_region_rank_excel_data'); $file_name = '用户地区排行-'.$date.mt_rand(1000,9999).'.xlsx'; //下载文件名 $file_dir = "excels/users/regions/ranks/"; //下载文件存放目录 do_rmdir($file_dir,false);//先清空文件夹 break; case '2': $header = array( '排名'=>'string',//text '用户名'=>'string',//text '联系电话'=>'string',//text '订单总金额'=>'string',//text '订单总数量'=>'string',//text '包含商品总数量'=>'string',//text ); $map = session('user_order_rank_excel_map'); if(isset($map['created_at'][0]) && isset($map['created_at'][1]) && $map['created_at'][0]=='between time'){ $date='('.explode(' ',$map['created_at'][1][0])[0].'至'.explode(' ',$map['created_at'][1][1])[0].')-'; }else{ $date=''; } $data_list = session('user_order_rank_excel_data'); $file_name = '用户订单排行-'.$date.mt_rand(1000,9999).'.xlsx'; //下载文件名 $file_dir = "excels/users/regions/ranks/"; //下载文件存放目录 do_rmdir($file_dir,false);//先清空文件夹 break; default: $this->error('请求错误'); break; } $rows = $data_list; import('PHP_XLSXWriter-master.xlsxwriter', EXTEND_PATH,'.class.php'); $writer = new \XLSXWriter(); $writer->writeSheetHeader('Sheet1', $header); foreach($rows as $row){ $row=array_values($row); $writer->writeSheetRow('Sheet1', $row); } $writer->writeToFile($file_dir.$file_name); //检查文件是否存在 if (! file_exists ( $file_dir . $file_name )) { $this->error('文件未生成成功,请重试'); } else { header('Location:'.config('mall.public_url').$file_dir.$file_name); die; } } public function supplier($status='0'){ $list_tab = [ '0' => ['title' => '交易额排行', 'url' => url('supplier', ['status' => '0'])], '1' => ['title' => '订单数量排行', 'url' => url('supplier', ['status' => '1'])], '2' => ['title' => '交易商品数量排行', 'url' => url('supplier', ['status' => '2'])], ]; switch ($status) { case '0': return ZBuilder::make('table') ->setPageTitle('') // 设置页面标题 ->setPageTips('') // 设置页面提示信息 ->setTabNav($list_tab, $status)//分组 ->hideCheckbox() //隐藏第一列多选框 ->addTimeFilter('created_at') // 添加时间段筛选 /*->addColumns([ ['rank', '排名'], ['name', '供应商'], ['counts', '订单数量'], ]) //添加多列数据*/ ->addTopButton('custom',['title'=>'导出excel文件','href'=>url('excelsupplier',['status'=>0])]) //->setRowList($data_list) // 设置表格数据 ->fetch(); break; case '1': $map = $this->getMap(); session('supplier_order_rank_excel_map',$map); if(isset($map['created_at'][0]) && isset($map['created_at'][1]) && $map['created_at'][0]=='between time'){ $where=" WHERE a.created_at<=".strtotime($map['created_at'][1][1])." && a.created_at>=".strtotime($map['created_at'][1][0])." && a.state in (1,3,4,5,8) && a.refund_state in (-1,0,1,2,3,6,9,10,11) && a.is_purchase=1 && a.supplier_product_state=1"; }else{ $where=" WHERE a.state in (1,3,4,5,8) && a.refund_state in (-1,0,1,2,3,6,9,10,11) && a.is_purchase=1 && a.supplier_product_state=1"; } $data=Db::query("SELECT b.name,COUNT(a.id) AS counts from ".config('database.prefix')."orders a LEFT JOIN ".config('database.prefix')."suppliers b ON a.supplier_id=b.id{$where} GROUP BY a.supplier_id ORDER BY counts DESC LIMIT 100"); $data_list=[]; foreach ($data as $key => $value) { if($key==0){ $rank=$key+1; }else{ if($value['counts']!=$data[$key-1]['counts']){ $rank=$key+1; } } $data_list[]=['rank'=>$rank,'name'=>$value['name'],'counts'=>$value['counts']]; } session('supplier_order_rank_excel_data',$data_list); return ZBuilder::make('table') ->setPageTitle('') // 设置页面标题 ->setPageTips('') // 设置页面提示信息 ->setTabNav($list_tab, $status)//分组 ->hideCheckbox() //隐藏第一列多选框 ->addTimeFilter('created_at') // 添加时间段筛选 ->addColumns([ ['rank', '排名'], ['name', '供应商'], ['counts', '订单数量'], ]) //添加多列数据 ->addTopButton('custom',['title'=>'导出excel文件','href'=>url('excelsupplier',['status'=>1])]) ->setRowList($data_list) // 设置表格数据 ->fetch(); break; case '2': $map = $this->getMap(); session('supplier_product_rank_excel_map',$map); if(isset($map['created_at'][0]) && isset($map['created_at'][1]) && $map['created_at'][0]=='between time'){ $where=" WHERE a.created_at<=".strtotime($map['created_at'][1][1])." && a.created_at>=".strtotime($map['created_at'][1][0])." && a.state in (1,3,4,5,8) && a.refund_state in (-1,0,1,2,3,6,9,10,11) && a.is_purchase=1 && a.supplier_product_state=1"; }else{ $where=" WHERE a.state in (1,3,4,5,8) && a.refund_state in (-1,0,1,2,3,6,9,10,11) && a.is_purchase=1 && a.supplier_product_state=1"; } $data=Db::query("SELECT b.name,SUM(c.num) AS nums from ".config('database.prefix')."orders a LEFT JOIN ".config('database.prefix')."suppliers b ON a.supplier_id=b.id LEFT JOIN ".config('database.prefix')."order_products c ON a.id=c.order_id{$where} GROUP BY a.supplier_id ORDER BY nums DESC LIMIT 100"); $data_list=[]; foreach ($data as $key => $value) { if($key==0){ $rank=$key+1; }else{ if($value['nums']!=$data[$key-1]['nums']){ $rank=$key+1; } } $data_list[]=['rank'=>$rank,'name'=>$value['name'],'nums'=>$value['nums']]; } session('supplier_product_rank_excel_data',$data_list); return ZBuilder::make('table') ->setPageTitle('') // 设置页面标题 ->setPageTips('') // 设置页面提示信息 ->setTabNav($list_tab, $status)//分组 ->hideCheckbox() //隐藏第一列多选框 ->addTimeFilter('created_at') // 添加时间段筛选 ->addColumns([ ['rank', '排名'], ['name', '供应商'], ['nums', '交易商品数量'], ]) //添加多列数据 ->addTopButton('custom',['title'=>'导出excel文件','href'=>url('excelsupplier',['status'=>2])]) ->setRowList($data_list) // 设置表格数据 ->fetch(); break; default: break; } } public function excelsupplier($status){ switch ($status) { case '0': break; case '1': $header = array( '排名'=>'string',//text '供应商'=>'string',//text '订单数量'=>'string',//text ); $map = session('supplier_order_rank_excel_map'); if(isset($map['created_at'][0]) && isset($map['created_at'][1]) && $map['created_at'][0]=='between time'){ $date='('.explode(' ',$map['created_at'][1][0])[0].'至'.explode(' ',$map['created_at'][1][1])[0].')-'; }else{ $date=''; } $data_list=session('supplier_order_rank_excel_data'); $file_name = '供应商订单数量排行-'.$date.mt_rand(1000,9999).'.xlsx'; //下载文件名 $file_dir = "excels/suppliers/orders/ranks/"; //下载文件存放目录 do_rmdir($file_dir,false);//先清空文件夹 break; case '2': $header = array( '排名'=>'string',//text '供应商'=>'string',//text '交易商品数量'=>'string',//text ); $map = session('supplier_product_rank_excel_map'); if(isset($map['created_at'][0]) && isset($map['created_at'][1]) && $map['created_at'][0]=='between time'){ $date='('.explode(' ',$map['created_at'][1][0])[0].'至'.explode(' ',$map['created_at'][1][1])[0].')-'; }else{ $date=''; } $data_list=session('supplier_product_rank_excel_data'); $file_name = '供应商交易商品数量排行-'.$date.mt_rand(1000,9999).'.xlsx'; //下载文件名 $file_dir = "excels/suppliers/products/ranks/"; //下载文件存放目录 do_rmdir($file_dir,false);//先清空文件夹 break; default: $this->error('请求错误'); break; } $rows = $data_list; import('PHP_XLSXWriter-master.xlsxwriter', EXTEND_PATH,'.class.php'); $writer = new \XLSXWriter(); $writer->writeSheetHeader('Sheet1', $header); foreach($rows as $row){ $row=array_values($row); $writer->writeSheetRow('Sheet1', $row); } $writer->writeToFile($file_dir.$file_name); //检查文件是否存在 if (! file_exists ( $file_dir . $file_name )) { $this->error('文件未生成成功,请重试'); } else { header('Location:'.config('mall.public_url').$file_dir.$file_name); die; } } public function trade($status='0'){ $list_tab = [ '0' => ['title' => '每月商城交易额', 'url' => url('trade', ['status' => '0'])], '1' => ['title' => '每月地区交易数据排行', 'url' => url('trade', ['status' => '1'])], ]; $year=date('Y'); $month=date('m'); $st=strtotime($year.'-'.$month.'-01 00:00:00'); if($month=='12'){ $en_year=$year+1; $en_month=1; }else{ $en_year=$year; $en_month=$month+1; } $en=strtotime($en_year.'-'.$en_month.'-01 00:00:00')-1; $platform_water_count=db('platform_waters')->where('created_at','between',$st.','.$en)->sum('amount'); $tips="本月商城交易额:{$platform_water_count}元。"; switch ($status) { case '0': $request_url=$_SERVER["REQUEST_URI"]; $url_arr=parse_url($request_url); if(isset($url_arr['query'])){ parse_str($url_arr['query'], $query_arr); if(isset($query_arr['status']) && $query_arr['status']==0){ $pix=true; }else{ $pix=false; } }else{ $pix=false; } $map = $this->getMap(); if (empty($map) || (!isset($map['year']) && !isset($map['month']))) { if($pix){ $s_year=2018; $s_month=1; }else{ $s_year=$year; $s_month=$month; } }elseif(!isset($map['year']) && isset($map['month'])){ $s_year=2018; $s_month=$map['month']; }elseif(!isset($map['month']) && isset($map['year'])){ $s_year=$map['year']; $s_month=1; }else{ $s_year=$map['year']; $s_month=$map['month']; } if($s_month=='12'){ $en_year=$s_year+1; $en_month=1; }else{ $en_year=$s_year; $en_month=$s_month+1; } $st=strtotime($s_year.'-'.$s_month.'-01 00:00:00'); $en=strtotime($en_year.'-'.$en_month.'-01 00:00:00')-1; $for=ceil(($en-$st)/(24*60*60)); $data_list=[]; for ($i=1; $i <= $for; $i++) { $st_d=strtotime($s_year.'-'.$s_month.'-'.$i.' 00:00:00'); $en_d=strtotime($s_year.'-'.$s_month.'-'.$i.' 23:59:59'); $data_list[]=[ 'day'=>'第'.$i.'日', 'sum'=>db('platform_waters')->where('created_at','between',$st_d.','.$en_d)->sum('amount') ]; } session('platform_water_excel_year',$s_year); session('platform_water_excel_month',$s_month); session('platform_water_excel_data',$data_list); $months=['2'=>'二月','3'=>'三月','4'=>'四月','5'=>'五月','6'=>'六月','7'=>'七月','8'=>'八月','9'=>'九月','10'=>'十月','11'=>'十一月','12'=>'十二月']; $years=[]; for ($i=2019; $i <= 2118; $i++) { $years[$i]=$i.'年'; } return ZBuilder::make('table') ->setPageTitle('') // 设置页面标题 ->setPageTips($tips) // 设置页面提示信息 ->setTabNav($list_tab, $status)//分组 ->hideCheckbox() //隐藏第一列多选框 ->addTopSelect('year', '2018年', $years, $year) //添加顶部下拉筛选 ->addTopSelect('month', '一月', $months, $month) //添加顶部下拉筛选 ->addColumns([ ['day', '第几日'], ['sum', '交易额'], ]) //添加多列数据 ->addTopButton('custom',['title'=>'导出excel文件','href'=>url('exceltrade',['status'=>0])]) ->setRowList($data_list) // 设置表格数据 ->fetch(); break; case '1': $request_url=$_SERVER["REQUEST_URI"]; $url_arr=parse_url($request_url); if(isset($url_arr['query'])){ parse_str($url_arr['query'], $query_arr); if(isset($query_arr['status']) && $query_arr['status']==0){ $pix=true; }else{ $pix=false; } }else{ $pix=false; } $map = $this->getMap(); if (empty($map) || (!isset($map['year']) && !isset($map['month']))) { if($pix){ $s_year=2018; $s_month=1; }else{ $s_year=$year; $s_month=$month; } }elseif(!isset($map['year']) && isset($map['month'])){ $s_year=2018; $s_month=$map['month']; }elseif(!isset($map['month']) && isset($map['year'])){ $s_year=$map['year']; $s_month=1; }else{ $s_year=$map['year']; $s_month=$map['month']; } if($s_month=='12'){ $en_year=$s_year+1; $en_month=1; }else{ $en_year=$s_year; $en_month=$s_month+1; } $st=strtotime($s_year.'-'.$s_month.'-01 00:00:00'); $en=strtotime($en_year.'-'.$en_month.'-01 00:00:00')-1; $where=" WHERE a.created_at<=".$en." && a.created_at>=".$st." && a.state=1 "; $data=Db::query("SELECT b.area_id,sum(pay_amount) AS sums from ".config('database.prefix')."trades a LEFT JOIN ".config('database.prefix')."users b ON a.user_id=b.id {$where} GROUP BY b.area_id ORDER BY sums DESC LIMIT 100"); $data_list=[]; foreach ($data as $key => $value) { $area=db('regions')->where('id',$value['area_id'])->find(); $city=db('regions')->where('id',$area['parent_id'])->find(); $province=db('regions')->where('id',$city['parent_id'])->find(); $region=$province['name'].' '.$city['name'].' '.$area['name']; if($key==0){ $rank=$key+1; }else{ if($value['sums']!=$data[$key-1]['sums']){ $rank=$key+1; } } $count1=db('orders a')->join('users b','a.user_id=b.id','LEFT')->where('b.area_id',$value['area_id'])->where('a.user_id',$value['user_id'])->where('a.state','in','1,3,4,5,8')->where('a.refund_state','in','-1,0,1,2,3,6,9,10,11')->count('a.id'); $count2=db('collage_orders a')->join('users b','a.user_id=b.id','LEFT')->where('b.area_id',$value['area_id'])->where('a.user_id',$value['user_id'])->where('a.state','in','1,4')->count('a.id'); $order_counts=$count1+$count2; $data_list[]=['rank'=>$rank,'region'=>$region,'sums'=>$value['sums'],'order_counts'=>$order_counts]; } session('trade_region_excel_year',$s_year); session('trade_region_excel_month',$s_month); session('trade_region_excel_data',$data_list); $months=['2'=>'二月','3'=>'三月','4'=>'四月','5'=>'五月','6'=>'六月','7'=>'七月','8'=>'八月','9'=>'九月','10'=>'十月','11'=>'十一月','12'=>'十二月']; $years=[]; for ($i=2019; $i <= 2118; $i++) { $years[$i]=$i.'年'; } return ZBuilder::make('table') ->setPageTitle('') // 设置页面标题 ->setPageTips($tips) // 设置页面提示信息 ->setTabNav($list_tab, $status)//分组 ->hideCheckbox() //隐藏第一列多选框 ->addTopSelect('year', '2018年', $years, $year) //添加顶部下拉筛选 ->addTopSelect('month', '一月', $months, $month) //添加顶部下拉筛选 ->addColumns([ ['rank', '排名'], ['region', '地区'], ['sums', '交易额'], ['order_counts', '订单数'], ]) //添加多列数据 ->addTopButton('custom',['title'=>'导出excel文件','href'=>url('exceltrade',['status'=>1])]) ->setRowList($data_list) // 设置表格数据 ->fetch(); break; default: break; } } public function exceltrade($status){ switch ($status) { case '0': $header = array( '第几日'=>'string',//text '交易额'=>'string',//text ); $data_list = session('platform_water_excel_data'); $year=session('platform_water_excel_year'); $month=session('platform_water_excel_month'); $file_name = $year.'年'.$month.'月商城交易额-'.mt_rand(1000,9999).'.xlsx'; //下载文件名 $file_dir = "excels/trades/platforms/"; //下载文件存放目录 do_rmdir($file_dir,false);//先清空文件夹 break; case '1': $header = array( '排名'=>'string',//text '地区'=>'string',//text '交易额'=>'string',//text '订单数'=>'string',//text ); $data_list = session('trade_region_excel_data'); $year=session('trade_region_excel_year'); $month=session('trade_region_excel_month'); $file_name = $year.'年'.$month.'月地区交易数据排行-'.mt_rand(1000,9999).'.xlsx'; //下载文件名 $file_dir = "excels/trades/regions/ranks/"; //下载文件存放目录 do_rmdir($file_dir,false);//先清空文件夹 break; default: $this->error('请求错误'); break; } $rows = $data_list; import('PHP_XLSXWriter-master.xlsxwriter', EXTEND_PATH,'.class.php'); $writer = new \XLSXWriter(); $writer->writeSheetHeader('Sheet1', $header); foreach($rows as $row){ $row=array_values($row); $writer->writeSheetRow('Sheet1', $row); } $writer->writeToFile($file_dir.$file_name); //检查文件是否存在 if (! file_exists ( $file_dir . $file_name )) { $this->error('文件未生成成功,请重试'); } else { header('Location:'.config('mall.public_url').$file_dir.$file_name); die; } } public function product(){ $map = $this->getMap(); session('supplier_product_rank_excel_map',$map); if(isset($map['created_at'][0]) && isset($map['created_at'][1]) && $map['created_at'][0]=='between time'){ $where=" WHERE c.created_at<=".strtotime($map['created_at'][1][1])." && c.created_at>=".strtotime($map['created_at'][1][0])." && c.state in (1,3,4,5,8) && c.refund_state in (-1,0,1,2,3,6,9,10,11)"; }else{ $where=" WHERE c.state in (1,3,4,5,8) && c.refund_state in (-1,0,1,2,3,6,9,10,11)"; } $data=Db::query("SELECT b.name,SUM(a.num) AS nums from ".config('database.prefix')."order_products a LEFT JOIN ".config('database.prefix')."products b ON a.product_id=b.id LEFT JOIN ".config('database.prefix')."orders c ON a.order_id=c.id{$where} GROUP BY a.product_id ORDER BY nums DESC LIMIT 100"); $data_list=[]; foreach ($data as $key => $value) { if($key==0){ $rank=$key+1; }else{ if($value['nums']!=$data[$key-1]['nums']){ $rank=$key+1; } } $data_list[]=['rank'=>$rank,'name'=>$value['name'],'nums'=>$value['nums']]; } session('supplier_product_rank_excel_data',$data_list); return ZBuilder::make('table') ->setPageTitle('商品交易数量排行') // 设置页面标题 ->setPageTips('') // 设置页面提示信息 ->hideCheckbox() //隐藏第一列多选框 ->addTimeFilter('created_at') // 添加时间段筛选 ->addColumns([ ['rank', '排名'], ['name', '商品名称'], ['nums', '交易数量'], ]) //添加多列数据 ->addTopButton('custom',['title'=>'导出excel文件','href'=>url('excelproduct')]) ->setRowList($data_list) // 设置表格数据 ->fetch(); } public function excelproduct(){ $header = array( '排名'=>'string',//text '商品名称'=>'string',//text '交易数量'=>'string',//text ); $map = session('supplier_product_rank_excel_map'); if(isset($map['created_at'][0]) && isset($map['created_at'][1]) && $map['created_at'][0]=='between time'){ $date='('.explode(' ',$map['created_at'][1][0])[0].'至'.explode(' ',$map['created_at'][1][1])[0].')-'; }else{ $date=''; } $data_list=session('supplier_product_rank_excel_data'); $file_name = '商品交易数量排行-'.$date.mt_rand(1000,9999).'.xlsx'; //下载文件名 $file_dir = "excels/products/ranks/"; //下载文件存放目录 do_rmdir($file_dir,false);//先清空文件夹 $rows = $data_list; import('PHP_XLSXWriter-master.xlsxwriter', EXTEND_PATH,'.class.php'); $writer = new \XLSXWriter(); $writer->writeSheetHeader('Sheet1', $header); foreach($rows as $row){ $row=array_values($row); $writer->writeSheetRow('Sheet1', $row); } $writer->writeToFile($file_dir.$file_name); //检查文件是否存在 if (! file_exists ( $file_dir . $file_name )) { $this->error('文件未生成成功,请重试'); } else { header('Location:'.config('mall.public_url').$file_dir.$file_name); die; } } }