Browse Source

用户设置自动删除接口优化

master
wanghongjun 7 months ago
parent
commit
9a8d64ca87
  1. 30
      app/common/task/UserClearMessage.php
  2. 27
      app/enterprise/controller/Friend.php
  3. 24
      app/enterprise/controller/Group.php
  4. 45
      app/enterprise/model/Message.php

30
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();
}
}

27
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);
}
}

24
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('');
}
}

45
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;
}
}
Loading…
Cancel
Save