| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 | 
							- <?php
 
- namespace app\index\controller;
 
- use app\common\controller\Frontend;
 
- use PHPExcel_IOFactory;
 
- require_once VENDOR_PATH . 'phpoffice/phpexcel/Classes/PHPExcel.php';
 
- class Datacount extends Frontend
 
- {
 
-     protected $noNeedLogin = '*';
 
-     protected $noNeedRight = '*';
 
-     protected $layout = '';
 
-     public function index()
 
-     {
 
-         return $this->view->fetch();
 
-     }
 
-     /**
 
-      * 收益数据导出
 
-      */
 
-     public function explode() {
 
-         // 先做统计
 
-         $p_id = $this->request->request('p_id',0,"intval"); // 派对ID
 
-         $startdate = $this->request->request('starttime'); // 起始时间
 
-         $enddate = $this->request->request('endtime'); // 结束时间
 
-         if($p_id <=0 || !$startdate || !$enddate) $this->error("请选择起始时间!");
 
-         $starttime = strtotime($startdate);
 
-         $endtime = strtotime($enddate);
 
-         if(strlen($starttime) != 10 || strlen($endtime) != 10) $this->error("时间格式有误!");
 
-         $partyInfo = \app\common\model\Party::where(["id"=>$p_id])->find();
 
-         $p_id = $partyInfo->party_id;
 
-         $party_id = $partyInfo->id;
 
-         // 查询连麦数据
 
-         global $where;
 
-         global $whereOr;
 
-         $where = [];
 
-         $where["party_id"] = $party_id;
 
-         $where["offsite_time"] = ["gt",0];
 
-         $where["onsite_time"] = [["gt",$starttime],["lt",$endtime]];
 
-         $whereOr["party_id"] = $party_id;
 
-         $whereOr["offsite_time"] = ["gt",0];
 
-         $whereOr["offsite_time"] = [["gt",$starttime],["lt",$endtime]];
 
-         $userOnlieTime = \app\common\model\UserOnsiteTime::
 
-             where(function ($query) {
 
-                 global $where;
 
-                 $query->where($where);
 
-             })
 
-             ->whereOr(function ($query) {
 
-                 global $whereOr;
 
-                 $query->where($whereOr);
 
-             })->select();
 
-         $sitetimeList = [];
 
-         if($userOnlieTime) foreach($userOnlieTime as $k => $v) {
 
-             $onsite_time = $v["onsite_time"]<$starttime?$starttime:$v["onsite_time"];
 
-             $offsite_time = $v["offsite_time"]>$endtime?$endtime:$v["offsite_time"];
 
-             $site_time = $offsite_time-$onsite_time;
 
-             isset($sitetimeList[$v["user_id"]]) && $sitetimeList[$v["user_id"]] += $site_time;
 
-             isset($sitetimeList[$v["user_id"]]) || $sitetimeList[$v["user_id"]] = $site_time;
 
-         }
 
-         // 获取收礼声币数
 
-         $where = [];
 
-         $where["a.party_id"] = $party_id;
 
-         $where["a.createtime"] = [["gt",$starttime],["lt",$endtime]];;
 
-         $profitloglist = \app\common\model\UserProfitLog::alias("a")
 
-             ->field("a.user_id,u.u_id,u.nickname,sum(gift_value) as gift_value,sum(guilder_value) as guilder_value")
 
-             ->join("hx_user u","u.id = a.user_id")
 
-             ->where($where)->group("a.user_id")
 
-             ->select();
 
-         $profit = [];
 
-         $party_all_value = 0;
 
-         $guilder_all_value = 0;
 
-         if($profitloglist) foreach($profitloglist as $k => $v) {
 
-             $sitetime = isset($sitetimeList[$v["user_id"]])?$sitetimeList[$v["user_id"]]:0;
 
-             $profit[] = [
 
-                 "user_id" => $v["user_id"],
 
-                 "gift_value" => $v["gift_value"],
 
-                 "guilder_value" => $v["guilder_value"],
 
-                 "u_id" => $v["u_id"],
 
-                 "nickname" => $v["nickname"],
 
-                 "sitetime" => intval($sitetime/60)
 
-             ];
 
-             $party_all_value += $v["gift_value"];
 
-             $guilder_all_value += $v["guilder_value"];
 
-         }
 
- //        print_r($profit);exit;
 
-         // 获取派对信息
 
-         $party_id = $p_id;
 
-         $party_name = \app\common\model\Party::where(["party_id"=>$p_id])->value("party_name");
 
-         // 导出数据
 
-         $title = $startdate."—".$enddate." 房间营收数据";
 
-         //实例化phpexcel对象
 
-         $objPHPExcel = new \PHPExcel();
 
-         //设置Excel属性
 
-         $objPHPExcel->getProperties()->setTitle($title);		//设置标题
 
-         $objPHPExcel->getActiveSheet()->mergeCells('A1:F1');
 
-         $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(10);   //设置宽度
 
-         $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(30);   //设置宽度
 
-         $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(25);   //设置宽度
 
-         $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20);   //设置宽度
 
-         $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(20);   //设置宽度
 
-         $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(20);   //设置宽度
 
-         $objPHPExcel->getActiveSheet()->getStyle('A')->getAlignment()->setHorizontal("left");//水平方向上靠左
 
-         $objPHPExcel->getActiveSheet()->getStyle('B')->getAlignment()->setHorizontal("left");//水平方向上靠左
 
-         $objPHPExcel->getActiveSheet()->getStyle('C')->getAlignment()->setHorizontal("left");//水平方向上靠左
 
-         $objPHPExcel->getActiveSheet()->getStyle('D')->getAlignment()->setHorizontal("left");//水平方向上靠左
 
-         $objPHPExcel->getActiveSheet()->getStyle('E')->getAlignment()->setHorizontal("left");//水平方向上靠左
 
-         $objPHPExcel->getActiveSheet()->getStyle('F')->getAlignment()->setHorizontal("left");//水平方向上靠左
 
-         // 给表格添加数据
 
-         $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1',$title);
 
-         $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A2',"房间ID");
 
-         $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B2',"房间名称");
 
-         $objPHPExcel->setActiveSheetIndex(0)->setCellValue('C2',"收礼总声币数");
 
-         $objPHPExcel->setActiveSheetIndex(0)->setCellValue('D2',"房主抽成声币数");
 
-         $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A3',$party_id);
 
-         $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B3',$party_name);
 
-         $objPHPExcel->setActiveSheetIndex(0)->setCellValue('C3',$party_all_value);
 
-         $objPHPExcel->setActiveSheetIndex(0)->setCellValue('D3',$guilder_all_value);
 
-         $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A5',"序号");
 
-         $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B5',"连麦用户");
 
-         $objPHPExcel->setActiveSheetIndex(0)->setCellValue('C5',"用户昵称");
 
-         $objPHPExcel->setActiveSheetIndex(0)->setCellValue('D5',"连麦时长(分钟)");
 
-         $objPHPExcel->setActiveSheetIndex(0)->setCellValue('E5',"收礼总声币数");
 
-         $objPHPExcel->setActiveSheetIndex(0)->setCellValue('F5',"收礼抽成声币数");
 
-         //处理数据
 
-         $j = 6;//行数
 
-         foreach($profit as $key => $val){
 
-             $objPHPExcel->getActiveSheet()
 
-                 ->setCellValue("A".$j,$key+1)
 
-                 ->setCellValue("B".$j,$val['u_id'])
 
-                 ->setCellValue("C".$j,$val['nickname'])
 
-                 ->setCellValue("D".$j,$val['sitetime'])
 
-                 ->setCellValue("E".$j,$val['gift_value'])
 
-                 ->setCellValue("F".$j,$val['guilder_value']);
 
-             $j++;
 
-         }
 
-         //激活当前表
 
-         $objPHPExcel->setActiveSheetIndex(0);
 
-         ob_end_clean();//清除缓冲区,避免乱码
 
-         //弹出提示下载文件
 
-         header('pragma:public');
 
-         header("Content-Disposition:attachment;filename=".$title.".xlsx");
 
-         header('Cache-Control: max-age=0');
 
-         $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
 
-         $objWriter->save( 'php://output');
 
-     }
 
- }
 
 
  |