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.5 KiB
52 lines
1.5 KiB
<?php
|
|
|
|
namespace app\common\task;
|
|
|
|
use yunwuxin\cron\Task;
|
|
use think\Exception;
|
|
use think\facade\Cache;
|
|
use app\manage\model\{Config};
|
|
use app\enterprise\model\Message;
|
|
|
|
// 自动清理消息定时任务
|
|
class SetAtRead extends Task
|
|
{
|
|
|
|
// 定时任务日志内容
|
|
protected $content='';
|
|
protected $path='';
|
|
protected $daytime=86400;
|
|
|
|
public function configure()
|
|
{
|
|
//设置每天8点执行
|
|
$this->everyMinute();
|
|
}
|
|
|
|
/**
|
|
* 执行任务
|
|
* @return mixed
|
|
*/
|
|
protected function execute()
|
|
{
|
|
try {
|
|
$atListQueue=Cache::get('atListQueue');
|
|
if($atListQueue){
|
|
foreach ($atListQueue as $key=>$val){
|
|
$message=Message::where('msg_id',$key)->value('at');
|
|
$atList=($message ?? null) ? explode(',',$message): [];
|
|
// 两个数组取差集
|
|
$uniqueArr=array_unique($val);
|
|
$newAtList = array_filter($atList, function ($value) use ($uniqueArr) {
|
|
return !in_array($value, $uniqueArr);
|
|
});
|
|
Message::where('msg_id',$key)->update(['at'=>implode(',',$newAtList)]);
|
|
}
|
|
Cache::delete('atListQueue');
|
|
}
|
|
print "****************设置已读成功******************\n";
|
|
} catch (Exception $e) {
|
|
print '设置已读失败:'.$e->getMessage()."\n";
|
|
}
|
|
}
|
|
}
|
|
|