-- =============================================
-- OA 通知公告模块初始化
-- =============================================

CREATE TABLE IF NOT EXISTS oa_notice (
    id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
    title VARCHAR(50) NOT NULL COMMENT '公告标题',
    content TEXT NOT NULL COMMENT '公告内容',
    type TINYINT NOT NULL COMMENT '公告类型（1通知 2公告）',
    status TINYINT NOT NULL DEFAULT 0 COMMENT '状态（0草稿 1已发布 2已撤销）',
    send_scope TINYINT NOT NULL COMMENT '发送范围（1通知所有人 2指定人）',
    is_top TINYINT NOT NULL DEFAULT 0 COMMENT '是否置顶（0否 1是）',
    publish_user_id BIGINT COMMENT '发布人ID',
    publish_time DATETIME COMMENT '发布时间',
    creator VARCHAR(64) DEFAULT '' COMMENT '创建者',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    updater VARCHAR(64) DEFAULT '' COMMENT '更新者',
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    deleted BIT DEFAULT 0 COMMENT '是否删除',
    INDEX idx_type (type),
    INDEX idx_status (status),
    INDEX idx_publish_time (publish_time),
    INDEX idx_is_top (is_top)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='OA通知公告表';

CREATE TABLE IF NOT EXISTS oa_notice_user (
    id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
    notice_id BIGINT NOT NULL COMMENT '通知公告ID',
    user_id BIGINT NOT NULL COMMENT '指定用户ID',
    creator VARCHAR(64) DEFAULT '' COMMENT '创建者',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    updater VARCHAR(64) DEFAULT '' COMMENT '更新者',
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    deleted BIT DEFAULT 0 COMMENT '是否删除',
    INDEX idx_notice_id (notice_id),
    INDEX idx_user_id (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='OA通知公告指定人关联表';

CREATE TABLE IF NOT EXISTS oa_notice_read (
    id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
    notice_id BIGINT NOT NULL COMMENT '通知公告ID',
    user_id BIGINT NOT NULL COMMENT '用户ID',
    read_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '阅读时间',
    creator VARCHAR(64) DEFAULT '' COMMENT '创建者',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    updater VARCHAR(64) DEFAULT '' COMMENT '更新者',
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    deleted BIT DEFAULT 0 COMMENT '是否删除',
    UNIQUE KEY uk_notice_user (notice_id, user_id),
    INDEX idx_notice_id (notice_id),
    INDEX idx_user_id (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='OA通知公告已读记录表';

-- 系统通知模板（用于OA通知公告发布时发送站内信）
INSERT INTO system_notify_template (name, code, nickname, content, type, params, status, creator, create_time, updater, update_time, deleted)
VALUES ('OA通知公告提醒', 'oa-notice-publish', '系统通知', '您有一条新的通知公告：{title}', 1, '["title"]', 0, '', NOW(), '', NOW(), 0)
ON DUPLICATE KEY UPDATE id = id;
