saveMessage($params); } public function recall($params) { $clientId = $params["clientId"]; if ($clientId) { GroupMessage::where('im_msg_id', $clientId)->update(['is_recall'=> 1]); } } /** * 写入群聊记录 */ private function saveMessage($params) { // $params = request()->all(['msgType', 'fromAccount', 'to', 'attach', 'body',"msgidClient"]); $im_msg_id = $params['msgidClient']; if ($im_msg_id) { $gm = GroupMessage::where('im_msg_id', $im_msg_id)->first(); if ($gm) return; } $group_id = Group::where('im_chat_id', $params['to'])->value('id'); if ($params['msgType'] == 'TEXT') { $content = json_encode(['body' => $params['body']],JSON_UNESCAPED_UNICODE); } else { $content = $params['attach']; $content_arr = json_decode($content, true); $content_arr["extend"] = $params["ext"]??""; $content = json_encode($content_arr); } $group_message = new GroupMessage(); $group_message->user_id = get_userid_by_accid($params['fromAccount']); $group_message->group_id = $group_id; $group_message->content = $content; $group_message->content_type = $params['msgType']; $group_message->im_msg_id = $params['msgidClient']??null; $group_message->msg_timestamp = $params["msgTimestamp"]; $group_message->data = json_encode($params, JSON_UNESCAPED_UNICODE); $group_message->save(); Group::where("id", $group_id)->update(["last_msg_id"=>$group_message->id]); GroupUser::where("group_id", $group_id)->where("is_hidden", 1)->update(['is_hidden'=>0]); } public function readMsg($params) { // 已读时间 $ackMsgTime = $params["ackMsgTime"]; // 已读群id $ackTeamId = $params["ackTeamId"]; // accid $accid = $params["accid"]; $user_id = get_userid_by_accid($accid); $group = Group::where('im_chat_id', $ackTeamId)->first(); if (empty($group)) return; $config = GroupMessageConfig::where("user_id", $user_id)->where("group_id",$group->id)->first(); if (empty($config)) { GroupMessageConfig::create(["user_id"=>$user_id, "group_id"=>$group->id, "msg_time"=>$ackMsgTime]); } else { GroupMessageConfig::where("user_id", $user_id)->where("group_id",$group->id)->update(["msg_time"=>$ackMsgTime]); } } }