Browse Source

消息通知

master
wanghongjun 2 weeks ago
parent
commit
c41385e8d1
  1. 15
      app/Http/Controllers/Admin/NoticeController.php
  2. 2
      app/Http/Middleware/CheckPermission.php
  3. 3
      app/Models/AdminNotice.php
  4. 53
      app/Services/AdminNoticeService.php
  5. 1
      database/migrations/2026_04_23_143449_create_admin_notice_table.php
  6. 3
      routes/admin/api.php

15
app/Http/Controllers/Admin/NoticeController.php

@ -250,7 +250,7 @@ class NoticeController extends BaseController
);
}
public function message(): JsonResponse
public function readInfo(): JsonResponse
{
try {
$where = [
@ -268,4 +268,17 @@ class NoticeController extends BaseController
);
}
}
public function noticeMessage(): JsonResponse
{
try {
$data = $this->service->getNoticeInfo();
return $this->responseService->success($data);
} catch (Exception $e) {
$m_prefix = __('exception.exception_handler.resource');
return $this->responseService->systemError(
$m_prefix . ':' . $e->getMessage()
);
}
}
}

2
app/Http/Middleware/CheckPermission.php

@ -66,7 +66,7 @@ class CheckPermission
}
// 特殊1
$special = ['logout', 'me', 'menu', 'index', 'translationSwitch', 'uploadImage'];
$special = ['logout', 'me', 'menu', 'index', 'translationSwitch', 'uploadImage', 'noticeMessage'];
if (in_array($newAction, $special)) {
return false;
}

3
app/Models/AdminNotice.php

@ -24,7 +24,8 @@ class AdminNotice extends Model
'is_read',
'user_id',
'pattern_id',
'license_plate_id'
'license_plate_id',
'is_notice'
];
/**

53
app/Services/AdminNoticeService.php

@ -256,4 +256,57 @@ class AdminNoticeService extends BaseService
];
self::createData(1, 4, $data, $user_id);
}
public function getNoticeInfo(): array
{
$columns = [
'alarm_time',
'alarm_type',
'msg_type',
'id',
'is_notice',
'updated_at',
'camera_id'
];
$list = AdminNotice::query()->where('is_notice', 1)->select($columns)
->get();
if ($list) {
$list = $list->toArray();
$alarmTypeArr = self::getAlarmType();
$msgTypeArr = self::getMsgType();
$data = [];
foreach ($list as $item) {
$item['alarm_type'] = $alarmTypeArr[$item['alarm_type']];
$item['msg_type'] = $msgTypeArr[$item['msg_type']];
$updated = [
'updated_at' => get_datetime()
];
if ($item['alarm_type'] == 2 && $item['msg_type'] == 3) {
$updated_at = $item['updated_at'];
$updated_times = strtotime($updated_at);
$diff_times = time() - $updated_times;
if ($diff_times == 0 || $diff_times >= 300) {
$camera_status = ParkingCamera::query()->where(
'id',
$item['camera_id']
)->value('status');
$updated['is_notice'] = $camera_status ? 0 : 1;
} else {
continue;
}
} else {
$updated['is_notice'] = 0;
}
AdminNotice::query()->where('id', $item['id'])->update(
$updated
);
unset($item['is_notice'], $item['updated_at'], $item['camera_id']);
$data[] = $item;
}
return $data;
}
return [];
}
}

1
database/migrations/2026_04_23_143449_create_admin_notice_table.php

@ -25,6 +25,7 @@ return new class extends Migration
$table->tinyInteger('is_read')->default(0)->comment('是否已读');
$table->integer('user_id')->default(0)->comment('操作员');
$table->integer('license_plate_id')->default(0)->comment('车牌id');
$table->tinyInteger('is_notice')->default(0)->comment('是否通知');
$table->timestamps();
$table->innoDb();
$table->index('alarm_type', 'alarm_type');

3
routes/admin/api.php

@ -222,7 +222,8 @@ Route::group(['prefix' => 'admin'], function () {
Route::get('/whitelist/export', [ParkingWhitelistController::class, 'export']);
// 警报&通知
Route::get('/notice', [NoticeController::class, 'index']);
Route::get('/notice/index', [NoticeController::class, 'message']);
Route::get('/notice/index', [NoticeController::class, 'readInfo']);
Route::get('/noticeMessage', [NoticeController::class, 'noticeMessage']);
Route::get('/notice/search', [NoticeController::class, 'search']);
Route::get('/notice/setting', [NoticeController::class, 'create']);
Route::post('/notice/setting', [NoticeController::class, 'setting']);

Loading…
Cancel
Save