Files
erp-next/sql/bid_notify.sql

73 lines
5.2 KiB
MySQL
Raw Normal View History

-- ════════════════════════════════════════════════════════════════════
-- 消息通知中心 - 数据库表结构
-- 功能:统一管理站内通知,支持审批结果、报价到期、任务分配等场景
-- 执行方式: mysql --default-character-set=utf8mb4 -u root -p < bid_notify.sql
-- ════════════════════════════════════════════════════════════════════
SET NAMES utf8mb4;
-- 1. 消息通知表(存储所有通知消息)
DROP TABLE IF EXISTS biz_notify_message;
CREATE TABLE biz_notify_message (
message_id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '消息ID',
tenant_id BIGINT DEFAULT 0 COMMENT '租户ID',
user_id BIGINT NOT NULL COMMENT '接收人用户ID',
notice_type VARCHAR(32) NOT NULL COMMENT '通知类型(approval-审批结果/quotation_expire-报价到期/rfq_deadline-RFQ截止/task-任务分配/system-系统公告/exception-异常提醒)',
priority TINYINT DEFAULT 0 COMMENT '优先级(0普通 1重要 2紧急)',
title VARCHAR(200) NOT NULL COMMENT '消息标题',
content TEXT COMMENT '消息内容',
biz_type VARCHAR(32) COMMENT '关联业务类型(PURCHASE_ORDER/CLIENT_QUOTE/QUOTATION/DELIVERY_ORDER/ORDER_OBJECTION)',
biz_id BIGINT COMMENT '关联业务ID',
biz_url VARCHAR(255) COMMENT '业务跳转URL',
is_read CHAR(1) DEFAULT '0' COMMENT '是否已读(0未读 1已读)',
read_time DATETIME COMMENT '阅读时间',
create_by VARCHAR(64) DEFAULT '' COMMENT '创建者',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_by VARCHAR(64) DEFAULT '' COMMENT '更新者',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
KEY idx_user_read (user_id, is_read),
KEY idx_user_type (user_id, notice_type),
KEY idx_tenant (tenant_id),
KEY idx_create_time (create_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='消息通知表';
-- 2. 通知规则配置表(定义各类通知的触发规则)
DROP TABLE IF EXISTS biz_notify_rule;
CREATE TABLE biz_notify_rule (
rule_id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '规则ID',
tenant_id BIGINT DEFAULT 0 COMMENT '租户ID',
rule_name VARCHAR(100) NOT NULL COMMENT '规则名称',
notice_type VARCHAR(32) NOT NULL COMMENT '通知类型',
biz_type VARCHAR(32) COMMENT '业务类型',
trigger_condition VARCHAR(500) COMMENT '触发条件(JSON格式)',
advance_days INT DEFAULT 0 COMMENT '提前提醒天数(用于到期类提醒)',
enabled CHAR(1) DEFAULT '0' COMMENT '是否启用(0停用 1启用)',
create_by VARCHAR(64) DEFAULT '' COMMENT '创建者',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_by VARCHAR(64) DEFAULT '' COMMENT '更新者',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
KEY idx_tenant_type (tenant_id, notice_type)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='通知规则配置表';
-- 3. 初始化默认通知规则
INSERT INTO biz_notify_rule (rule_name, notice_type, biz_type, trigger_condition, advance_days, enabled, create_by) VALUES
('审批结果通知', 'approval', NULL, '{"event":"approve,reject"}', 0, '1', 'admin'),
('报价到期提醒', 'quotation_expire', 'QUOTATION', '{"field":"submit_time","unit":"day"}', 3, '1', 'admin'),
('报价到期紧急提醒', 'quotation_expire', 'QUOTATION', '{"field":"submit_time","unit":"day"}', 1, '1', 'admin'),
('RFQ截止提醒', 'rfq_deadline', NULL, '{"field":"deadline","unit":"day"}', 2, '1', 'admin'),
('系统公告', 'system', NULL, '{}', 0, '1', 'admin');
-- 4. 菜单权限初始化
-- 消息通知中心菜单(挂在"系统配置"目录 menu_id=2130 path=bizconfig 下,与"待我审批"同级)
DELETE FROM sys_menu WHERE menu_id IN (2170, 2171, 2172, 2173, 2174);
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark) VALUES
(2170, '消息通知中心', 2130, 100, 'notify', 'bid/notify/index', 1, 0, 'C', '0', '0', 'bid:notify:list', 'message', 'admin', sysdate(), '消息通知中心'),
(2171, '通知查询', 2170, 1, '', '', 1, 0, 'F', '0', '0', 'bid:notify:query', '#', 'admin', sysdate(), ''),
(2172, '通知删除', 2170, 2, '', '', 1, 0, 'F', '0', '0', 'bid:notify:remove', '#', 'admin', sysdate(), ''),
(2173, '标记已读', 2170, 3, '', '', 1, 0, 'F', '0', '0', 'bid:notify:read', '#', 'admin', sysdate(), ''),
(2174, '通知规则配置', 2170, 4, '', '', 1, 0, 'F', '0', '0', 'bid:notify:rule', '#', 'admin', sysdate(), '');
-- 为 admin 角色授权
DELETE FROM sys_role_menu WHERE role_id = 1 AND menu_id IN (2170, 2171, 2172, 2173, 2174);
INSERT INTO sys_role_menu (role_id, menu_id) VALUES
(1, 2170), (1, 2171), (1, 2172), (1, 2173), (1, 2174);