- 新增数据库迁移 000008: chat_conversations 增加 listing_id, 新建 chat_qrcode_pool 表 - 更新 GORM 模型: ChatConversation 新增 ListingID 字段, 新增 ChatQrCode 模型 - 实现二维码池管理后端 API: 创建/列表/统计/更新/删除 - 新增管理后台路由: /api/admin/chats/qrcodes - 新增系统配置: chat.listing_group_welcome, chat.qrcode_low_stock_threshold - 更新优化方案文档: 废弃双群方案, 采用单群方案 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
51 lines
2.3 KiB
SQL
51 lines
2.3 KiB
SQL
-- +goose Up
|
|
-- +goose StatementBegin
|
|
|
|
-- 1. chat_conversations 表新增 listing_id 列
|
|
ALTER TABLE chat_conversations
|
|
ADD COLUMN listing_id BIGINT UNSIGNED NULL COMMENT '关联的发布ID(listing_group类型会话使用)',
|
|
ADD INDEX idx_chat_conversations_listing (listing_id);
|
|
|
|
-- 2. 新建 chat_qrcode_pool 表(企业微信群二维码池)
|
|
CREATE TABLE IF NOT EXISTS chat_qrcode_pool (
|
|
id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
|
|
image_url VARCHAR(512) NOT NULL COMMENT 'MinIO存储的二维码图片URL',
|
|
status VARCHAR(16) NOT NULL DEFAULT 'unused' COMMENT '状态: unused/used/disabled',
|
|
conversation_id BIGINT UNSIGNED NULL COMMENT '发出后记录到哪个发布群(留痕)',
|
|
used_at DATETIME NULL COMMENT '使用时间',
|
|
expires_at DATETIME NULL COMMENT '企微群码失效时间(默认创建+7天)',
|
|
created_by BIGINT UNSIGNED NOT NULL COMMENT '上传的客服 admin_id',
|
|
note VARCHAR(255) NOT NULL DEFAULT '' COMMENT '备注,如"7月企微群A"',
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
INDEX idx_qrcode_status (status),
|
|
INDEX idx_qrcode_expires (expires_at),
|
|
INDEX idx_qrcode_conversation (conversation_id)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='企业微信群二维码池';
|
|
|
|
-- 3. 新增 system_configs 配置项(system_configs 表只有 key/value/description 三列)
|
|
INSERT INTO system_configs (`key`, `value`, description) VALUES
|
|
('chat.listing_group_welcome', '欢迎加入账号群!请号主扫描下方二维码加入企业微信群,方便客服与您及时联系。', '发布群欢迎语'),
|
|
('chat.qrcode_low_stock_threshold', '5', '二维码库存预警阈值')
|
|
ON DUPLICATE KEY UPDATE
|
|
`value` = VALUES(`value`),
|
|
description = VALUES(description);
|
|
|
|
-- +goose StatementEnd
|
|
|
|
-- +goose Down
|
|
-- +goose StatementBegin
|
|
|
|
-- 回滚配置项
|
|
DELETE FROM system_configs WHERE `key` IN ('chat.listing_group_welcome', 'chat.qrcode_low_stock_threshold');
|
|
|
|
-- 回滚表
|
|
DROP TABLE IF EXISTS chat_qrcode_pool;
|
|
|
|
-- 回滚列
|
|
ALTER TABLE chat_conversations
|
|
DROP INDEX idx_chat_conversations_listing,
|
|
DROP COLUMN listing_id;
|
|
|
|
-- +goose StatementEnd
|