Browse Source

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

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

9
app/common/task/UserClearMessage.php

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

3
app/enterprise/controller/Friend.php

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

1
app/enterprise/controller/Group.php

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

7
app/enterprise/controller/Im.php

@ -526,7 +526,8 @@ class Im extends BaseController
$toContactId = $message['to_user']; $toContactId = $message['to_user'];
} }
wsSendMsg($toContactId, 'delMessage', $message, $message['is_group']); wsSendMsg($toContactId, 'delMessage', $message, $message['is_group']);
$message->delete(); $message->force()->delete();
File::syncDelFile($message->file_id);
return success(lang('system.delOk')); return success(lang('system.delOk'));
} else { } else {
if ($message['is_group'] == 1) { if ($message['is_group'] == 1) {
@ -539,7 +540,8 @@ class Im extends BaseController
if ($message['del_user']) { if ($message['del_user']) {
//$toContactId = explode('-', $message['chat_identify'])[1]; //$toContactId = explode('-', $message['chat_identify'])[1];
wsSendMsg($this->userInfo['user_id'], 'delMessage', $message, $message['is_group']); 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')); return success(lang('system.delOk'));
} else { } else {
$message->del_user = $this->userInfo['user_id']; $message->del_user = $this->userInfo['user_id'];
@ -913,6 +915,7 @@ class Im extends BaseController
return warning(lang('system.notAuth')); return warning(lang('system.notAuth'));
} }
Message::where(['id' => $id])->find()->delete(); Message::where(['id' => $id])->find()->delete();
File::syncDelFile($message['file_id']);
// 如果是最后一条消息,需要将上一条设置为最后一条 // 如果是最后一条消息,需要将上一条设置为最后一条
if($message['is_last']){ if($message['is_last']){
Message::where(['chat_identify'=>$message['chat_identify']])->order('msg_id desc')->limit(1)->update(['is_last'=>1]); 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"; 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) { if ($is_group == 1) {
$chat_identify = "group-{$to_user}"; $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 { } else {
$chat_identify = chat_identify($from_user,$to_user); $chat_identify = chat_identify($from_user,$to_user);
$del_user = $to_user;
} }
$content = '已设置自动删除' . $title . '前发送的消息'; $content = '已设置自动删除' . $title . '前发送的消息';
if ($is_close) $content = '关闭了自动删除计时器'; if ($is_close) $content = '关闭了自动删除计时器';
@ -374,8 +365,7 @@ class Message extends BaseModel
'is_top'=>0, 'is_top'=>0,
'at'=>[], 'at'=>[],
'pid'=>0, 'pid'=>0,
'is_undo'=>1, 'is_undo'=>1
'del_user' => $del_user
]; ];
$message = new self(); $message = new self();
$message->save($data); $message->save($data);

Loading…
Cancel
Save