no message

This commit is contained in:
hajimi
2026-06-11 12:15:29 +08:00
parent 10ebe39c30
commit 96efa1d905
5859 changed files with 815501 additions and 5 deletions
@@ -0,0 +1,81 @@
<?php
namespace app\adminapi\logic\popup;
use app\common\logic\BaseLogic;
use app\common\model\popup\PagePopup;
use app\common\model\popup\PagePopupLog;
class PopupLogic extends BaseLogic
{
/**
* 表单字段白名单
*/
private static array $fields = [
'name', 'page_path', 'popup_type', 'image', 'title', 'content',
'link_type', 'link_url', 'frequency', 'delay_seconds', 'auto_close_seconds',
'start_time', 'end_time', 'target_platform', 'sort', 'status',
];
public static function add(array $params): void
{
$data = self::filterFields($params);
PagePopup::create($data);
}
public static function edit(array $params): bool
{
try {
$data = self::filterFields($params);
$data['id'] = (int)$params['id'];
PagePopup::update($data);
return true;
} catch (\Exception $e) {
self::setError($e->getMessage());
return false;
}
}
public static function delete(array $params): void
{
$id = (int)$params['id'];
PagePopup::destroy($id);
// 同时清理日志
PagePopupLog::where('popup_id', $id)->delete();
}
public static function detail(array $params): array
{
return PagePopup::findOrEmpty((int)$params['id'])->toArray();
}
public static function updateStatus(array $params): bool
{
PagePopup::update([
'id' => (int)$params['id'],
'status' => (int)$params['status'],
]);
return true;
}
/**
* 字段白名单过滤 + 时间格式归一化
*/
private static function filterFields(array $params): array
{
$data = [];
foreach (self::$fields as $f) {
if (array_key_exists($f, $params)) {
$data[$f] = $params[$f];
}
}
// start_time / end_time 支持字符串日期,统一转时间戳
foreach (['start_time', 'end_time'] as $tf) {
if (isset($data[$tf]) && !is_numeric($data[$tf])) {
$ts = strtotime((string)$data[$tf]);
$data[$tf] = $ts ?: 0;
}
}
return $data;
}
}