Browse Source

自动删除删除所有人数据,删除消息后同步删除文件信息

master
wanghongjun 6 months ago
parent
commit
6e3f708581
  1. 4
      app/common/task/ClearMessage.php
  2. 9
      app/common/task/UserClearMessage.php
  3. 3
      app/enterprise/controller/Friend.php
  4. 1
      app/enterprise/controller/Group.php
  5. 7
      app/enterprise/controller/Im.php
  6. 27
      app/enterprise/model/File.php
  7. 12
      app/enterprise/model/Message.php

4
app/common/task/ClearMessage.php

@ -2,6 +2,7 @@
namespace app\common\task;
use app\enterprise\model\File;
use yunwuxin\cron\Task;
use think\Exception;
use app\manage\model\{Config};
@ -58,7 +59,8 @@ class ClearMessage extends Task
$where[]=['create_time','<',$time];
$res = Message::where($where)->select();
foreach ($res as $resRes) {
$resRes->delete();
$resRes->force()->delete();
File::syncDelFile($resRes->file_id);
}
}
print "****************消息清理成功******************\n";

9
app/common/task/UserClearMessage.php

@ -2,6 +2,7 @@
namespace app\common\task;
use app\enterprise\model\File;
use app\enterprise\model\Friend;
use app\enterprise\model\GroupUser;
use app\enterprise\model\Message;
@ -77,8 +78,8 @@ class UserClearMessage extends Task
];
$msgRes = Message::where($whereMsg)->select();
foreach ($msgRes as $msg) {
$msg->delete_time = time();
$msg->save();
$msg->force()->delete();
File::syncDelFile($msg->file_id);
}
}
@ -106,8 +107,8 @@ class UserClearMessage extends Task
];
$msgRes = Message::where($whereMsg)->select();
foreach ($msgRes as $msg) {
$msg->delete_time = time();
$msg->save();
$msg->force()->delete();
File::syncDelFile($msg->file_id);
}
}
}

3
app/enterprise/controller/Friend.php

@ -286,7 +286,7 @@ class Friend extends BaseController
'friend_user_id' => $to_user,
'create_user' => $uid
];
$friend = \app\enterprise\model\Friend::where($friendWhere)->find();
$friend = FriendModel::where($friendWhere)->find();
if (!$friend) {
return warning(lang('system.fail'));
}
@ -297,6 +297,7 @@ class Friend extends BaseController
$data = Message::setAutoDelMessageNotice($uid, $to_user, $title, 0, $is_close);
$data['isMobile'] = $this->request->isMobile() ? 1 : 0;
wsSendMsg($to_user, 'undoMessage', $data);
return success('', $data);
}
}

1
app/enterprise/controller/Group.php

@ -585,6 +585,7 @@ class Group extends BaseController
$is_close = $day ? 0 : 1;
$data = Message::setAutoDelMessageNotice($uid, $group_id,$title, 1, $is_close);
wsSendMsg($group_id, 'undoMessage', $data, 1);
return success('', $data);
}
}

7
app/enterprise/controller/Im.php

@ -526,7 +526,8 @@ class Im extends BaseController
$toContactId = $message['to_user'];
}
wsSendMsg($toContactId, 'delMessage', $message, $message['is_group']);
$message->delete();
$message->force()->delete();
File::syncDelFile($message->file_id);
return success(lang('system.delOk'));
} else {
if ($message['is_group'] == 1) {
@ -539,7 +540,8 @@ class Im extends BaseController
if ($message['del_user']) {
//$toContactId = explode('-', $message['chat_identify'])[1];
wsSendMsg($this->userInfo['user_id'], 'delMessage', $message, $message['is_group']);
$message->delete();
$message->force()->delete();
File::syncDelFile($message->file_id);
return success(lang('system.delOk'));
} else {
$message->del_user = $this->userInfo['user_id'];
@ -913,6 +915,7 @@ class Im extends BaseController
return warning(lang('system.notAuth'));
}
Message::where(['id' => $id])->find()->delete();
File::syncDelFile($message['file_id']);
// 如果是最后一条消息,需要将上一条设置为最后一条
if($message['is_last']){
Message::where(['chat_identify'=>$message['chat_identify']])->order('msg_id desc')->limit(1)->update(['is_last'=>1]);

27
app/enterprise/model/File.php

@ -10,5 +10,32 @@ class File extends BaseModel
{
protected $pk="file_id";
// 同步彻底删除文件
public static function syncDelFile($file_id)
{
if ($file_id) {
$file = new self();
$item = $file->where('file_id', $file_id)->find();
if ($item) {
// 删除文件
$filename_dir = root_path();
$file_path = $filename_dir . 'public/' . ltrim($item->src,'/');
if (file_exists($file_path)) {
unlink($file_path);
}
// 删除图片
$compress_img = $item->compress_img;
if ($compress_img) {
$img_path = $filename_dir . 'public/' . ltrim($compress_img,'/');
if (file_exists($img_path)) {
unlink($img_path);
}
}
// 删除图片数据
$item->delete();
}
}
}
}

12
app/enterprise/model/Message.php

@ -347,17 +347,8 @@ class Message extends BaseModel
{
if ($is_group == 1) {
$chat_identify = "group-{$to_user}";
$groupWhere = [
['status','=' , 1],
['delete_time','=' , 0],
['group_id','=' , $to_user],
['user_id','!=' , $from_user]
];
$group_user = GroupUser::where($groupWhere)->column('user_id');
$del_user = $group_user ? implode(',',$group_user) : '';
} else {
$chat_identify = chat_identify($from_user,$to_user);
$del_user = $to_user;
}
$content = '已设置自动删除' . $title . '前发送的消息';
if ($is_close) $content = '关闭了自动删除计时器';
@ -374,8 +365,7 @@ class Message extends BaseModel
'is_top'=>0,
'at'=>[],
'pid'=>0,
'is_undo'=>1,
'del_user' => $del_user
'is_undo'=>1
];
$message = new self();
$message->save($data);

Loading…
Cancel
Save