145 lines
8.3 KiB
SQL
145 lines
8.3 KiB
SQL
-- 物流业务知识库 M1:分类 + 文章
|
||
-- 执行库:OMS 业务库
|
||
|
||
CREATE TABLE IF NOT EXISTS `t_kb_category` (
|
||
`Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||
`Code` VARCHAR(64) NOT NULL COMMENT '稳定键,如 pricing',
|
||
`Name` VARCHAR(128) NOT NULL COMMENT '展示名(中文)',
|
||
`SortOrder` INT NOT NULL DEFAULT 0 COMMENT '排序,越小越前',
|
||
`Enabled` TINYINT NOT NULL DEFAULT 1 COMMENT '是否启用:0-否,1-是',
|
||
`IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是',
|
||
`ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()) COMMENT '并发戳',
|
||
`CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||
`CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`UpdateUserId` INT NULL COMMENT '更新人',
|
||
`UpdateTime` DATETIME NULL COMMENT '更新时间',
|
||
PRIMARY KEY (`Id`),
|
||
UNIQUE KEY `uk_kb_category_code` (`Code`),
|
||
KEY `idx_kb_category_enabled_sort` (`Enabled`, `SortOrder`)
|
||
) COMMENT='知识库分类';
|
||
|
||
CREATE TABLE IF NOT EXISTS `t_kb_article` (
|
||
`Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||
`CategoryId` INT NOT NULL COMMENT '分类 Id',
|
||
`Title` VARCHAR(200) NOT NULL COMMENT '标题(中文)',
|
||
`Summary` VARCHAR(500) NULL COMMENT '列表摘要',
|
||
`Content` LONGTEXT NOT NULL COMMENT 'Markdown 正文(中文)',
|
||
`Audience` VARCHAR(16) NOT NULL DEFAULT 'customer' COMMENT '受众 customer/internal',
|
||
`Status` VARCHAR(16) NOT NULL DEFAULT 'draft' COMMENT 'draft/published/offline',
|
||
`Tags` VARCHAR(256) NULL COMMENT '逗号分隔标签',
|
||
`RelatedPath` VARCHAR(256) NULL COMMENT '站内关联 path',
|
||
`RelatedLabel` VARCHAR(64) NULL COMMENT '关联按钮文案',
|
||
`IsPinned` TINYINT NOT NULL DEFAULT 0 COMMENT '置顶:0-否,1-是',
|
||
`SortOrder` INT NOT NULL DEFAULT 0 COMMENT '同类排序',
|
||
`PublishTime` DATETIME NULL COMMENT '发布时间',
|
||
`ExpireTime` DATETIME NULL COMMENT '过期时间',
|
||
`ViewCount` INT NOT NULL DEFAULT 0 COMMENT '浏览次数',
|
||
`IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是',
|
||
`ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()) COMMENT '并发戳',
|
||
`CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||
`CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`UpdateUserId` INT NULL COMMENT '更新人',
|
||
`UpdateTime` DATETIME NULL COMMENT '更新时间',
|
||
PRIMARY KEY (`Id`),
|
||
KEY `idx_kb_article_list` (`Status`, `Audience`, `CategoryId`, `IsPinned`, `SortOrder`),
|
||
KEY `idx_kb_article_publish` (`Status`, `Audience`, `PublishTime`),
|
||
KEY `idx_kb_article_hot` (`Status`, `Audience`, `IsPinned`, `ViewCount`)
|
||
) COMMENT='知识库文章';
|
||
|
||
-- 种子分类(幂等:Code 唯一)
|
||
INSERT INTO `t_kb_category` (`Code`, `Name`, `SortOrder`, `Enabled`)
|
||
SELECT 'pricing', '查价与计费', 10, 1 FROM DUAL
|
||
WHERE NOT EXISTS (SELECT 1 FROM `t_kb_category` WHERE `Code` = 'pricing' AND `IsDeleted` = 0);
|
||
|
||
INSERT INTO `t_kb_category` (`Code`, `Name`, `SortOrder`, `Enabled`)
|
||
SELECT 'order', '下单与轨迹', 20, 1 FROM DUAL
|
||
WHERE NOT EXISTS (SELECT 1 FROM `t_kb_category` WHERE `Code` = 'order' AND `IsDeleted` = 0);
|
||
|
||
INSERT INTO `t_kb_category` (`Code`, `Name`, `SortOrder`, `Enabled`)
|
||
SELECT 'exception', '问题件与售后', 30, 1 FROM DUAL
|
||
WHERE NOT EXISTS (SELECT 1 FROM `t_kb_category` WHERE `Code` = 'exception' AND `IsDeleted` = 0);
|
||
|
||
INSERT INTO `t_kb_category` (`Code`, `Name`, `SortOrder`, `Enabled`)
|
||
SELECT 'customs', '禁限运与清关', 40, 1 FROM DUAL
|
||
WHERE NOT EXISTS (SELECT 1 FROM `t_kb_category` WHERE `Code` = 'customs' AND `IsDeleted` = 0);
|
||
|
||
INSERT INTO `t_kb_category` (`Code`, `Name`, `SortOrder`, `Enabled`)
|
||
SELECT 'account', '账户与充值', 50, 1 FROM DUAL
|
||
WHERE NOT EXISTS (SELECT 1 FROM `t_kb_category` WHERE `Code` = 'account' AND `IsDeleted` = 0);
|
||
|
||
INSERT INTO `t_kb_category` (`Code`, `Name`, `SortOrder`, `Enabled`)
|
||
SELECT 'dropship', '代发与店铺', 60, 1 FROM DUAL
|
||
WHERE NOT EXISTS (SELECT 1 FROM `t_kb_category` WHERE `Code` = 'dropship' AND `IsDeleted` = 0);
|
||
|
||
-- 种子 FAQ(幂等:按 Title + Category Code)
|
||
INSERT INTO `t_kb_article`
|
||
(`CategoryId`, `Title`, `Summary`, `Content`, `Audience`, `Status`, `Tags`, `RelatedPath`, `RelatedLabel`, `IsPinned`, `SortOrder`, `PublishTime`, `ViewCount`)
|
||
SELECT c.`Id`,
|
||
'如何查价?计费重量怎么算?',
|
||
'说明计费重、体积重与卖价取整规则。',
|
||
'## 查价入口\n\n工作台或菜单进入「查价」,填写目的国、重量与尺寸即可预估运费。\n\n## 计费重量\n\n系统按 **实重** 与 **体积重** 取较大者作为计费重。体积重公式以销售产品配置为准。\n\n## 提示\n\n查价结果为预估,实际以出库计费为准。',
|
||
'customer', 'published', '查价,计费', '/order/priceCheck', '去查价', 1, 10, NOW(), 0
|
||
FROM `t_kb_category` c
|
||
WHERE c.`Code` = 'pricing' AND c.`IsDeleted` = 0
|
||
AND NOT EXISTS (
|
||
SELECT 1 FROM `t_kb_article` a
|
||
WHERE a.`Title` = '如何查价?计费重量怎么算?' AND a.`CategoryId` = c.`Id` AND a.`IsDeleted` = 0
|
||
);
|
||
|
||
INSERT INTO `t_kb_article`
|
||
(`CategoryId`, `Title`, `Summary`, `Content`, `Audience`, `Status`, `Tags`, `RelatedPath`, `RelatedLabel`, `IsPinned`, `SortOrder`, `PublishTime`, `ViewCount`)
|
||
SELECT c.`Id`,
|
||
'下单后如何查看轨迹?',
|
||
'订单列表与轨迹查询入口说明。',
|
||
'## 查看轨迹\n\n1. 进入「我的订单」,找到目标运单。\n2. 点击轨迹图标或进入详情查看最新节点。\n\n上网后才会出现承运商轨迹;未上网前可能仅有内部操作节点。',
|
||
'customer', 'published', '轨迹,订单', NULL, NULL, 1, 10, NOW(), 0
|
||
FROM `t_kb_category` c
|
||
WHERE c.`Code` = 'order' AND c.`IsDeleted` = 0
|
||
AND NOT EXISTS (
|
||
SELECT 1 FROM `t_kb_article` a
|
||
WHERE a.`Title` = '下单后如何查看轨迹?' AND a.`CategoryId` = c.`Id` AND a.`IsDeleted` = 0
|
||
);
|
||
|
||
INSERT INTO `t_kb_article`
|
||
(`CategoryId`, `Title`, `Summary`, `Content`, `Audience`, `Status`, `Tags`, `RelatedPath`, `RelatedLabel`, `IsPinned`, `SortOrder`, `PublishTime`, `ViewCount`)
|
||
SELECT c.`Id`,
|
||
'什么是问题件?如何处理?',
|
||
'问题件常见原因与处理路径。',
|
||
'## 什么是问题件\n\n因地址不全、禁限运、欠费、清关资料缺失等原因,包裹无法继续流转时会标记为问题件。\n\n## 怎么处理\n\n在订单列表筛选「问题件」,按提示补全资料或联系客服。处理完成后会重新放行。',
|
||
'customer', 'published', '问题件,售后', NULL, NULL, 0, 20, NOW(), 0
|
||
FROM `t_kb_category` c
|
||
WHERE c.`Code` = 'exception' AND c.`IsDeleted` = 0
|
||
AND NOT EXISTS (
|
||
SELECT 1 FROM `t_kb_article` a
|
||
WHERE a.`Title` = '什么是问题件?如何处理?' AND a.`CategoryId` = c.`Id` AND a.`IsDeleted` = 0
|
||
);
|
||
|
||
INSERT INTO `t_kb_article`
|
||
(`CategoryId`, `Title`, `Summary`, `Content`, `Audience`, `Status`, `Tags`, `RelatedPath`, `RelatedLabel`, `IsPinned`, `SortOrder`, `PublishTime`, `ViewCount`)
|
||
SELECT c.`Id`,
|
||
'账户余额不足怎么办?',
|
||
'充值入口与余额扣费说明。',
|
||
'## 充值\n\n工作台余额卡片或财务菜单可发起充值。到账后余额可用于下单扣费。\n\n## 注意\n\n子账号余额归属主客户;扣费失败时订单可能无法提交或出库。',
|
||
'customer', 'published', '充值,余额', NULL, NULL, 0, 10, NOW(), 0
|
||
FROM `t_kb_category` c
|
||
WHERE c.`Code` = 'account' AND c.`IsDeleted` = 0
|
||
AND NOT EXISTS (
|
||
SELECT 1 FROM `t_kb_article` a
|
||
WHERE a.`Title` = '账户余额不足怎么办?' AND a.`CategoryId` = c.`Id` AND a.`IsDeleted` = 0
|
||
);
|
||
|
||
INSERT INTO `t_kb_article`
|
||
(`CategoryId`, `Title`, `Summary`, `Content`, `Audience`, `Status`, `Tags`, `RelatedPath`, `RelatedLabel`, `IsPinned`, `SortOrder`, `PublishTime`, `ViewCount`)
|
||
SELECT c.`Id`,
|
||
'禁限运物品有哪些?',
|
||
'常见禁限运与申报注意点。',
|
||
'## 常见禁限运\n\n电池、液体、粉末、管制刀具、仿牌等通常受限或禁运,以承运商与目的国法规为准。\n\n## 申报建议\n\n如实填写品名与货值,避免笼统描述(如 gifts)。不确定时可先咨询客服。',
|
||
'customer', 'published', '禁运,清关', NULL, NULL, 0, 10, NOW(), 0
|
||
FROM `t_kb_category` c
|
||
WHERE c.`Code` = 'customs' AND c.`IsDeleted` = 0
|
||
AND NOT EXISTS (
|
||
SELECT 1 FROM `t_kb_article` a
|
||
WHERE a.`Title` = '禁限运物品有哪些?' AND a.`CategoryId` = c.`Id` AND a.`IsDeleted` = 0
|
||
);
|
||
|