fix:1. 修改消息时@成员不会拉进群 2. @的时候,会话以外成员排序更改为前5名为最近联系的人 3. 审批中心时间后面加周几 4.审批拒绝不能输入表情的bug修复

This commit is contained in:
weifashi
2023-08-09 18:33:00 +08:00
parent 5b1fc8af84
commit 9944dc4693
6 changed files with 73 additions and 29 deletions

View File

@@ -849,6 +849,8 @@ class WebSocketDialogMsg extends AbstractModel
$dialogMsg->updateInstance($updateData);
$dialogMsg->key = $dialogMsg->generateMsgKey();
$dialogMsg->save();
//
$dialogMsg->msgJoinGroup($dialog, $dialogMsg);
//
$dialog->pushMsg('update', array_merge($updateData, [
'id' => $dialogMsg->id
@@ -896,4 +898,41 @@ class WebSocketDialogMsg extends AbstractModel
return Base::retSuccess('发送成功', $dialogMsg);
}
}
/**
* 将被@的人加入群
* @param $dialogMsg 发送的消息
* @param $dialog 对话
* @return array
*/
public static function msgJoinGroup($dialog, $dialogMsg)
{
$updateds = [];
$silences = [];
foreach ($dialog->dialogUser as $dialogUser) {
$updateds[$dialogUser->userid] = $dialogUser->updated_at;
$silences[$dialogUser->userid] = $dialogUser->silence;
}
$userids = array_keys($silences);
// 提及会员
$mentions = [];
if ($dialogMsg->type === 'text') {
preg_match_all("/<span class=\"mention user\" data-id=\"(\d+)\">/", $dialogMsg->msg['text'], $matchs);
if ($matchs) {
$mentions = array_values(array_filter(array_unique($matchs[1])));
}
}
// 将会话以外的成员加入会话内
$diffids = array_values(array_diff($mentions, $userids));
if ($diffids) {
// 仅(群聊)且(是群主或没有群主)才可以@成员以外的人
if ($dialog->type === 'group' && in_array($dialog->owner_id, [0, $dialogMsg->userid])) {
$dialog->joinGroup($diffids, $dialogMsg->userid);
$dialog->pushMsg("groupJoin", null, $diffids);
$userids = array_values(array_unique(array_merge($mentions, $userids)));
}
}
return compact('updateds', 'silences', 'userids', 'mentions');
}
}