Files
journal/sql/db_module_enhance.sql

70 lines
5.1 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- =====================================================================
-- 数据库收录模块增强 - 迁移脚本
-- 用途:新增 “推送日志表” 与 “推送渠道配置表”
-- 表前缀j_ (与 application/database.php 的 prefix 一致)
-- 执行方式:在 phpMyAdmin / Navicat 选中 journal 库后直接执行本文件
-- 可重复执行IF NOT EXISTS不会影响已有数据
-- =====================================================================
SET NAMES utf8;
-- ---------------------------------------------------------------------
-- 推送日志表:记录每一期 / 每一篇文章推送到各数据库的结果,支持重推
-- ---------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `j_db_push_log` (
`log_id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
`journal_id` INT NOT NULL DEFAULT 0 COMMENT '期刊id',
`journal_stage_id` INT NOT NULL DEFAULT 0 COMMENT '分期id',
`article_id` INT NOT NULL DEFAULT 0 COMMENT '文章id0表示整期推送',
`channel` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '渠道标识 portico/scopus/ebsco/cnki/email_data...',
`channel_name` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '渠道中文/展示名',
`status` TINYINT NOT NULL DEFAULT 0 COMMENT '0待推送/排队中 1成功 2失败',
`attempt` INT NOT NULL DEFAULT 0 COMMENT '已尝试次数',
`message` TEXT NULL COMMENT '返回信息 / 失败原因',
`operator` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '触发人',
`ctime` INT NOT NULL DEFAULT 0 COMMENT '创建时间戳',
`utime` INT NOT NULL DEFAULT 0 COMMENT '更新时间戳',
PRIMARY KEY (`log_id`),
KEY `idx_stage_channel` (`journal_stage_id`, `channel`),
KEY `idx_journal` (`journal_id`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='数据库收录推送日志';
-- ---------------------------------------------------------------------
-- 推送渠道配置表:把 “哪些期刊推给哪些数据库” 从代码硬编码改为可配置
-- 若该表为空,程序会回退到 application/extra/dbpush.php 里的默认配置,
-- 因此本表可以逐步维护、不影响现有行为。
-- ---------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `j_db_channel` (
`channel_id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
`channel_key` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '渠道唯一标识(与推送器对应)',
`name` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '展示名',
`transport` VARCHAR(16) NOT NULL DEFAULT '' COMMENT '传输方式 sftp/ftp/email',
`pusher` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '推送器标识,留空则同 channel_key',
`journal_ids` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '适用期刊id逗号分隔留空=全部期刊',
`config` TEXT NULL COMMENT 'JSON 额外配置(如邮件收件人)',
`is_enable` TINYINT NOT NULL DEFAULT 1 COMMENT '是否启用 1是0否',
`sort` INT NOT NULL DEFAULT 0 COMMENT '排序(大在前)',
`ctime` INT NOT NULL DEFAULT 0 COMMENT '创建时间戳',
`utime` INT NOT NULL DEFAULT 0 COMMENT '更新时间戳',
`state` TINYINT NOT NULL DEFAULT 0 COMMENT '0正常 1删除',
PRIMARY KEY (`channel_id`),
KEY `idx_key` (`channel_key`),
KEY `idx_state` (`state`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='数据库收录推送渠道配置';
-- ---------------------------------------------------------------------
-- 初始化渠道配置:与当前代码写死的行为保持一致,方便直接切换到配置驱动
-- journal_ids 为空表示全部期刊
-- ---------------------------------------------------------------------
INSERT INTO `j_db_channel` (`channel_key`, `name`, `transport`, `pusher`, `journal_ids`, `config`, `is_enable`, `sort`, `ctime`)
SELECT * FROM (
SELECT 'portico' AS channel_key, 'Portico' AS name, 'sftp' AS transport, 'portico' AS pusher, '' AS journal_ids, NULL AS config, 1 AS is_enable, 90 AS sort, UNIX_TIMESTAMP() AS ctime
UNION ALL SELECT 'scopus', 'Scopus (Elsevier)', 'sftp', 'scopus', '1,11', NULL, 1, 80, UNIX_TIMESTAMP()
UNION ALL SELECT 'ebsco', 'EBSCO', 'ftp', 'ebsco', '2,8,20,15,9,10,3,1,14,11,4,18', NULL, 1, 70, UNIX_TIMESTAMP()
UNION ALL SELECT 'cnki', 'CNKI 中国知网', 'ftp', 'cnki', '', NULL, 0, 60, UNIX_TIMESTAMP()
UNION ALL SELECT 'email_data', '通用数据库邮件送交', 'email', 'email_data', '', NULL, 1, 50, UNIX_TIMESTAMP()
UNION ALL SELECT 'email_wanfang','万方数据库', 'email', 'email_data', '1', '{"recipients":["958518573@qq.com","swyy2@wanfangdata.com.cn"]}', 1, 40, UNIX_TIMESTAMP()
) AS seed
WHERE NOT EXISTS (SELECT 1 FROM `j_db_channel` LIMIT 1);