177 lines
13 KiB
SQL
177 lines
13 KiB
SQL
-- 生日祝福模块初始化脚本
|
|
-- 适用数据库:MySQL
|
|
-- 说明:
|
|
-- 1. 后台筛选项复用系统已有字典:UserState、UserType,避免覆盖现有人员口径。
|
|
-- 2. 菜单和角色授权采用幂等写法,可重复执行。
|
|
|
|
CREATE TABLE IF NOT EXISTS `blessing` (
|
|
`id` varchar(32) NOT NULL COMMENT 'id',
|
|
`blessingName` varchar(32) DEFAULT NULL COMMENT '祝福名称',
|
|
`activityGroupId` varchar(32) DEFAULT NULL COMMENT '发送范围',
|
|
`blessingMode` varchar(32) DEFAULT NULL COMMENT '祝福模式',
|
|
`isSend` varchar(2) DEFAULT NULL COMMENT '是否发送,0未开启,1进行中,2,已完成',
|
|
`sendTypes` json DEFAULT NULL COMMENT '发送方式',
|
|
`blessingContent` text COMMENT '祝福内容',
|
|
`blessingCron` text COMMENT 'cron表达式',
|
|
`applyDate` varchar(30) DEFAULT NULL COMMENT '创建时间',
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='祝福计划表';
|
|
|
|
CREATE TABLE IF NOT EXISTS `blessing_user` (
|
|
`id` varchar(32) NOT NULL COMMENT 'id',
|
|
`userId` varchar(32) DEFAULT NULL COMMENT '接收人ID',
|
|
`blessingId` varchar(32) DEFAULT NULL COMMENT '祝福ID',
|
|
`applyDate` varchar(32) DEFAULT NULL COMMENT '发送时间',
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_blessing_user_userId` (`userId`),
|
|
KEY `idx_blessing_user_blessingId` (`blessingId`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='祝福发送人员表';
|
|
|
|
CREATE TABLE IF NOT EXISTS `blessing_gift` (
|
|
`id` varchar(32) NOT NULL COMMENT 'ID',
|
|
`giftName` varchar(50) DEFAULT NULL COMMENT '礼物名称',
|
|
`fileName` varchar(50) DEFAULT NULL COMMENT '礼物文件名称',
|
|
`files` json DEFAULT NULL COMMENT '礼物图片',
|
|
`sortField` varchar(10) DEFAULT NULL COMMENT '排序字段',
|
|
`createBy` varchar(32) DEFAULT NULL COMMENT '创建人',
|
|
`createDate` varchar(50) DEFAULT NULL COMMENT '创建时间',
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='祝福礼物表';
|
|
|
|
CREATE TABLE IF NOT EXISTS `greeting` (
|
|
`id` varchar(32) NOT NULL COMMENT 'ID',
|
|
`birthday` varchar(4) DEFAULT NULL COMMENT '职工生日',
|
|
`userId` varchar(32) DEFAULT NULL COMMENT '职工ID',
|
|
`username` varchar(32) DEFAULT NULL COMMENT '职工姓名',
|
|
`loginname` varchar(32) DEFAULT NULL COMMENT '职工编号',
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_greeting_userId` (`userId`),
|
|
KEY `idx_greeting_birthday` (`birthday`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='生日祝福中间表';
|
|
|
|
CREATE TABLE IF NOT EXISTS `greeting_info` (
|
|
`id` varchar(32) NOT NULL COMMENT 'ID',
|
|
`presenter` varchar(32) DEFAULT NULL COMMENT '赠送者ID',
|
|
`received` varchar(32) DEFAULT NULL COMMENT '收到者ID',
|
|
`giftId` varchar(32) DEFAULT NULL COMMENT '礼物ID',
|
|
`giftTime` varchar(32) DEFAULT NULL COMMENT '送礼时间',
|
|
`message` varchar(255) DEFAULT NULL COMMENT '祝福语',
|
|
`isSend` tinyint(1) DEFAULT '0' COMMENT '是否发送贺卡',
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_greeting_info_received` (`received`),
|
|
KEY `idx_greeting_info_presenter` (`presenter`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='生日礼物记录表';
|
|
|
|
CREATE TABLE IF NOT EXISTS `user_birthday_config` (
|
|
`id` varchar(32) NOT NULL COMMENT 'id',
|
|
`picUrl` varchar(100) DEFAULT NULL COMMENT '图片地址',
|
|
`birthdayUrl` varchar(100) DEFAULT NULL COMMENT '生日贺卡地址',
|
|
`createdBy` varchar(32) DEFAULT NULL COMMENT '创建人',
|
|
`createdAt` bigint DEFAULT NULL COMMENT '创建时间',
|
|
`updatedBy` varchar(32) DEFAULT NULL COMMENT '修改人',
|
|
`updatedAt` bigint DEFAULT NULL COMMENT '修改时间',
|
|
`delFlag` tinyint(1) DEFAULT '0' COMMENT '删除标记',
|
|
`opBy` varchar(255) DEFAULT NULL COMMENT 'opBy',
|
|
`opAt` varchar(255) DEFAULT NULL COMMENT 'opAt',
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='生日祝福配置表';
|
|
|
|
CREATE TABLE IF NOT EXISTS `user_birthday_msg_log` (
|
|
`id` varchar(32) NOT NULL COMMENT 'id',
|
|
`pushTime` varchar(50) DEFAULT NULL COMMENT '推送时间',
|
|
`msgTitle` varchar(100) DEFAULT NULL COMMENT '消息标题',
|
|
`msgContent` text COMMENT '消息内容',
|
|
`receiveBy` varchar(50) DEFAULT NULL COMMENT '接收人',
|
|
`receiveName` varchar(50) DEFAULT NULL COMMENT '接收人姓名',
|
|
`pushBy` varchar(50) DEFAULT NULL COMMENT '推送人',
|
|
`pushByName` varchar(50) DEFAULT NULL COMMENT '推送人姓名',
|
|
`pushType` varchar(50) DEFAULT NULL COMMENT '推送人类型',
|
|
`link` varchar(500) DEFAULT NULL COMMENT '卡片链接',
|
|
`createdBy` varchar(32) DEFAULT NULL COMMENT '创建人',
|
|
`createdAt` bigint DEFAULT NULL COMMENT '创建时间',
|
|
`updatedBy` varchar(32) DEFAULT NULL COMMENT '修改人',
|
|
`updatedAt` bigint DEFAULT NULL COMMENT '修改时间',
|
|
`delFlag` tinyint(1) DEFAULT '0' COMMENT '删除标记',
|
|
`opBy` varchar(255) DEFAULT NULL COMMENT 'opBy',
|
|
`opAt` varchar(255) DEFAULT NULL COMMENT 'opAt',
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_user_birthday_msg_log_receiveBy` (`receiveBy`),
|
|
KEY `idx_user_birthday_msg_log_pushTime` (`pushTime`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='生日祝福消息日志表';
|
|
|
|
INSERT INTO `sys_config` (`configKey`, `configValue`, `note`, `createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`)
|
|
SELECT 'GreetingTime', '15', '生日祝福查询时间范围:当天起未来N天', '', UNIX_TIMESTAMP() * 1000, '', UNIX_TIMESTAMP() * 1000, 0
|
|
WHERE NOT EXISTS (SELECT 1 FROM `sys_config` WHERE `configKey` = 'GreetingTime');
|
|
|
|
INSERT INTO `sys_config` (`configKey`, `configValue`, `note`, `createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`)
|
|
SELECT 'BirthdayAutoSendEnabled', '1', '生日祝福是否自动发送', '', UNIX_TIMESTAMP() * 1000, '', UNIX_TIMESTAMP() * 1000, 0
|
|
WHERE NOT EXISTS (SELECT 1 FROM `sys_config` WHERE `configKey` = 'BirthdayAutoSendEnabled');
|
|
|
|
INSERT INTO `sys_config` (`configKey`, `configValue`, `note`, `createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`)
|
|
SELECT 'BirthdayAutoSendTitle', '请点击查收您的生日福利', '生日祝福自动发送标题', '', UNIX_TIMESTAMP() * 1000, '', UNIX_TIMESTAMP() * 1000, 0
|
|
WHERE NOT EXISTS (SELECT 1 FROM `sys_config` WHERE `configKey` = 'BirthdayAutoSendTitle');
|
|
|
|
INSERT INTO `sys_config` (`configKey`, `configValue`, `note`, `createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`)
|
|
SELECT 'BirthdayAutoSendContent', '校工会祝您:生日快乐!幸福安康', '生日祝福自动发送内容', '', UNIX_TIMESTAMP() * 1000, '', UNIX_TIMESTAMP() * 1000, 0
|
|
WHERE NOT EXISTS (SELECT 1 FROM `sys_config` WHERE `configKey` = 'BirthdayAutoSendContent');
|
|
|
|
INSERT INTO `sys_task` (`id`, `name`, `jobClass`, `note`, `cron`, `data`, `exeAt`, `exeResult`, `disabled`, `createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`)
|
|
SELECT 'bd000000000000000000000000000101', 'UserBirthdayJob', 'io.v.nutz.task.job.staffmanage.UserBirthdayJob', '生日当天自动发送生日福利通知', '0 0 9 * * ?', NULL, NULL, NULL, 0, '', UNIX_TIMESTAMP() * 1000, '', UNIX_TIMESTAMP() * 1000, 0
|
|
WHERE NOT EXISTS (SELECT 1 FROM `sys_task` WHERE `name` = 'UserBirthdayJob');
|
|
|
|
INSERT INTO `sys_task` (`id`, `name`, `jobClass`, `note`, `cron`, `data`, `exeAt`, `exeResult`, `disabled`, `createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`)
|
|
SELECT 'bd000000000000000000000000000102', 'GreetingJob', 'io.v.nutz.task.job.brithday.GreetingJob', '生成生日祝福中间表数据', '0 0 1 * * ?', NULL, NULL, NULL, 0, '', UNIX_TIMESTAMP() * 1000, '', UNIX_TIMESTAMP() * 1000, 0
|
|
WHERE NOT EXISTS (SELECT 1 FROM `sys_task` WHERE `name` = 'GreetingJob');
|
|
|
|
SET @birthday_root_id := 'bd000000000000000000000000000201';
|
|
SET @birthday_manage_id := 'bd000000000000000000000000000202';
|
|
SET @birthday_msglog_id := 'bd000000000000000000000000000203';
|
|
SET @birthday_config_id := 'bd000000000000000000000000000204';
|
|
SET @birthday_autosend_id := 'bd000000000000000000000000000205';
|
|
SET @birthday_export_id := 'bd000000000000000000000000000206';
|
|
SET @birthday_root_id := IFNULL((SELECT `id` FROM `sys_menu` WHERE `permission` = 'staffManage.birthday' LIMIT 1), @birthday_root_id);
|
|
SET @birthday_root_path := (SELECT `path` FROM `sys_menu` WHERE `id` = @birthday_root_id LIMIT 1);
|
|
SET @birthday_root_path := IFNULL(@birthday_root_path, LPAD((SELECT IFNULL(MAX(CAST(`path` AS UNSIGNED)), 0) + 1 FROM `sys_menu` WHERE IFNULL(`parentId`, '') = '' AND LENGTH(`path`) = 4), 4, '0'));
|
|
|
|
INSERT INTO `sys_menu` (`id`, `parentId`, `path`, `name`, `aliasName`, `type`, `href`, `target`, `icon`, `showit`, `disabled`, `permission`, `note`, `location`, `hasChildren`, `createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`)
|
|
SELECT @birthday_root_id, '', @birthday_root_path, '生日祝福', 'BirthdayBlessing', 'menu', '', '', 'fa fa-birthday-cake', 1, 0, 'staffManage.birthday', '生日祝福模块', (SELECT IFNULL(MAX(`location`), 0) + 1 FROM (SELECT `location` FROM `sys_menu`) m), 1, '', UNIX_TIMESTAMP() * 1000, '', UNIX_TIMESTAMP() * 1000, 0
|
|
WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = @birthday_root_id OR `permission` = 'staffManage.birthday');
|
|
|
|
INSERT INTO `sys_menu` (`id`, `parentId`, `path`, `name`, `aliasName`, `type`, `href`, `target`, `icon`, `showit`, `disabled`, `permission`, `note`, `location`, `hasChildren`, `createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`)
|
|
SELECT @birthday_manage_id, @birthday_root_id, CONCAT(@birthday_root_path, '0001'), '生日管理', 'BirthdayManage', 'menu', '/platform/staffManage/birthday/manage', 'data-pjax', '', 1, 0, 'staffManage.birthday.manage', '生日人员查询、贺卡配置和通知发送', (SELECT IFNULL(MAX(`location`), 0) + 1 FROM (SELECT `location` FROM `sys_menu`) m), 0, '', UNIX_TIMESTAMP() * 1000, '', UNIX_TIMESTAMP() * 1000, 0
|
|
WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = @birthday_manage_id OR `permission` = 'staffManage.birthday.manage');
|
|
|
|
INSERT INTO `sys_menu` (`id`, `parentId`, `path`, `name`, `aliasName`, `type`, `href`, `target`, `icon`, `showit`, `disabled`, `permission`, `note`, `location`, `hasChildren`, `createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`)
|
|
SELECT @birthday_msglog_id, @birthday_root_id, CONCAT(@birthday_root_path, '0002'), '发送记录', 'BirthdayMsgLog', 'menu', '/platform/staffManage/birthday/msgLog', 'data-pjax', '', 1, 0, 'staffManage.birthday.msgLog', '生日祝福通知发送记录', (SELECT IFNULL(MAX(`location`), 0) + 1 FROM (SELECT `location` FROM `sys_menu`) m), 0, '', UNIX_TIMESTAMP() * 1000, '', UNIX_TIMESTAMP() * 1000, 0
|
|
WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = @birthday_msglog_id OR `permission` = 'staffManage.birthday.msgLog');
|
|
|
|
INSERT INTO `sys_menu` (`id`, `parentId`, `path`, `name`, `aliasName`, `type`, `href`, `target`, `icon`, `showit`, `disabled`, `permission`, `note`, `location`, `hasChildren`, `createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`)
|
|
SELECT @birthday_config_id, @birthday_root_id, CONCAT(@birthday_root_path, '0003'), '系统配置', 'BirthdayConfig', 'menu', '/platform/staffManage/birthday/config', 'data-pjax', '', 1, 0, 'staffManage.birthday.config', '生日祝福背景图、贺卡、倒计时和自动发送开关配置', (SELECT IFNULL(MAX(`location`), 0) + 1 FROM (SELECT `location` FROM `sys_menu`) m), 0, '', UNIX_TIMESTAMP() * 1000, '', UNIX_TIMESTAMP() * 1000, 0
|
|
WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = @birthday_config_id OR `permission` = 'staffManage.birthday.config');
|
|
|
|
INSERT INTO `sys_menu` (`id`, `parentId`, `path`, `name`, `aliasName`, `type`, `href`, `target`, `icon`, `showit`, `disabled`, `permission`, `note`, `location`, `hasChildren`, `createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`)
|
|
SELECT @birthday_autosend_id, @birthday_root_id, CONCAT(@birthday_root_path, '0004'), '自动发送祝福', 'BirthdayAutoSend', 'menu', '/platform/staffManage/birthday/autoSend', 'data-pjax', '', 1, 0, 'staffManage.birthday.autoSend', '生日祝福自动发送任务配置', (SELECT IFNULL(MAX(`location`), 0) + 1 FROM (SELECT `location` FROM `sys_menu`) m), 0, '', UNIX_TIMESTAMP() * 1000, '', UNIX_TIMESTAMP() * 1000, 0
|
|
WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = @birthday_autosend_id OR `permission` = 'staffManage.birthday.autoSend');
|
|
|
|
INSERT INTO `sys_menu` (`id`, `parentId`, `path`, `name`, `aliasName`, `type`, `href`, `target`, `icon`, `showit`, `disabled`, `permission`, `note`, `location`, `hasChildren`, `createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`)
|
|
SELECT @birthday_export_id, @birthday_root_id, CONCAT(@birthday_root_path, '0005'), '数据导出', 'BirthdayExport', 'menu', '/platform/staffManage/birthday/export', 'data-pjax', '', 1, 0, 'staffManage.birthday.export', '生日祝福人员名单和签名表导出', (SELECT IFNULL(MAX(`location`), 0) + 1 FROM (SELECT `location` FROM `sys_menu`) m), 0, '', UNIX_TIMESTAMP() * 1000, '', UNIX_TIMESTAMP() * 1000, 0
|
|
WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = @birthday_export_id OR `permission` = 'staffManage.birthday.export');
|
|
|
|
INSERT INTO `sys_role_menu` (`roleId`, `menuId`)
|
|
SELECT r.`id`, m.`id`
|
|
FROM `sys_role` r
|
|
JOIN `sys_menu` m ON m.`permission` IN (
|
|
'staffManage.birthday',
|
|
'staffManage.birthday.manage',
|
|
'staffManage.birthday.config',
|
|
'staffManage.birthday.autoSend',
|
|
'staffManage.birthday.msgLog',
|
|
'staffManage.birthday.export'
|
|
)
|
|
WHERE r.`code` = 'sysadmin'
|
|
AND NOT EXISTS (
|
|
SELECT 1 FROM `sys_role_menu` rm
|
|
WHERE rm.`roleId` = r.`id`
|
|
AND rm.`menuId` = m.`id`
|
|
);
|