From 18a7055a4ebb781e90fd96ec2db2614e577c364a Mon Sep 17 00:00:00 2001 From: wong <106998207@qq.com> Date: Tue, 28 Oct 2025 16:46:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=96=B0=E5=A2=9Eai=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chukebao/controller/MessageController.php | 7 ++ .../controller/WechatFriendController.php | 78 +++++++++---------- 2 files changed, 46 insertions(+), 39 deletions(-) diff --git a/Server/application/chukebao/controller/MessageController.php b/Server/application/chukebao/controller/MessageController.php index 1d44d14d..5a6402c2 100644 --- a/Server/application/chukebao/controller/MessageController.php +++ b/Server/application/chukebao/controller/MessageController.php @@ -2,6 +2,7 @@ namespace app\chukebao\controller; +use app\chukebao\model\FriendSettings; use library\ResponseHelper; use think\Db; @@ -98,6 +99,10 @@ class MessageController extends BaseController ->column('COUNT(*) AS cnt', 'wechatChatroomId'); } + $aiTypeData = []; + if (!empty($friendIds)) { + $aiTypeData = FriendSettings::where('friendId', 'in', $friendIds)->column('friendId,type'); + } foreach ($list as $k => &$v) { @@ -106,6 +111,7 @@ class MessageController extends BaseController $unreadCount = 0; + $v['aiType'] = 0; if (!empty($v['wechatFriendId'])) { $v['nickname'] = !empty($friends[$v['wechatFriendId']]) ? $friends[$v['wechatFriendId']]['nickname'] : ''; $v['avatar'] = !empty($friends[$v['wechatFriendId']]) ? $friends[$v['wechatFriendId']]['avatar'] : ''; @@ -115,6 +121,7 @@ class MessageController extends BaseController $v['wechatId'] = !empty($friends[$v['wechatFriendId']]) ? $friends[$v['wechatFriendId']]['wechatId'] : ''; $v['labels'] = !empty($friends[$v['wechatFriendId']]) ? json_decode($friends[$v['wechatFriendId']]['labels'], true) : []; $unreadCount = isset($friendUnreadMap[$v['wechatFriendId']]) ? (int)$friendUnreadMap[$v['wechatFriendId']] : 0; + $v['aiType'] = isset($aiTypeData[$v['wechatFriendId']]) ? $aiTypeData[$v['wechatFriendId']] : 0; unset($v['chatroomId']); } diff --git a/Server/application/chukebao/controller/WechatFriendController.php b/Server/application/chukebao/controller/WechatFriendController.php index 573e6811..5851e0f8 100644 --- a/Server/application/chukebao/controller/WechatFriendController.php +++ b/Server/application/chukebao/controller/WechatFriendController.php @@ -24,50 +24,50 @@ class WechatFriendController extends BaseController $list = $query->page($page, $limit)->select(); - /* // 提取所有好友ID + // 提取所有好友ID $friendIds = array_column($list, 'id'); - // 一次性查询所有好友的未读消息数量 - $unreadCounts = []; - if (!empty($friendIds)) { - $unreadResults = Db::table('s2_wechat_message') - ->field('wechatFriendId, COUNT(*) as count') - ->where('wechatFriendId', 'in', $friendIds) - ->where('isRead', 0) - ->group('wechatFriendId') - ->select(); - if (!empty($unreadResults)) { - foreach ($unreadResults as $result) { - $unreadCounts[$result['wechatFriendId']] = $result['count']; - } - } - } + /* // 一次性查询所有好友的未读消息数量 + $unreadCounts = []; + if (!empty($friendIds)) { + $unreadResults = Db::table('s2_wechat_message') + ->field('wechatFriendId, COUNT(*) as count') + ->where('wechatFriendId', 'in', $friendIds) + ->where('isRead', 0) + ->group('wechatFriendId') + ->select(); + if (!empty($unreadResults)) { + foreach ($unreadResults as $result) { + $unreadCounts[$result['wechatFriendId']] = $result['count']; + } + } + } - // 一次性查询所有好友的最新消息 - $latestMessages = []; - if (!empty($friendIds)) { - // 使用子查询获取每个好友的最新消息ID - $subQuery = Db::table('s2_wechat_message') - ->field('MAX(id) as max_id, wechatFriendId') - ->where('wechatFriendId', 'in', $friendIds) - ->group('wechatFriendId') - ->buildSql(); + // 一次性查询所有好友的最新消息 + $latestMessages = []; + if (!empty($friendIds)) { + // 使用子查询获取每个好友的最新消息ID + $subQuery = Db::table('s2_wechat_message') + ->field('MAX(id) as max_id, wechatFriendId') + ->where('wechatFriendId', 'in', $friendIds) + ->group('wechatFriendId') + ->buildSql(); - if (!empty($subQuery)) { - // 查询最新消息的详细信息 - $messageResults = Db::table('s2_wechat_message') - ->alias('m') - ->join([$subQuery => 'sub'], 'm.id = sub.max_id') - ->field('m.*, sub.wechatFriendId') - ->select(); + if (!empty($subQuery)) { + // 查询最新消息的详细信息 + $messageResults = Db::table('s2_wechat_message') + ->alias('m') + ->join([$subQuery => 'sub'], 'm.id = sub.max_id') + ->field('m.*, sub.wechatFriendId') + ->select(); - if (!empty($messageResults)) { - foreach ($messageResults as $message) { - $latestMessages[$message['wechatFriendId']] = $message; - } - } - } - }*/ + if (!empty($messageResults)) { + foreach ($messageResults as $message) { + $latestMessages[$message['wechatFriendId']] = $message; + } + } + } + }*/ $aiTypeData = [];