perf(chat): 分页客服会话并拆分统计查询

This commit is contained in:
yml2213
2026-08-25 19:21:38 +08:00
parent d95b95211c
commit 52dcb18c96
16 changed files with 264 additions and 87 deletions
@@ -0,0 +1,37 @@
-- +goose Up
-- +goose StatementBegin
ALTER TABLE chat_messages
ADD COLUMN admin_attention_type VARCHAR(32) NOT NULL DEFAULT '' COMMENT '客服关注类型: user_inquiry用户咨询, order_paid支付成功' AFTER attachment_urls,
ADD KEY idx_chat_messages_attention (conversation_id, admin_attention_type, id);
UPDATE chat_messages
SET admin_attention_type = 'user_inquiry'
WHERE sender_type = 'user' AND admin_attention_type = '';
INSERT INTO chat_admin_conversation_states (
conversation_id, admin_user_id, remark, last_read_message_id, last_read_at
)
SELECT c.id, au.id, '', COALESCE(c.last_message_id, 0), c.last_message_at
FROM chat_conversations c
JOIN admin_users au ON au.status = 'active'
JOIN admin_user_roles aur ON aur.admin_user_id = au.id
JOIN roles r ON r.id = aur.role_id AND r.code = 'cs'
LEFT JOIN chat_admin_conversation_states cas
ON cas.conversation_id = c.id AND cas.admin_user_id = au.id
WHERE cas.id IS NULL;
UPDATE chat_admin_conversation_states cas
JOIN chat_conversations c ON c.id = cas.conversation_id
SET cas.last_read_message_id = COALESCE(c.last_message_id, 0),
cas.last_read_at = c.last_message_at
WHERE cas.last_read_message_id = 0;
-- +goose StatementEnd
-- +goose Down
-- +goose StatementBegin
ALTER TABLE chat_messages
DROP KEY idx_chat_messages_attention,
DROP COLUMN admin_attention_type;
-- +goose StatementEnd