open($zip_url, \ZipArchive::CREATE) === TRUE) { $ExportClass->addFileToZip($dir, $zip, $name); //调用方法,对要打包的根目录进行操作,并将ZipArchive的对象传递给方法 $zip->close(); //关闭处理的zip文件 if (!file_exists($zip_url)) { //判断文件是否存在 echo "文件不存在"; exit(); } $file = fopen($zip_url, "r"); Header("Content-type:application/octet-stream"); header("Accept-Ranges: bytes"); header("Accept-Length: " . filesize($zip_url)); header("Content-Disposition: attachment; filename={$name}" . date('Y-m-d_H:i:s') . ".zip"); echo fread($file, filesize($zip_url)); fclose($file); $ExportClass->delDirFile($directory_name); //删除文件夹下的所有文件 rmdir($directory_name); //删除当前文件夹 unlink($zip_url); //删除压缩包 } } else { echo '文件不存在'; } } /** * 生成导出文件 * @param $param * @return mixed * @throws \PHPExcel_Exception * @throws \PHPExcel_Reader_Exception * @throws \PHPExcel_Writer_Exception */ public function createExportFile($param) { $page = $param['page'] ? $param['page'] : 1; $limit = $param['limit'] ? $param['limit'] : 10; $orderResult = $this->orderRecord($param); $data = $orderResult['data']['list'] ? $orderResult['data']['list'] : []; $directory_name = $param['directory_name']; $filename = "码科订单导出"; $headArr = array( array('id', 'ID'), array('bill_order_number', '门店订单'), array('order_number', '码科订单'), array('storetag', '门店名称'), array('rider_name', '骑手姓名'), array('rider_mobile', '骑手手机号'), array('distance', '配送距离'), array('total_price', '配送费'), array('accept_time', '接单时间'), array('complete_time', '送达时间'), array('status_name', ' 状态') ); $str = $filename . ' 表格生成时间:' . date('Y-m-d H:i:s'); if (empty($directory_name)) { $directory_name = "./Uploads/MakeExport/{$param['merchant_id']}/"; } $parameter = [ 'expTitle'=>$filename, 'expCellName'=>$headArr, 'expTableData'=>$data, 'common'=>$str, 'directory_name'=>$directory_name, 'page'=>$page, ]; $ExportClass = new Export(); $result = $ExportClass->generateXLS($parameter); $res = array( 'status' => 1, 'type' => 1, 'directory_name' => $result['directory_name'], 'msg' => '请继续生成文件' ); if(count($data) < $limit){ $res['type'] = 2; $res['msg'] = '数据生成完毕'; } return callBack(statusCode()['success'], $res['msg'], $res); } /** * 配送订单记录 * @param $param * [ * merchant_id * store_id * ] * @return mixed */ public function orderRecord($param) { $page = $param['page']; $limit = $param['limit']; $where = $this->orderRecordTerm($param); try { $MakeOrderModel = new MakeOrderModel(); $list = $MakeOrderModel->getSelect($where, '*', 'id desc', $page . ',' . $limit); } catch (\Exception $e) { return []; } if (!empty($list)) { $count = $MakeOrderModel->getCount($where); $StoreModel = new RetailStoreModel(); foreach ($list as $key => &$val) { $val['index'] = $key + 1; if (!empty($val['accept_time'])) { $val['accept_time'] = date('Y-m-d H:i:s', $val['accept_time']); } if (!empty($val['complete_time'])) { $val['complete_time'] = date('Y-m-d H:i:s', $val['complete_time']); } switch ($val['status']) { case 'cancel': $val['status_name'] = '订单已取消'; break; case 'payed': $val['status_name'] = '待接单'; break; case 'accepted': $val['status_name'] = '待取件'; break; case 'geted': $val['status_name'] = '配送中'; break; case 'gotoed': $val['status_name'] = '已完成'; break; case 'completed': $val['status_name'] = '已完成'; break; } $val['storetag'] = $StoreModel->getFindField([ 'id' => $val['store_id'] ], 'storetag'); } } return callBack(statusCode()['success'], "查询成功", ['list' => $list, 'count' => $count ? $count : 0]); } /** * 配送订单记录的查询条件 * @param $param * [ * merchant_id * store_id * add_time * status * order_number * ] * @return mixed */ public function orderRecordTerm($param) { if (!empty($param['add_time'])) { $start_time = strtotime($param['add_time'][0]); $end_time = strtotime($param['add_time'][1]); $where['add_time'] = ['between', [$start_time, $end_time]]; } if (!empty($param['status'])) { switch ($param['status']) { case 1: $where['status'] = 'payed'; break; case 2: $where['status'] = 'accepted'; break; case 3: $where['status'] = 'geted'; break; case 4: $where['status'] = ['in', 'gotoed, completed']; break; case 5: $where['status'] = 'cancel'; break; } } if (!empty($param['order_number'])) { $where['bill_order_number'] = $param['order_number']; } if (!empty($param['store_id'])) { $where['store_id'] = $param['store_id']; } $where['merchant_id'] = $param['merchant_id']; return $where; } }