大更新,1投稿系统参考文献的类型增加功能,,,2官网数据库功能

This commit is contained in:
wangjinlei
2026-07-08 11:15:44 +08:00
parent 186126a726
commit 05af67bc1a
22 changed files with 1634 additions and 81 deletions

69
sql/db_module_enhance.sql Normal file
View File

@@ -0,0 +1,69 @@
-- =====================================================================
-- 数据库收录模块增强 - 迁移脚本
-- 用途:新增 “推送日志表” 与 “推送渠道配置表”
-- 表前缀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);