From ebc24432ff3b77a12640e62aa131d5f3464d4da5 Mon Sep 17 00:00:00 2001 From: wong <106998207@qq.com> Date: Wed, 24 Sep 2025 16:22:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E5=A5=BD=E5=8F=8B=E5=92=8C?= =?UTF-8?q?=E7=BE=A4=E7=9A=84=E6=97=A7=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/chatroom/GetChatroomListV1Controller.php | 7 +++++-- .../controller/friend/GetFriendListV1Controller.php | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/Server/application/cunkebao/controller/chatroom/GetChatroomListV1Controller.php b/Server/application/cunkebao/controller/chatroom/GetChatroomListV1Controller.php index a08a5db9..65ea783a 100644 --- a/Server/application/cunkebao/controller/chatroom/GetChatroomListV1Controller.php +++ b/Server/application/cunkebao/controller/chatroom/GetChatroomListV1Controller.php @@ -22,9 +22,12 @@ class GetChatroomListV1Controller extends BaseController $keyword = $this->request->param('keyword', ''); try { + $companyId = (int)$this->getUserInfo('companyId'); $wechatIds = Db::name('device')->alias('d') - ->join('device_wechat_login dwl','dwl.deviceId=d.id AND dwl.companyId='.$this->getUserInfo('companyId')) - ->where(['d.companyId' => $this->getUserInfo('companyId'),'d.deleteTime' => 0]) + // 仅关联每个设备在 device_wechat_login 中的最新一条记录 + ->join('(SELECT MAX(id) AS id, deviceId FROM ck_device_wechat_login WHERE companyId='.$companyId.' GROUP BY deviceId) dwl_max','dwl_max.deviceId = d.id') + ->join('device_wechat_login dwl','dwl.id = dwl_max.id') + ->where(['d.companyId' => $companyId,'d.deleteTime' => 0]) ->column('dwl.wechatId'); diff --git a/Server/application/cunkebao/controller/friend/GetFriendListV1Controller.php b/Server/application/cunkebao/controller/friend/GetFriendListV1Controller.php index 86965d79..c748ffa4 100644 --- a/Server/application/cunkebao/controller/friend/GetFriendListV1Controller.php +++ b/Server/application/cunkebao/controller/friend/GetFriendListV1Controller.php @@ -42,9 +42,12 @@ class GetFriendListV1Controller extends BaseController $where[] = ['nickname|alias|wechatId','like','%'.$keyword.'%']; } + $companyId = (int)$this->getUserInfo('companyId'); $wechatIds = Db::name('device')->alias('d') - ->join('device_wechat_login dwl','dwl.deviceId=d.id AND dwl.companyId='.$this->getUserInfo('companyId')) - ->where(['d.companyId' => $this->getUserInfo('companyId'),'d.deleteTime' => 0]); + // 仅关联每个设备在 device_wechat_login 中的最新一条记录 + ->join('(SELECT MAX(id) AS id, deviceId FROM ck_device_wechat_login WHERE companyId='.$companyId.' GROUP BY deviceId) dwl_max','dwl_max.deviceId = d.id') + ->join('device_wechat_login dwl','dwl.id = dwl_max.id') + ->where(['d.companyId' => $companyId,'d.deleteTime' => 0]); if (!empty($deviceIds)){ $wechatIds = $wechatIds->where('d.id','in',$deviceIds);