You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.2 KiB
52 lines
1.2 KiB
<?php
|
|
|
|
namespace App\Service\Admin;
|
|
|
|
use App\Models\WorkorderItem;
|
|
use App\Traits\DemandTraits;
|
|
use Dcat\Admin\Admin;
|
|
use Illuminate\Support\Facades\Cache;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
/**
|
|
* 全局通知-后台
|
|
* Class GlobalNoticeService
|
|
* @package App\Service
|
|
*/
|
|
class GlobalNoticeService
|
|
{
|
|
public function unreadWOrder($pointType, $isBadge = false)
|
|
{
|
|
|
|
$cacheNotice = Cache::get('w_order_notice', '[]');
|
|
$cacheNoticeIds = json_decode($cacheNotice, true);
|
|
|
|
$builder = WorkorderItem::query()
|
|
->has('workorder')
|
|
->where(function ($query) use ($pointType) {
|
|
$query->where('point_id',Admin::user()->id)
|
|
->where('point_type',$pointType);
|
|
})
|
|
->where('is_read', 0)
|
|
->whereIn('id', $cacheNoticeIds);
|
|
|
|
if ($isBadge === true) {
|
|
return $builder->count();
|
|
}
|
|
|
|
$res = $builder->pluck('id')
|
|
->toArray();
|
|
|
|
$cacheNoticeIds = array_diff($cacheNoticeIds, $res);
|
|
Cache::forever('w_order_notice', json_encode($cacheNoticeIds));
|
|
return empty($res) ? 0 : 1;
|
|
}
|
|
|
|
public function cacheWOrderNotice($id)
|
|
{
|
|
$cacheNotice = Cache::get('w_order_notice', '[]');
|
|
$cacheNoticeIds = json_decode($cacheNotice, true);
|
|
$cacheNoticeIds[] = $id;
|
|
Cache::forever('w_order_notice', json_encode($cacheNoticeIds));
|
|
}
|
|
}
|