Files
2026-06-11 12:15:29 +08:00

71 lines
2.1 KiB
PHP

<?php
namespace app\adminapi\controller\popup;
use app\adminapi\controller\BaseAdminController;
use app\adminapi\lists\popup\PopupLogLists;
use app\common\model\popup\PagePopup;
use app\common\model\popup\PagePopupLog;
/**
* 弹窗操作日志
*/
class PopupLogController extends BaseAdminController
{
public function lists()
{
return $this->dataLists(new PopupLogLists());
}
/**
* 弹窗统计概览
* GET /popup.popup_log/stats?popup_id=xxx
* 返回:[show, click, close, ctr, days[]]
*/
public function stats()
{
$popupId = (int)$this->request->get('popup_id', 0);
$where = [];
if ($popupId > 0) $where[] = ['popup_id', '=', $popupId];
$show = PagePopupLog::where($where)->where('action', 1)->count();
$click = PagePopupLog::where($where)->where('action', 2)->count();
$close = PagePopupLog::where($where)->where('action', 3)->count();
$ctr = $show > 0 ? round($click / $show * 100, 2) : 0;
// 最近 7 天每日统计
$days = [];
for ($i = 6; $i >= 0; $i--) {
$start = strtotime(date('Y-m-d', strtotime("-{$i} day")));
$end = $start + 86400;
$dShow = PagePopupLog::where($where)->where('action', 1)
->where('create_time', '>=', $start)
->where('create_time', '<', $end)->count();
$dClick = PagePopupLog::where($where)->where('action', 2)
->where('create_time', '>=', $start)
->where('create_time', '<', $end)->count();
$days[] = [
'date' => date('m-d', $start),
'show' => $dShow,
'click' => $dClick,
];
}
$popupName = '';
if ($popupId > 0) {
$popup = PagePopup::find($popupId);
$popupName = $popup ? (string)$popup['name'] : '';
}
return $this->data([
'popup_id' => $popupId,
'popup_name' => $popupName,
'show' => $show,
'click' => $click,
'close' => $close,
'ctr' => $ctr,
'days' => $days,
]);
}
}