'阅读',
'2' => '点赞',
'3' => '分享',
'4' => '推荐',
'5' => '取消推荐',
'6' => '取消点赞'
];
protected function _initialize(){
parent::_initialize();
$this->assign('breadcrumb1','分享设置');
$this->assign('breadcrumb2','内容分享>>数据');
}
/**
* 数据列表
*
* */
public function index(ArticleCommentModel $ArticleCommentModel){
// 接受参数
$tid = request('tid','');
$c_type = request('c_type');
$title = request('title');
$startTime = request('start_time','');
$endTime = request('end_time','');
// 编码转ID
// $id = $code ? $ArticleCommentModel->codeToId($code) : 0;
// 查询条件
$map = [];
// 编码ID
if( $tid ) $map[] = ['article_comment.article_id','=',$tid];
if( $title ) $map[] = ['article.title','LIKE','%'.$title.'%'];
if( $startTime ) $map[] = ['article_comment.start_time','>=',strtotime($startTime)];
if( $endTime ) $map[] = ['article_comment.end_time','<=',strtotime($endTime)];
if( !is_null($c_type) ) $map[] = ['article_comment.event_type','=',$c_type];
// 查询数据
$list = $ArticleCommentModel->query()
->join('custom','article_comment.uid','=','custom.uid')
->leftJoin('article','article_comment.article_id','=','article.id');
$list = $list->where($map)
->orderByDesc('id')
->select([
'article_comment.*','custom.username as custom_name',
'article.title as title'
])
->paginate(request('limit',config('page_num',10)))->appends(request()->all());
// 循环处理数据
foreach ($list as $key => $value) {
// id转编号
$value['article_code'] = $ArticleCommentModel->idToCode($value['article_id']);
// 事件类型:1阅读;2点赞;3分享;4推荐;5取消点赞;6取消推荐
$value['event'] = self::EVENT_TYPE[$value['event_type']];
// 重组
$list[$key] = $value;
}
// 分配数据
$this->assign('empty', '
~~暂无数据 |
');
$this->assign('list', $list);
$this->assign('tid', $tid);
// 加载模板
return $this->fetch();
}
/**
* 导出表格导入
*
* */
public function down_excel(ArticleCommentModel $ArticleCommentModel){
// 接受参数
$tid = request('tid','');
$c_type = request('c_type');
$title = request('title');
$startTime = request('start_time','');
$endTime = request('end_time','');
$map = [];
// 编码ID
if( $tid ) $map[] = ['article_comment.article_id','=',$tid];
if( $title ) $map[] = ['article.title','LIKE','%'.$title.'%'];
if( $startTime ) $map[] = ['article_comment.start_time','>=',strtotime($startTime)];
if( $endTime ) $map[] = ['article_comment.end_time','<=',strtotime($endTime)];
if( !is_null($c_type) ) $map[] = ['article_comment.event_type','=',$c_type];
// 查询数据
$list = $ArticleCommentModel->query()
->join('custom','article_comment.uid','=','custom.uid')
->leftJoin('article','article_comment.article_id','=','article.id');
$list = $list->where($map)
->orderByDesc('id')
->select([
'article_comment.*',
'custom.username as custom_name',
'article.title as title',
'article.content as content',
])
->paginate(request('limit',config('page_num',10)))->appends(request()->all());
// 返回结果
$data = [];
// 循环处理数据
foreach ($list as $value) {
// id转编号
$value['article_id'] = $ArticleCommentModel->idToCode($value['article_id']);
$value['content'] = $value['content']? $value['content'] : '';
$value['comment'] = $value['comment']? $value['comment'] : '';
$value['event'] = $value['event_type']? self::EVENT_TYPE[$value['event_type']]: '';
$value['insert_time'] = $value['insert_time']? date('Y-m-d H:i:s',$value['insert_time']) : '';
$value['update_time'] = $value['update_time']? date('Y-m-d H:i:s',$value['update_time']) : '';
// 重组
$data[] = $value;
}
try {
// 去下载
$this->toDown($data);
} catch (\Throwable $th) {
echo $th->getMessage();
}
}
/**
* 去下载
*/
private function toDown($data){
// 创建新的电子表格对象
$spreadsheet = new Spreadsheet();
// 设置合并单元格的行和列,例如合并A1到B2的单元格
$sheet = $this->setStyle($spreadsheet);
// 从第二行写入
$row = 2;
// 循环写入
foreach ($data as $value) {
// 单元格内容写入
$sheet->setCellValue('A'.$row, $value['article_id']);
$sheet->setCellValue('B'.$row, $value['comment']);
$sheet->setCellValue('C'.$row, $value['custom_name']);
$sheet->setCellValueExplicit('D'.$row, $value['event'],DataType::TYPE_STRING);
$sheet->setCellValueExplicit('E'.$row, $value['content'],DataType::TYPE_STRING);
// $sheet->setCellValueExplicit('C'.$row, $value['custom_name'],DataType::TYPE_STRING);
$sheet->setCellValue('F'.$row, $value['insert_time']);
$sheet->setCellValue('G'.$row, $value['update_time']);
// 函数自增
$row++;
}
// 创建内容
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
header('Pragma: public');
header('Content-type:application/vnd.ms-excel');
header('Content-Disposition: inline;filename=内容分享数据.xlsx');
// 输出数据流
return $writer->save('php://output');
}
/**
* 设置表格样式
*
*/
private function setStyle(Spreadsheet $spreadsheet){
// 选择当前活动的工作表
$sheet = $spreadsheet->getActiveSheet();
// 宽
$sheet->getColumnDimension('A')->setWidth(20);
$sheet->getColumnDimension('B')->setWidth(30);
$sheet->getColumnDimension('C')->setWidth(15);
$sheet->getColumnDimension('D')->setWidth(15);
$sheet->getColumnDimension('E')->setWidth(50);
$sheet->getColumnDimension('F')->setWidth(25);
$sheet->getColumnDimension('G')->setWidth(25);
// 默认高度
$sheet->getDefaultRowDimension()->setRowHeight(18);
// 加粗第一行
$sheet->getStyle('A:U')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER)->setVertical(Alignment::VERTICAL_CENTER);
$sheet->getStyle('A1:U1')->getFont()->setBold(true);
$sheet->getStyle('A1:U1')->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('FF00FF00'); // ARGB颜色代码,例如绿色
// 设置表格标题
$sheet
->setCellValue('A1', '文章ID')
->setCellValue('B1', '评论内容')
->setCellValue('C1', '用户名称')
->setCellValue('D1', '事件类型')
->setCellValue('E1', '文章内容')
->setCellValue('F1', '文章发布时间')
->setCellValue('G1', '操作时间');
// 返回结果
return $sheet;
}
}