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