fix(chukebao): 修复触客宝 PC 页 500 — count 污染 query 与 nullable 字段

wechatFriend/chatroom/notice/followUp/todo 等接口在生产环境返回 500,改用 clone count 与字段兜底。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Manus AI
2026-05-25 05:38:09 +08:00
parent 3f7e1a4af6
commit ac47668016
6 changed files with 31 additions and 25 deletions

View File

@@ -39,7 +39,7 @@ class CustomerServiceController extends BaseController
foreach ($list as $k=>&$v){
$v['createTime'] = !empty($v['createTime']) ? date('Y-m-d H:i:s',$v['createTime']) : '';
$v['updateTime'] = !empty($v['updateTime']) ? date('Y-m-d H:i:s',$v['updateTime']) : '';
$v['labels'] = json_decode($v['labels'],true);
$v['labels'] = json_decode($v['labels'] ?? '', true) ?: [];
$momentsSetting = Db::name('kf_moments_settings')->where(['userId' => $userId,'companyId' => $companyId,'wechatId' =>$v['id']])->find();
$v['momentsMax'] = !empty($momentsSetting['max']) ? $momentsSetting['max'] : 5;
$v['momentsNum'] = !empty($momentsSetting['sendNum']) ? $momentsSetting['sendNum'] : 0;

View File

@@ -41,14 +41,14 @@ class FollowUpController extends BaseController
$query = FollowUp::where($where);
$total = $query->count();
$list = $query->where($where)->page($page,$limit)->order('id desc')->select();
$total = (clone $query)->count();
$list = $query->page($page, $limit)->order('id desc')->select()->toArray();
foreach ($list as &$item) {
$nickname = Db::table('s2_wechat_friend')->where(['id' => $item['friendId']])->value('nickname');
$friendId = $item['friendId'] ?? 0;
$nickname = $friendId ? Db::table('s2_wechat_friend')->where(['id' => $friendId])->value('nickname') : '';
$item['nickname'] = !empty($nickname) ? $nickname : '-';
$item['reminderTime'] = date('Y-m-d H:i:s',$item['reminderTime']);
$item['reminderTime'] = !empty($item['reminderTime']) ? date('Y-m-d H:i:s', $item['reminderTime']) : '';
}
unset($item);

View File

@@ -40,10 +40,12 @@ class NoticeController extends BaseController
foreach ($list as $k => &$v) {
if ($v['type'] == 1) {
$friendId = ToDo::where(['id' => $v['bindId']])->value('friendId');
} elseif ($v['type'] == 2) {
$friendId = FollowUp::where(['id' => $v['bindId']])->value('friendId');
$noticeType = $v['type'] ?? 0;
$friendId = null;
if ($noticeType == 1) {
$friendId = ToDo::where(['id' => $v['bindId'] ?? 0])->value('friendId');
} elseif ($noticeType == 2) {
$friendId = FollowUp::where(['id' => $v['bindId'] ?? 0])->value('friendId');
}
if (!empty($friendId)) {
$friend = Db::table('s2_wechat_friend')->where(['id' => $friendId])->field('nickname,avatar')->find();

View File

@@ -40,14 +40,14 @@ class ToDoController extends BaseController
}
$query = ToDo::where($where);
$total = $query->count();
$list = $query->where($where)->page($page,$limit)->order('id desc')->select();
$total = (clone $query)->count();
$list = $query->page($page, $limit)->order('id desc')->select()->toArray();
foreach ($list as &$item) {
$nickname = Db::table('s2_wechat_friend')->where(['id' => $item['friendId']])->value('nickname');
$friendId = $item['friendId'] ?? 0;
$nickname = $friendId ? Db::table('s2_wechat_friend')->where(['id' => $friendId])->value('nickname') : '';
$item['nickname'] = !empty($nickname) ? $nickname : '-';
$item['reminderTime'] = date('Y-m-d H:i:s',$item['reminderTime']);
$item['reminderTime'] = !empty($item['reminderTime']) ? date('Y-m-d H:i:s', $item['reminderTime']) : '';
}
unset($item);

View File

@@ -43,7 +43,7 @@ class WechatChatroomController extends BaseController
}
$query->order('id desc');
$total = $query->count();
$total = (clone $query)->count();
$list = $query->page($page, $limit)->select();
@@ -90,13 +90,17 @@ class WechatChatroomController extends BaseController
// 处理每个聊天室的数据
foreach ($list as $k => &$v) {
$roomId = $v['id'] ?? null;
if ($roomId === null) {
continue;
}
$v['createTime'] = !empty($v['createTime']) ? date('Y-m-d H:i:s', $v['createTime']) : '';
$v['updateTime'] = !empty($v['updateTime']) ? date('Y-m-d H:i:s', $v['updateTime']) : '';
$config = [
'unreadCount' => isset($unreadCounts[$v['id']]) ? $unreadCounts[$v['id']] : 0,
'chat' => isset($latestMessages[$v['id']]),
'msgTime' => isset($latestMessages[$v['id']]) ? $latestMessages[$v['id']]['wechatTime'] : 0
'unreadCount' => isset($unreadCounts[$roomId]) ? $unreadCounts[$roomId] : 0,
'chat' => isset($latestMessages[$roomId]),
'msgTime' => isset($latestMessages[$roomId]) ? $latestMessages[$roomId]['wechatTime'] : 0
];
$v['config'] = $config;
}
@@ -201,7 +205,7 @@ class WechatChatroomController extends BaseController
}
$query->order('id desc');
$total = $query->count();
$total = (clone $query)->count();
$list = $query->page($page, $limit)->select();
// 处理时间格式

View File

@@ -44,7 +44,7 @@ class WechatFriendController extends BaseController
}
$query->order('id desc');
$total = $query->count();
$total = (clone $query)->count();
$list = $query->page($page, $limit)->select();
// 提取所有好友ID
@@ -58,8 +58,8 @@ class WechatFriendController extends BaseController
// 处理每个好友的数据
foreach ($list as $k => &$v) {
$v['labels'] = json_decode($v['labels'], true);
$v['siteLabels'] = json_decode($v['siteLabels'], true);
$v['labels'] = json_decode($v['labels'] ?? '', true) ?: [];
$v['siteLabels'] = json_decode($v['siteLabels'] ?? '', true) ?: [];
$v['createTime'] = !empty($v['createTime']) ? date('Y-m-d H:i:s', $v['createTime']) : '';
$v['updateTime'] = !empty($v['updateTime']) ? date('Y-m-d H:i:s', $v['updateTime']) : '';
$v['passTime'] = !empty($v['passTime']) ? date('Y-m-d H:i:s', $v['passTime']) : '';
@@ -97,8 +97,8 @@ class WechatFriendController extends BaseController
}
// 处理好友数据
$friend['labels'] = json_decode($friend['labels'], true);
$friend['siteLabels'] = json_decode($friend['siteLabels'], true);
$friend['labels'] = json_decode($friend['labels'] ?? '', true) ?: [];
$friend['siteLabels'] = json_decode($friend['siteLabels'] ?? '', true) ?: [];
$friend['createTime'] = !empty($friend['createTime']) ? date('Y-m-d H:i:s', $friend['createTime']) : '';
$friend['updateTime'] = !empty($friend['updateTime']) ? date('Y-m-d H:i:s', $friend['updateTime']) : '';
$friend['passTime'] = !empty($friend['passTime']) ? date('Y-m-d H:i:s', $friend['passTime']) : '';