From 9a8d64ca87c3c569044783e47ff41340eda4efd3 Mon Sep 17 00:00:00 2001 From: wanghongjun <1445693971@qq.com> Date: Wed, 13 Aug 2025 13:56:26 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E8=AE=BE=E7=BD=AE=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=88=A0=E9=99=A4=E6=8E=A5=E5=8F=A3=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/common/task/UserClearMessage.php | 30 ++++--------------- app/enterprise/controller/Friend.php | 27 +++++++++++++++-- app/enterprise/controller/Group.php | 24 ++++++++++++++- app/enterprise/model/Message.php | 45 ++++++++++++++++++++++++++++ 4 files changed, 98 insertions(+), 28 deletions(-) diff --git a/app/common/task/UserClearMessage.php b/app/common/task/UserClearMessage.php index b28920d..cc432a2 100644 --- a/app/common/task/UserClearMessage.php +++ b/app/common/task/UserClearMessage.php @@ -47,9 +47,9 @@ class UserClearMessage extends Task */ protected function execute() { - if(date('H:i')!='02:00'){ - return false; - } +// if(date('H:i')!='02:00'){ +// return false; +// } try { $config=Config::getSystemInfo(); $status=$config['chatInfo']['userMsgClear'] ?? false; @@ -77,11 +77,7 @@ class UserClearMessage extends Task ]; $msgRes = Message::where($whereMsg)->select(); foreach ($msgRes as $msg) { - if ($msg['del_user']) { - $msg->delete_time = time(); - } else { - $msg->del_user = $form_user; - } + $msg->delete_time = time(); $msg->save(); } } @@ -101,13 +97,6 @@ class UserClearMessage extends Task $time = time() - ($days * $this->daytime); $chat_identify = "group-{$group_id}"; - // 查询群成员总数 - $countWhere = [ - ['status','=' , 1], - ['delete_time','=' , 0], - ['group_id','=' , 0] - ]; - $group_user_count = GroupUser::where($countWhere)->count(); $whereMsg = [ ['create_time', '<', $time], @@ -117,16 +106,7 @@ class UserClearMessage extends Task ]; $msgRes = Message::where($whereMsg)->select(); foreach ($msgRes as $msg) { - if ($msg['del_user']) { - $msg->del_user .= ',' . $form_user; - } else { - $msg->del_user = $form_user; - } - // 如果群的删除用户数量等于群员数量则删除这条信息 - $del_user_count = count(explode(',',$msg->del_user)); - if ($del_user_count == $group_user_count) { - $msg->delete_time = time(); - } + $msg->delete_time = time(); $msg->save(); } } diff --git a/app/enterprise/controller/Friend.php b/app/enterprise/controller/Friend.php index 0f8a066..e746c57 100644 --- a/app/enterprise/controller/Friend.php +++ b/app/enterprise/controller/Friend.php @@ -4,6 +4,7 @@ namespace app\enterprise\controller; use app\BaseController; +use app\manage\model\Config; use app\enterprise\model\{Friend as FriendModel, Message, User}; class Friend extends BaseController @@ -263,17 +264,39 @@ class Friend extends BaseController if (!is_numeric($day)) return error(lang('system.fail')); if (!is_numeric($to_user)) return error(lang('system.fail')); + $config=Config::getSystemInfo(); + $userMsgClear=$config['chatInfo']['userMsgClear'] ?? false; + if (!$userMsgClear) { + return warning(lang('system.fail')); + } + $dayArr=$config['chatInfo']['userMsgClearDay'] ?? []; + $is_exists = false; + $title = ''; + foreach ($dayArr as $val) { + if ($val['value'] == $day) { + $is_exists = true; + $title = $val['title']; + } + } + if (!$is_exists) { + return warning(lang('system.fail')); + } + $friendWhere = [ 'friend_user_id' => $to_user, 'create_user' => $uid ]; $friend = \app\enterprise\model\Friend::where($friendWhere)->find(); if (!$friend) { - return error(lang('system.fail')); + return warning(lang('system.fail')); } $friend->clear_msg_day = $day; $friend->save(); - return success(''); + $is_close = $day ? 0 : 1; + $data = Message::setAutoDelMessageNotice($uid, $to_user, $title, 0, $is_close); + $data['isMobile'] = $this->request->isMobile() ? 1 : 0; + + return success('', $data); } } diff --git a/app/enterprise/controller/Group.php b/app/enterprise/controller/Group.php index 2e27562..846ea80 100644 --- a/app/enterprise/controller/Group.php +++ b/app/enterprise/controller/Group.php @@ -3,6 +3,7 @@ namespace app\enterprise\controller; use app\BaseController; +use app\manage\model\Config; use app\enterprise\model\{User,Group as GroupModel,GroupUser,Message}; use think\Exception; use think\facade\Db; @@ -552,17 +553,38 @@ class Group extends BaseController if (!is_numeric($day)) return error(lang('system.fail')); if (!is_numeric($group_id)) return error(lang('system.fail')); + $config=Config::getSystemInfo(); + $userMsgClear=$config['chatInfo']['userMsgClear'] ?? false; + if (!$userMsgClear) { + return warning(lang('system.fail')); + } + $dayArr=$config['chatInfo']['userMsgClearDay'] ?? []; + $is_exists = false; + $title = ''; + foreach ($dayArr as $val) { + if ($val['value'] == $day) { + $is_exists = true; + $title = $val['title']; + } + } + if (!$is_exists) { + return warning(lang('system.fail')); + } + $groupUserWhere = [ 'group_id' => $group_id, 'user_id' => $uid ]; $groupUser = GroupUser::where($groupUserWhere)->find(); if (!$groupUser) { - return error(lang('system.fail')); + return warning(lang('system.fail')); } $groupUser->clear_msg_day = $day; $groupUser->save(); + $is_close = $day ? 0 : 1; + Message::setAutoDelMessageNotice($uid, $group_id,$title, 1, $is_close); + return success(''); } } diff --git a/app/enterprise/model/Message.php b/app/enterprise/model/Message.php index 70b5c54..9b1a3dd 100644 --- a/app/enterprise/model/Message.php +++ b/app/enterprise/model/Message.php @@ -342,4 +342,49 @@ class Message extends BaseModel } } + // 设置自动删除提示消息 + public static function setAutoDelMessageNotice($from_user,$to_user, $title,$is_group, $is_close = 0) + { + if ($is_group == 1) { + $chat_identify = "group-{$to_user}"; + $groupWhere = [ + ['status','=' , 1], + ['delete_time','=' , 0], + ['group_id','=' , 0], + ['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 = '您关闭了自动删除计时器'; + + $data=[ + 'from_user'=>$from_user, + 'to_user'=>$to_user, + 'content'=>str_encipher($content,true), + 'chat_identify'=>$chat_identify, + 'create_time'=>time(), + 'type'=>'event', + 'is_group'=>$is_group, + 'is_read'=>1, + 'is_top'=>0, + 'at'=>[], + 'pid'=>0, + 'is_undo'=>1, + 'del_user' => $del_user + ]; + $message = new self(); + $message->save($data); + + $msgInfo = $data; + $msgInfo['msg_id'] = $message->msg_id; + $msgInfo['sendTime'] = $data['create_time']; + $msgInfo['toContactId'] = $msgInfo['is_group'] == 1 ? $msgInfo['chat_identify'] : $to_user; + $msgInfo['status']='successd'; + return $msgInfo; + } } \ No newline at end of file