-- ===================================================== -- 急救宣教资源管理 — 线上部署 SQL(达梦 DM8) -- 包含:分类/标签、资源、用户行为、版本历史、审核记录、推送记录 -- 日期: 2026-06-25 -- ===================================================== -- 1. 资源分类/标签统一表 -- TYPE: 1=分类(树形), 2=标签(扁平) CREATE TABLE "QH_EME_FIRST_AID_RESOURCE_CATEGORY" ( "ID" VARCHAR2(32) NOT NULL, "NAME" VARCHAR2(100) NOT NULL, "TYPE" NUMBER(1) DEFAULT 1 NOT NULL, "PARENT_ID" VARCHAR2(32), "DESCRIPTION" VARCHAR2(500), "SORT_NO" NUMBER(10) DEFAULT 0, "STATUS" NUMBER(1) DEFAULT 1, "CREATE_BY" VARCHAR2(50), "CREATE_TIME" TIMESTAMP, "UPDATE_BY" VARCHAR2(50), "UPDATE_TIME" TIMESTAMP, "DEL_FLAG" NUMBER(1) DEFAULT 0, "MEMO" VARCHAR2(500), PRIMARY KEY ("ID") ); COMMENT ON TABLE "QH_EME_FIRST_AID_RESOURCE_CATEGORY" IS '急救宣教资源分类/标签'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE_CATEGORY"."ID" IS '主键'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE_CATEGORY"."NAME" IS '名称'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE_CATEGORY"."TYPE" IS '类型:1=分类,2=标签'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE_CATEGORY"."PARENT_ID" IS '父分类ID(根分类为NULL,标签指向所属分类ID)'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE_CATEGORY"."DESCRIPTION" IS '描述'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE_CATEGORY"."SORT_NO" IS '排序号'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE_CATEGORY"."STATUS" IS '状态(1=正常,2=冻结)'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE_CATEGORY"."DEL_FLAG" IS '删除标记(0=正常,1=已删除)'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE_CATEGORY"."MEMO" IS '备注'; CREATE INDEX "IDX_FA_CATEGORY_TYPE" ON "QH_EME_FIRST_AID_RESOURCE_CATEGORY"("TYPE"); CREATE INDEX "IDX_FA_CATEGORY_PARENT_ID" ON "QH_EME_FIRST_AID_RESOURCE_CATEGORY"("PARENT_ID"); -- 2. 资源表 CREATE TABLE "QH_EME_FIRST_AID_RESOURCE" ( "ID" VARCHAR2(32) NOT NULL, "TITLE" VARCHAR2(200) NOT NULL, "SUMMARY" VARCHAR2(500), "CONTENT_TYPE" VARCHAR2(32), "CATEGORY_ID" VARCHAR2(32), "APPLICABLE_SCENARIO" VARCHAR2(500), "TAGS" VARCHAR2(2000), "CONTENT" CLOB, "COVER_IMAGE" VARCHAR2(500), "FILE_URL" CLOB, "EFFECTIVE_TIME" TIMESTAMP, "EXPIRY_TIME" TIMESTAMP, "AUDIT_STATUS" NUMBER(2), "AUDIT_REJECT_REASON" VARCHAR2(500), "AUDIT_BY" VARCHAR2(50), "AUDIT_BY_ID" VARCHAR2(32), "AUDIT_TIME" TIMESTAMP, "VIEW_COUNT" NUMBER(10) DEFAULT 0, "FAVORITE_COUNT" NUMBER(10) DEFAULT 0, "STATUS" NUMBER(1) DEFAULT 0, "CREATE_BY" VARCHAR2(50), "CREATE_TIME" TIMESTAMP, "UPDATE_BY" VARCHAR2(50), "UPDATE_TIME" TIMESTAMP, "DEL_FLAG" NUMBER(1) DEFAULT 0, "MEMO" VARCHAR2(500), PRIMARY KEY ("ID") ); COMMENT ON TABLE "QH_EME_FIRST_AID_RESOURCE" IS '急救宣教资源'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE"."ID" IS '主键'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE"."TITLE" IS '标题'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE"."SUMMARY" IS '摘要/简介'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE"."CONTENT_TYPE" IS '内容类型:IMAGE_TEXT=图文/VIDEO=视频/AUDIO=音频/PDF'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE"."CATEGORY_ID" IS '所属分类ID'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE"."APPLICABLE_SCENARIO" IS '适用场景'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE"."TAGS" IS '标签ID列表(逗号分隔)'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE"."CONTENT" IS '正文内容(富文本HTML)'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE"."COVER_IMAGE" IS '封面图URL'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE"."FILE_URL" IS '附件URL列表(JSON数组)'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE"."EFFECTIVE_TIME" IS '生效时间'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE"."EXPIRY_TIME" IS '失效时间'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE"."AUDIT_STATUS" IS '审核状态(NULL=无审核/10=待审核/11=已通过/12=已驳回)'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE"."AUDIT_REJECT_REASON" IS '驳回原因'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE"."AUDIT_BY" IS '审核人'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE"."AUDIT_BY_ID" IS '审核人ID'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE"."AUDIT_TIME" IS '审核时间'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE"."VIEW_COUNT" IS '浏览次数'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE"."FAVORITE_COUNT" IS '收藏次数'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE"."STATUS" IS '发布状态(0=草稿,1=已发布,2=已下架)'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE"."DEL_FLAG" IS '删除标记(0=正常,1=已删除)'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE"."MEMO" IS '备注'; CREATE INDEX "IDX_FA_RESOURCE_CATEGORY_ID" ON "QH_EME_FIRST_AID_RESOURCE"("CATEGORY_ID"); CREATE INDEX "IDX_FA_RESOURCE_AUDIT_STATUS" ON "QH_EME_FIRST_AID_RESOURCE"("AUDIT_STATUS"); CREATE INDEX "IDX_FA_RESOURCE_EFFECTIVE_TIME" ON "QH_EME_FIRST_AID_RESOURCE"("EFFECTIVE_TIME"); -- 3. 用户行为记录表(阅读+收藏) CREATE TABLE "QH_EME_FIRST_AID_RESOURCE_USER_ACTION" ( "ID" VARCHAR2(32) NOT NULL, "RESOURCE_ID" VARCHAR2(32) NOT NULL, "USER_ID" VARCHAR2(50) NOT NULL, "TYPE" NUMBER(1) NOT NULL, "CREATE_TIME" TIMESTAMP, PRIMARY KEY ("ID") ); COMMENT ON TABLE "QH_EME_FIRST_AID_RESOURCE_USER_ACTION" IS '用户行为记录(阅读/收藏)'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE_USER_ACTION"."ID" IS '主键'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE_USER_ACTION"."RESOURCE_ID" IS '资源ID'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE_USER_ACTION"."USER_ID" IS '用户ID'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE_USER_ACTION"."TYPE" IS '行为类型:1=阅读,2=收藏'; CREATE UNIQUE INDEX "UK_FA_USER_ACTION" ON "QH_EME_FIRST_AID_RESOURCE_USER_ACTION"("RESOURCE_ID", "USER_ID", "TYPE"); CREATE INDEX "IDX_FA_USER_ACTION_USER_TYPE" ON "QH_EME_FIRST_AID_RESOURCE_USER_ACTION"("USER_ID", "TYPE"); -- 4. 版本历史表 CREATE TABLE "QH_EME_FIRST_AID_RESOURCE_VERSION" ( "ID" VARCHAR2(32) NOT NULL, "RESOURCE_ID" VARCHAR2(32) NOT NULL, "VERSION_NO" NUMBER(10) NOT NULL, "TITLE" VARCHAR2(200), "CONTENT" CLOB, "CHANGE_DESCRIPTION" VARCHAR2(500), "IS_CURRENT" NUMBER(1) DEFAULT 0, "CREATE_BY" VARCHAR2(50), "CREATE_TIME" TIMESTAMP, PRIMARY KEY ("ID") ); COMMENT ON TABLE "QH_EME_FIRST_AID_RESOURCE_VERSION" IS '资源版本历史'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE_VERSION"."ID" IS '主键'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE_VERSION"."RESOURCE_ID" IS '资源ID'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE_VERSION"."VERSION_NO" IS '版本号'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE_VERSION"."TITLE" IS '版本时的标题'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE_VERSION"."CONTENT" IS '版本时的正文内容'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE_VERSION"."CHANGE_DESCRIPTION" IS '变更描述'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE_VERSION"."IS_CURRENT" IS '是否当前版本(1=是,0=否)'; CREATE INDEX "IDX_FA_VERSION_RESOURCE_ID" ON "QH_EME_FIRST_AID_RESOURCE_VERSION"("RESOURCE_ID"); -- 5. 审核记录表 CREATE TABLE "QH_EME_FIRST_AID_RESOURCE_AUDIT" ( "ID" VARCHAR2(32) NOT NULL, "RESOURCE_ID" VARCHAR2(32) NOT NULL, "AUDIT_STATUS" NUMBER(2), "AUDIT_REJECT_REASON" VARCHAR2(500), "AUDIT_BY" VARCHAR2(50), "AUDIT_BY_ID" VARCHAR2(32), "AUDIT_TIME" TIMESTAMP, "CREATE_TIME" TIMESTAMP DEFAULT SYSDATE, PRIMARY KEY ("ID") ); COMMENT ON TABLE "QH_EME_FIRST_AID_RESOURCE_AUDIT" IS '急救宣教资源审核记录'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE_AUDIT"."ID" IS '主键'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE_AUDIT"."RESOURCE_ID" IS '关联资源ID'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE_AUDIT"."AUDIT_STATUS" IS '审核状态:10=待审核,11=已通过,12=已驳回'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE_AUDIT"."AUDIT_REJECT_REASON" IS '驳回原因'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE_AUDIT"."AUDIT_BY" IS '审核人'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE_AUDIT"."AUDIT_BY_ID" IS '审核人ID'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE_AUDIT"."AUDIT_TIME" IS '审核时间'; COMMENT ON COLUMN "QH_EME_FIRST_AID_RESOURCE_AUDIT"."CREATE_TIME" IS '创建时间'; CREATE INDEX "IDX_FA_AUDIT_RESOURCE_ID" ON "QH_EME_FIRST_AID_RESOURCE_AUDIT"("RESOURCE_ID"); -- 6. 推送记录表 CREATE TABLE "QH_EME_FIRST_AID_PUSH_RECORD" ( "ID" VARCHAR2(32) NOT NULL, "RESOURCE_ID" VARCHAR2(32) NOT NULL, "RESOURCE_TITLE" VARCHAR2(200) DEFAULT NULL, "ORDER_ID" VARCHAR2(32) NOT NULL, "TARGET_USER_ID" VARCHAR2(32) DEFAULT NULL, "PUSH_BY" VARCHAR2(50) DEFAULT NULL, "PUSH_BY_ID" VARCHAR2(32) DEFAULT NULL, "PUSH_TIME" TIMESTAMP DEFAULT NULL, "TENANT_ID" VARCHAR2(32) DEFAULT NULL, PRIMARY KEY ("ID"), CONSTRAINT "UK_ORDER_RESOURCE" UNIQUE ("ORDER_ID", "RESOURCE_ID") ); COMMENT ON TABLE "QH_EME_FIRST_AID_PUSH_RECORD" IS '急救宣教推送记录表'; COMMENT ON COLUMN "QH_EME_FIRST_AID_PUSH_RECORD"."ID" IS '主键'; COMMENT ON COLUMN "QH_EME_FIRST_AID_PUSH_RECORD"."RESOURCE_ID" IS '资源ID'; COMMENT ON COLUMN "QH_EME_FIRST_AID_PUSH_RECORD"."RESOURCE_TITLE" IS '资源标题(冗余)'; COMMENT ON COLUMN "QH_EME_FIRST_AID_PUSH_RECORD"."ORDER_ID" IS '关联应急工单ID'; COMMENT ON COLUMN "QH_EME_FIRST_AID_PUSH_RECORD"."TARGET_USER_ID" IS '推送目标用户ID'; COMMENT ON COLUMN "QH_EME_FIRST_AID_PUSH_RECORD"."PUSH_BY" IS '推送人'; COMMENT ON COLUMN "QH_EME_FIRST_AID_PUSH_RECORD"."PUSH_BY_ID" IS '推送人ID'; COMMENT ON COLUMN "QH_EME_FIRST_AID_PUSH_RECORD"."PUSH_TIME" IS '推送时间'; COMMENT ON COLUMN "QH_EME_FIRST_AID_PUSH_RECORD"."TENANT_ID" IS '租户ID'; CREATE INDEX "IDX_FA_PUSH_RECORD_ORDER_ID" ON "QH_EME_FIRST_AID_PUSH_RECORD"("ORDER_ID"); -- 7. 字典数据 -- 7.1 内容类型 INSERT INTO "QH_SYS_DICT" ("ID", "TYPE", "DICT_NAME", "DICT_CODE", "DESCRIPTION", "DEL_FLAG", "TENANT_ID", "LOW_APP_ID", "CREATE_BY", "CREATE_TIME", "UPDATE_BY", "UPDATE_TIME") VALUES ('1589123456789100001', 0, '内容类型', 'first_aid_content_type', '急救宣教资源内容类型', 0, 0, NULL, 'admin', SYSDATE, 'admin', SYSDATE); INSERT INTO "QH_SYS_DICT_ITEM" ("ID", "DICT_ID", "ITEM_TEXT", "ITEM_VALUE", "DESCRIPTION", "SORT_ORDER", "STATUS", "CREATE_BY", "CREATE_TIME", "UPDATE_BY", "UPDATE_TIME") VALUES ('1589123456789100011', '1589123456789100001', '图文', 'IMAGE_TEXT', '图文内容', 1, 1, 'admin', SYSDATE, 'admin', SYSDATE); INSERT INTO "QH_SYS_DICT_ITEM" ("ID", "DICT_ID", "ITEM_TEXT", "ITEM_VALUE", "DESCRIPTION", "SORT_ORDER", "STATUS", "CREATE_BY", "CREATE_TIME", "UPDATE_BY", "UPDATE_TIME") VALUES ('1589123456789100012', '1589123456789100001', '视频', 'VIDEO', '视频内容', 2, 1, 'admin', SYSDATE, 'admin', SYSDATE); INSERT INTO "QH_SYS_DICT_ITEM" ("ID", "DICT_ID", "ITEM_TEXT", "ITEM_VALUE", "DESCRIPTION", "SORT_ORDER", "STATUS", "CREATE_BY", "CREATE_TIME", "UPDATE_BY", "UPDATE_TIME") VALUES ('1589123456789100013', '1589123456789100001', '音频', 'AUDIO', '音频内容', 3, 1, 'admin', SYSDATE, 'admin', SYSDATE); INSERT INTO "QH_SYS_DICT_ITEM" ("ID", "DICT_ID", "ITEM_TEXT", "ITEM_VALUE", "DESCRIPTION", "SORT_ORDER", "STATUS", "CREATE_BY", "CREATE_TIME", "UPDATE_BY", "UPDATE_TIME") VALUES ('1589123456789100014', '1589123456789100001', 'PDF', 'PDF', 'PDF文档', 4, 1, 'admin', SYSDATE, 'admin', SYSDATE);