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.
79 lines
2.2 KiB
79 lines
2.2 KiB
<?php
|
|
|
|
namespace app\common\task;
|
|
|
|
use app\enterprise\model\File;
|
|
use app\enterprise\model\GroupUser;
|
|
use yunwuxin\cron\Task;
|
|
use think\Exception;
|
|
use app\manage\model\{Config};
|
|
use app\enterprise\model\Message;
|
|
|
|
// 自动清理消息定时任务
|
|
class ClearMessage extends Task
|
|
{
|
|
|
|
// 定时任务日志内容
|
|
protected $content='';
|
|
protected $path='';
|
|
protected $daytime=86400;
|
|
|
|
/**
|
|
* 自动写入定时任务日志
|
|
* @return \think\response\Json
|
|
*/
|
|
protected function writeLog($text)
|
|
{
|
|
$this->path = root_path() . 'crontab.txt';
|
|
|
|
$content = '重置中!';
|
|
if (!file_exists($this->path)) {
|
|
fopen($this->path, 'w');
|
|
}
|
|
if (date('d') != 10) {
|
|
$content = file_get_contents($this->path);
|
|
}
|
|
file_put_contents($this->path, $content . date('Y-m-d H:i:s') . ':' . $text . PHP_EOL);
|
|
}
|
|
|
|
public function configure()
|
|
{
|
|
//设置每天2点执行
|
|
$this->dailyAt('02:00');
|
|
}
|
|
|
|
/**
|
|
* 执行任务
|
|
* @return mixed
|
|
*/
|
|
protected function execute()
|
|
{
|
|
if(date('H:i')!='02:00'){
|
|
return false;
|
|
}
|
|
try {
|
|
$config=Config::getSystemInfo();
|
|
$status=$config['chatInfo']['msgClear'] ?? false;
|
|
$days=$config['chatInfo']['msgClearDay'] ?? 0;
|
|
if($status && $days){
|
|
$time=time() - ($days * $this->daytime);
|
|
$where[]=['create_time','<',$time];
|
|
$res = Message::where($where)->select();
|
|
$group_id_arr = [];
|
|
foreach ($res as $resRes) {
|
|
$resRes->force()->delete();
|
|
File::syncDelFile($resRes->file_id);
|
|
if ($resRes['is_group'] == 1) {
|
|
$group_id_arr[] = $resRes['to_user'];
|
|
}
|
|
}
|
|
if ($group_id_arr) {
|
|
GroupUser::editGroupUser([['group_id','in',array_unique($group_id_arr)]], ['unread' => 0]);
|
|
}
|
|
}
|
|
print "****************消息清理成功******************\n";
|
|
} catch (Exception $e) {
|
|
print '消息清理失败:'.$e->getMessage()."\n";
|
|
}
|
|
}
|
|
}
|
|
|