setAttributes($params); $this->initSearchParams(); $pagination = new Pagination(); $pagination->pageSize = $this->pageSize; $data['page'] = $this->page; $data['pageSize'] = $pagination->getPageSize(); if ($this->orderBy) { $data['orderBy'] = $this->orderBy; } if (!empty($this->search['value']) && trim($this->search['value']) !== '') { $data['search'] = trim($this->search['value']); } if ($this->pageSize > 1000) { if (\Yii::$app->getRequest()->isAjax) { \Yii::$app->getResponse()->redirect(Url::current()); } else { $this->exportXls($data); } \Yii::$app->end(); } $mailApi = new MailApi(); $result = $mailApi->getMailList($data); $models = []; if ($result['code'] == 1) { $models = (array)$result['data']['dataList']; $pagination->totalCount = (int)$result['data']['totalCount']; } $dataProvider = new ArrayDataProvider([ 'models' => $models, 'pagination' => $pagination, 'totalCount' => $pagination->totalCount, ]); return $dataProvider; } /** * @param $data */ private function exportXls($data) { \Yii::$app->getResponse()->setDownloadHeaders("邮件记录_" . date('Y-m-d') . '.xls')->send(); if (!ob_get_level()) { ob_start(); } echo ''; echo ''; echo ''; $api = new MailApi(); $leftSize = $this->pageSize; while ($leftSize > 0) { // 重新计算页数和分页大小 start $pageSize = $leftSize > 1000 ? 1000 : $leftSize; $data['pageSize'] = $pageSize; $data['page'] = ceil($this->start / $pageSize) + 1; // 重新计算页数和分页大小 end $result = $api->getMailList($data); if ($result['code'] == 1 && $result['data']['dataList']) { foreach ((array)$result['data']['dataList'] as $key => $row) { $str = ''; $str .= ""; if ((int)$row['type'] == 0) { $str .= ""; } elseif ((int)$row['type'] == 1) { $str .= ""; } elseif ((int)$row['type'] == 2) { $str .= ""; } else { $str .= ""; } if ((int)$row['state'] == 1) { $str .= ""; } else { $str .= ""; } $str .= ""; $str .= ""; $str .= ""; echo $str; } ob_flush(); flush(); } else { break; } $this->start += $pageSize; $leftSize -= $pageSize; if ($this->start >= $result['data']['totalCount']) { break; } } echo "
ID类型状态标题发布时间
{$row['id']}会员代理商会员+代理商自定义已发送待发送{$row['subject']}".date('Y-m-d H:i:s', intval($row['in_time'] / 1000))."
"; if (ob_get_level()) { ob_end_flush(); } } }