142 lines
4.8 KiB
PHP
Executable File
142 lines
4.8 KiB
PHP
Executable File
<?php
|
||
namespace app\controller\manager;
|
||
|
||
use app\model\{Message as MMessage, Log};
|
||
use app\service\Tool;
|
||
use app\service\File;
|
||
use PhpOffice\PhpSpreadsheet\Cell\DataType;
|
||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||
use PhpOffice\PhpSpreadsheet\Style\Alignment;
|
||
use PhpOffice\PhpSpreadsheet\Style\Border;
|
||
|
||
class Message extends Base
|
||
{
|
||
protected $excelStyle = [
|
||
'font' => [
|
||
'name' => '宋体',
|
||
],
|
||
'alignment' => [
|
||
'horizontal' => Alignment::HORIZONTAL_CENTER, // 水平居中
|
||
'vertical' => Alignment::VERTICAL_CENTER, // 垂直居中
|
||
'wrapText' => true,
|
||
],
|
||
'borders' => [
|
||
'allBorders' => [
|
||
'borderStyle' => Border::BORDER_THIN,
|
||
'color' => ['rgb' => 'eeeeee'],
|
||
]
|
||
],
|
||
];
|
||
|
||
protected $defaultSetting = [
|
||
'cell_width' => 30,
|
||
'font_size' => 12
|
||
];
|
||
|
||
//下载文件
|
||
public function file()
|
||
{
|
||
$id = input('param.id/d');
|
||
if(is_numeric($id) && $id > 0) {
|
||
$item = MMessage::getById($id);
|
||
if(empty($item)){
|
||
return $this->error('留言不存在');
|
||
}
|
||
if(empty($item['file'])){
|
||
return $this->error('无文件需要下载');
|
||
}
|
||
$file = app()->getRootPath() . 'public' . $item['file'];
|
||
if(!file_exists($file)){
|
||
return $this->error('无文件需要下载');
|
||
}
|
||
$fileInfo = pathinfo($file);
|
||
$fileName = $item['name'] . '上传文件.' . $fileInfo['extension'];
|
||
$fileSize = filesize($file);
|
||
|
||
//以只读和二进制模式打开文件
|
||
$file = fopen ( $file, "rb" );
|
||
|
||
//告诉浏览器这是一个文件流格式的文件
|
||
Header ( "Content-type: application/octet-stream" );
|
||
//请求范围的度量单位
|
||
Header ( "Accept-Ranges: bytes" );
|
||
//Content-Length是指定包含于请求或响应中数据的字节长度
|
||
Header ( "Accept-Length: " . $fileSize );
|
||
//用来告诉浏览器,文件是可以当做附件被下载,下载后的文件名称为$file_name该变量的值。
|
||
Header ( "Content-Disposition: attachment; filename=" . $fileName );
|
||
|
||
//读取文件内容并直接输出到浏览器
|
||
echo fread ( $file, $fileSize );
|
||
fclose ( $file );
|
||
exit ();
|
||
}
|
||
return $this->error('参数错误,请核对之后再操作!');
|
||
}
|
||
//可以删除一个
|
||
public function del()
|
||
{
|
||
if ($this->request->isPost()) {
|
||
$id = input('post.id/d');
|
||
if(is_numeric($id) && $id > 0) {
|
||
$item = MMessage::getById($id);
|
||
if(!empty($item)){
|
||
MMessage::destroy($id);
|
||
if(!empty($item['file'])){
|
||
Tool::delFile($item['file']);
|
||
}
|
||
Log::write('link', 'del', '删除留言,ID:' . $id . ',姓名:' . $item['name']);
|
||
return $this->json();
|
||
}
|
||
return $this->json(3, '待删除留言不存在');
|
||
}
|
||
return $this->json(2, '参数错误,请核对之后再操作!');
|
||
}
|
||
return $this->json(1, '非法请求!');
|
||
}
|
||
|
||
//列表
|
||
public function index()
|
||
{
|
||
$startDate = input('param.startDate', '');
|
||
$endDate = input('param.endDate', '');
|
||
|
||
$items = MMessage::getList(20, $startDate, $endDate);
|
||
$this->data['items'] = $items;
|
||
$this->data['startDate'] = $startDate;
|
||
$this->data['endDate'] = $endDate;
|
||
return $this->view();
|
||
}
|
||
|
||
// 导出留言
|
||
public function export()
|
||
{
|
||
File::cancelTimeLimit();
|
||
|
||
$startDate = input('param.startDate', '');
|
||
$endDate = input('param.endDate', '');
|
||
$list = MMessage::getExportList($startDate, $endDate, 10000);
|
||
|
||
$spreadsheet = new Spreadsheet();
|
||
$header = ['序号', '姓名', '电话', '公司/团队名称', '申请日期'];
|
||
|
||
$sheet = $spreadsheet->getActiveSheet();
|
||
$sheetTitle = '预约记录';
|
||
$cellValues = [];
|
||
$cellWidthList = [];
|
||
|
||
foreach ($list as $item) {
|
||
$cellValues[] = [
|
||
[$item['id'], DataType::TYPE_STRING],
|
||
$item['name'],
|
||
$item['tel'],
|
||
$item['company'],
|
||
date('Y-m-d H:i', $item['create_time']),
|
||
];
|
||
}
|
||
|
||
File::setExcelCells($sheet, $cellValues, $header, $sheetTitle, $cellWidthList, $this->excelStyle, $this->defaultSetting);
|
||
File::export($spreadsheet, '预约记录导出_' . date('YmdHis') . '.xlsx');
|
||
}
|
||
|
||
}
|