148 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			148 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
<?php
 | 
						||
 | 
						||
namespace app\controller\manager;
 | 
						||
 | 
						||
use app\model\{Message as MMessage, Log, VisitLogoModel};
 | 
						||
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;
 | 
						||
use think\response\View;
 | 
						||
 | 
						||
class VisitLog 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 del()
 | 
						||
    {
 | 
						||
        if ($this->request->isPost()) {
 | 
						||
            $id = input('post.id/d');
 | 
						||
            if (is_numeric($id) && $id > 0) {
 | 
						||
                $item = VisitLogoModel::getById($id);
 | 
						||
                if (!empty($item)) {
 | 
						||
                    VisitLogoModel::destroy($id);
 | 
						||
                    if (!empty($item['file'])) {
 | 
						||
                        Tool::delFile($item['file']);
 | 
						||
                    }
 | 
						||
                    Log::write('visit_log', 'del', '删除访问记录,ID:'.$id);
 | 
						||
                    return $this->json();
 | 
						||
                }
 | 
						||
                return $this->json(3, '待删除记录不存在');
 | 
						||
            }
 | 
						||
            return $this->json(2, '参数错误,请核对之后再操作!');
 | 
						||
        }
 | 
						||
        return $this->json(1, '非法请求!');
 | 
						||
    }
 | 
						||
 | 
						||
    //列表
 | 
						||
    public function index(): View
 | 
						||
    {
 | 
						||
        $startDate = input('param.startDate', '');
 | 
						||
        $endDate   = input('param.endDate', '');
 | 
						||
        $keyword   = input('param.keyword', '');
 | 
						||
 | 
						||
        $param = [];
 | 
						||
        if (!empty($startDate)) {
 | 
						||
            $param['startDate'] = $startDate;
 | 
						||
        }
 | 
						||
        if (!empty($endDate)) {
 | 
						||
            $param['endDate'] = $endDate;
 | 
						||
        }
 | 
						||
 | 
						||
        if (!empty($keyword)) {
 | 
						||
            $param['keyword'] = $keyword;
 | 
						||
        }
 | 
						||
 | 
						||
        $paginate = [
 | 
						||
            'list_rows' => 20,
 | 
						||
            'query'     => $param
 | 
						||
        ];
 | 
						||
 | 
						||
        $items = VisitLogoModel::when(!empty($startDate) && strtotime($startDate), function ($query) use ($startDate) {
 | 
						||
            $startTime = strtotime(date('Y-m-d 00:00:00', strtotime($startDate)));
 | 
						||
            $query->where('create_time', '>=', $startTime);
 | 
						||
        })
 | 
						||
            ->when(!empty($endDate) && strtotime($endDate), function ($query) use ($endDate) {
 | 
						||
                $endTime = strtotime(date('Y-m-d 23:59:59', strtotime($endDate)));
 | 
						||
                $query->where('create_time', '<=', $endTime);
 | 
						||
            })
 | 
						||
            ->when(!empty($keyword), function ($query) use ($keyword) {
 | 
						||
                $query->where('referer|visit', 'like', '%'.$keyword.'%');
 | 
						||
            })
 | 
						||
            ->order("create_time", 'desc')
 | 
						||
            ->paginate($paginate);
 | 
						||
 | 
						||
        $items->each(function ($item) {
 | 
						||
           $item->source_title = '其他';
 | 
						||
           if (str_contains($item->referer, 'baidu.com')) {
 | 
						||
               $item->source_title = '百度';
 | 
						||
           }
 | 
						||
 | 
						||
            if (str_contains($item->referer, 'so.com')) {
 | 
						||
                $item->source_title = '360';
 | 
						||
            }
 | 
						||
        });
 | 
						||
 | 
						||
        $this->data['items']     = $items;
 | 
						||
        $this->data['startDate'] = $startDate;
 | 
						||
        $this->data['endDate']   = $endDate;
 | 
						||
        $this->data['keyword']   = $keyword;
 | 
						||
        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');
 | 
						||
    }
 | 
						||
 | 
						||
}
 |