perf(chat): 分页客服会话并拆分统计查询
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user