Files
hzdyjs/backend/sql/勤工俭学数据库建表脚本.sql
T
2025-08-12 16:52:10 +08:00

270 lines
19 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- =====================================================
-- 勤工俭学管理系统数据库建表脚本
-- 项目: 校园管理系统 - 勤工俭学模块
-- 版本: v1.0
-- 创建时间: 2025-01-03
-- 数据库: MySQL 8.0
-- 字符集: utf8mb4
-- =====================================================
-- 设置字符集
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- =====================================================
-- 1. 勤工俭学岗位信息表
-- =====================================================
DROP TABLE IF EXISTS `jcbt_work_study_position`;
CREATE TABLE `jcbt_work_study_position` (
`id` bigint(20) NOT NULL COMMENT '主键ID(雪花ID)',
`position_name` varchar(100) NOT NULL COMMENT '岗位名称',
`position_scope` varchar(20) NOT NULL COMMENT '发布范围(COLLEGE/UNIVERSITY)',
`required_count` int NOT NULL DEFAULT 1 COMMENT '需求人数',
`work_time` varchar(200) NOT NULL COMMENT '工作时间描述',
`start_date` date NOT NULL COMMENT '岗位有效期开始',
`end_date` date NOT NULL COMMENT '岗位有效期结束',
`position_requirements` text NOT NULL COMMENT '岗位要求',
`salary_info` varchar(200) NOT NULL COMMENT '薪资情况',
`contact_teacher` varchar(50) NOT NULL COMMENT '联系老师',
`contact_phone` varchar(20) NOT NULL COMMENT '联系电话',
`college_id` bigint(20) NOT NULL COMMENT '发布学院ID',
`college_name` varchar(100) NOT NULL COMMENT '发布学院名称',
`status` varchar(20) NOT NULL DEFAULT 'DRAFT' COMMENT '岗位状态',
`current_count` int NOT NULL DEFAULT 0 COMMENT '当前申请通过人数',
`is_active` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否启用',
`create_by` bigint(20) NOT NULL COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` bigint(20) NOT NULL COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除标记',
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户ID',
PRIMARY KEY (`id`),
INDEX `idx_position_college_status` (`college_id`, `status`, `deleted`),
INDEX `idx_position_scope_date` (`position_scope`, `start_date`, `end_date`),
INDEX `idx_position_name` (`position_name`),
INDEX `idx_position_create_time` (`create_time`),
INDEX `idx_position_tenant` (`tenant_id`, `deleted`),
CONSTRAINT `chk_position_date` CHECK (`start_date` <= `end_date`),
CONSTRAINT `chk_position_count` CHECK (`required_count` > 0 AND `current_count` >= 0 AND `current_count` <= `required_count`),
CONSTRAINT `chk_position_scope` CHECK (`position_scope` IN ('COLLEGE', 'UNIVERSITY'))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='勤工俭学岗位信息表';
-- =====================================================
-- 2. 勤工俭学申请信息表
-- =====================================================
DROP TABLE IF EXISTS `jcbt_work_study_application`;
CREATE TABLE `jcbt_work_study_application` (
`id` bigint(20) NOT NULL COMMENT '主键ID(雪花ID)',
`position_id` bigint(20) NOT NULL COMMENT '岗位ID',
`position_name` varchar(100) NOT NULL COMMENT '岗位名称(冗余字段)',
`student_id` bigint(20) NOT NULL COMMENT '学生ID',
`student_name` varchar(50) NOT NULL COMMENT '学生姓名',
`student_number` varchar(20) NOT NULL COMMENT '学号',
`college_id` bigint(20) NOT NULL COMMENT '学生所在学院ID',
`college_name` varchar(100) NOT NULL COMMENT '学生所在学院名称',
`major` varchar(100) NOT NULL COMMENT '专业',
`grade` varchar(10) NOT NULL COMMENT '年级',
`class_name` varchar(50) DEFAULT NULL COMMENT '班级',
`phone` varchar(20) NOT NULL COMMENT '联系电话',
`email` varchar(100) DEFAULT NULL COMMENT '邮箱地址',
`application_reason` text NOT NULL COMMENT '申请理由',
`status` varchar(20) NOT NULL DEFAULT 'DRAFT' COMMENT '申请状态',
`application_date` datetime NOT NULL COMMENT '申请提交时间',
`college_review_status` varchar(20) DEFAULT NULL COMMENT '学院审核状态',
`college_review_time` datetime DEFAULT NULL COMMENT '学院审核时间',
`college_reviewer_id` bigint(20) DEFAULT NULL COMMENT '学院审核人ID',
`college_reviewer_name` varchar(50) DEFAULT NULL COMMENT '学院审核人姓名',
`college_review_comment` text DEFAULT NULL COMMENT '学院审核意见',
`final_review_status` varchar(20) DEFAULT NULL COMMENT '学生处审核状态',
`final_review_time` datetime DEFAULT NULL COMMENT '学生处审核时间',
`final_reviewer_id` bigint(20) DEFAULT NULL COMMENT '学生处审核人ID',
`final_reviewer_name` varchar(50) DEFAULT NULL COMMENT '学生处审核人姓名',
`final_review_comment` text DEFAULT NULL COMMENT '学生处审核意见',
`work_start_date` date DEFAULT NULL COMMENT '工作开始时间',
`work_end_date` date DEFAULT NULL COMMENT '工作结束时间',
`create_by` bigint(20) NOT NULL COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` bigint(20) NOT NULL COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除标记',
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户ID',
PRIMARY KEY (`id`),
INDEX `idx_application_position` (`position_id`, `deleted`),
INDEX `idx_application_student` (`student_id`, `deleted`),
INDEX `idx_application_student_number` (`student_number`),
INDEX `idx_application_college_status` (`college_id`, `status`, `deleted`),
INDEX `idx_application_status_time` (`status`, `application_date`),
INDEX `idx_application_review_status` (`college_review_status`, `final_review_status`),
INDEX `idx_application_tenant` (`tenant_id`, `deleted`),
UNIQUE INDEX `uk_student_position` (`student_id`, `position_id`, `deleted`),
CONSTRAINT `chk_application_work_date` CHECK (`work_start_date` IS NULL OR `work_end_date` IS NULL OR `work_start_date` <= `work_end_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='勤工俭学申请信息表';
-- =====================================================
-- 3. 系统字典数据插入
-- =====================================================
-- 3.1 岗位状态字典类型
INSERT INTO `sys_dict_type` (`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `remark`)
VALUES ('勤工俭学岗位状态', 'work_study_position_status', '0', 1, NOW(), '勤工俭学岗位状态字典');
-- 3.2 岗位状态字典数据
INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `remark`) VALUES
(1, '草稿', 'DRAFT', 'work_study_position_status', '', 'info', 'N', '0', 1, NOW(), '岗位创建但未发布'),
(2, '已发布', 'PUBLISHED', 'work_study_position_status', '', 'primary', 'N', '0', 1, NOW(), '岗位已发布但未开始招录'),
(3, '招录中', 'RECRUITING', 'work_study_position_status', '', 'success', 'Y', '0', 1, NOW(), '岗位正在招录学生'),
(4, '已满员', 'FULL', 'work_study_position_status', '', 'warning', 'N', '0', 1, NOW(), '岗位申请人数已满'),
(5, '已过期', 'EXPIRED', 'work_study_position_status', '', 'danger', 'N', '0', 1, NOW(), '岗位已过有效期'),
(6, '已暂停', 'SUSPENDED', 'work_study_position_status', '', 'info', 'N', '0', 1, NOW(), '岗位暂时停止招录'),
(7, '已取消', 'CANCELLED', 'work_study_position_status', '', 'danger', 'N', '0', 1, NOW(), '岗位被取消');
-- 3.3 申请状态字典类型
INSERT INTO `sys_dict_type` (`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `remark`)
VALUES ('勤工俭学申请状态', 'work_study_application_status', '0', 1, NOW(), '勤工俭学申请状态字典');
-- 3.4 申请状态字典数据
INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `remark`) VALUES
(1, '草稿', 'DRAFT', 'work_study_application_status', '', 'info', 'N', '0', 1, NOW(), '申请暂存未提交'),
(2, '已提交', 'SUBMITTED', 'work_study_application_status', '', 'primary', 'Y', '0', 1, NOW(), '申请已提交,等待学院审核'),
(3, '学院审核中', 'COLLEGE_REVIEWING', 'work_study_application_status', '', 'primary', 'N', '0', 1, NOW(), '二级学院正在审核'),
(4, '学院审核通过', 'COLLEGE_PASSED', 'work_study_application_status', '', 'success', 'N', '0', 1, NOW(), '学院审核通过,待学生处审核'),
(5, '学院审核不通过', 'COLLEGE_REJECTED', 'work_study_application_status', '', 'danger', 'N', '0', 1, NOW(), '学院审核未通过'),
(6, '学生处审核中', 'FINAL_REVIEWING', 'work_study_application_status', '', 'warning', 'N', '0', 1, NOW(), '学生处正在终审'),
(7, '审核通过', 'APPROVED', 'work_study_application_status', '', 'success', 'N', '0', 1, NOW(), '最终审核通过'),
(8, '审核不通过', 'REJECTED', 'work_study_application_status', '', 'danger', 'N', '0', 1, NOW(), '最终审核未通过'),
(9, '已撤回', 'WITHDRAWN', 'work_study_application_status', '', 'info', 'N', '0', 1, NOW(), '学生主动撤回申请');
-- 3.5 审核状态字典类型
INSERT INTO `sys_dict_type` (`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `remark`)
VALUES ('勤工俭学审核状态', 'work_study_review_status', '0', 1, NOW(), '勤工俭学审核状态字典');
-- 3.6 审核状态字典数据
INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `remark`) VALUES
(1, '待审核', 'PENDING', 'work_study_review_status', '', 'warning', 'Y', '0', 1, NOW(), '等待审核'),
(2, '审核通过', 'PASSED', 'work_study_review_status', '', 'success', 'N', '0', 1, NOW(), '审核通过'),
(3, '审核不通过', 'REJECTED', 'work_study_review_status', '', 'danger', 'N', '0', 1, NOW(), '审核不通过');
-- 3.7 岗位发布范围字典类型
INSERT INTO `sys_dict_type` (`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `remark`)
VALUES ('勤工俭学岗位发布范围', 'work_study_position_scope', '0', 1, NOW(), '勤工俭学岗位发布范围字典');
-- 3.8 岗位发布范围字典数据
INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `remark`) VALUES
(1, '本学院', 'COLLEGE', 'work_study_position_scope', '', 'primary', 'Y', '0', 1, NOW(), '仅本学院学生可见和申请'),
(2, '全校', 'UNIVERSITY', 'work_study_position_scope', '', 'success', 'N', '0', 1, NOW(), '所有学生可见和申请');
-- =====================================================
-- 4. 示例测试数据插入(可选)
-- =====================================================
-- 4.1 插入测试岗位数据
INSERT INTO `jcbt_work_study_position`
(`id`, `position_name`, `position_scope`, `required_count`, `work_time`, `start_date`, `end_date`,
`position_requirements`, `salary_info`, `contact_teacher`, `contact_phone`,
`college_id`, `college_name`, `status`, `create_by`, `update_by`, `tenant_id`)
VALUES
(1736000000000000001, '图书馆助理管理员', 'UNIVERSITY', 5, '周一至周五 14:00-17:00', '2025-01-03', '2025-06-30',
'1. 大二及以上年级\n2. 学习成绩良好\n3. 责任心强,工作认真\n4. 熟悉图书分类和管理',
'每小时15元,按实际工作时间计算', '张老师', '13800138001',
1001, '文学院', 'RECRUITING', 1, 1, '000000'),
(1736000000000000002, '实验室设备维护', 'COLLEGE', 2, '周三、周五 16:00-18:00', '2025-01-03', '2025-05-31',
'1. 理工科专业学生\n2. 有基础的设备维护经验\n3. 动手能力强\n4. 能吃苦耐劳',
'每小时18元,有技术补贴', '李老师', '13800138002',
1002, '理学院', 'RECRUITING', 1, 1, '000000'),
(1736000000000000003, '学生宿舍管理助理', 'UNIVERSITY', 8, '周一至周日轮班,每次4小时', '2025-01-03', '2025-07-31',
'1. 品行端正,无违纪记录\n2. 沟通能力强\n3. 能适应轮班工作\n4. 有服务意识',
'每小时12元,夜班有补贴', '王老师', '13800138003',
1003, '学生处', 'RECRUITING', 1, 1, '000000');
-- 4.2 插入测试申请数据
INSERT INTO `jcbt_work_study_application`
(`id`, `position_id`, `position_name`, `student_id`, `student_name`, `student_number`,
`college_id`, `college_name`, `major`, `grade`, `class_name`, `phone`, `email`,
`application_reason`, `status`, `application_date`, `create_by`, `update_by`, `tenant_id`)
VALUES
(1736000000000000101, 1736000000000000001, '图书馆助理管理员', 2001001, '张三', '2023001001',
1001, '文学院', '汉语言文学', '2023', '汉语言文学1班', '13900139001', 'zhangsan@example.com',
'我热爱读书,熟悉图书分类,希望能在图书馆工作,为同学们提供更好的服务。同时也能减轻家庭经济负担。',
'SUBMITTED', '2025-01-03 09:00:00', 2001001, 2001001, '000000'),
(1736000000000000102, 1736000000000000002, '实验室设备维护', 2002001, '李四', '2023002001',
1002, '理学院', '物理学', '2023', '物理学1班', '13900139002', 'lisi@example.com',
'我是物理专业学生,对实验设备比较了解,有维修电子设备的经验,希望能申请这个岗位。',
'SUBMITTED', '2025-01-03 10:00:00', 2002001, 2002001, '000000'),
(1736000000000000103, 1736000000000000003, '学生宿舍管理助理', 2003001, '王五', '2023003001',
1004, '管理学院', '工商管理', '2023', '工商管理1班', '13900139003', 'wangwu@example.com',
'我性格开朗,善于与人沟通,希望能为同学们的宿舍生活提供帮助,同时锻炼自己的管理能力。',
'SUBMITTED', '2025-01-03 11:00:00', 2003001, 2003001, '000000');
-- =====================================================
-- 5. 权限菜单数据插入
-- =====================================================
-- 5.1 勤工俭学主菜单
INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query_param`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `remark`)
VALUES ('勤工俭学', 2000, 6, 'workstudy', NULL, NULL, 1, 0, 'M', '0', '0', NULL, 'work', 1, NOW(), '勤工俭学管理菜单');
-- 获取刚插入的菜单ID (假设为最新的菜单ID)
SET @workstudy_menu_id = LAST_INSERT_ID();
-- 5.2 岗位管理菜单
INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query_param`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `remark`)
VALUES ('岗位管理', @workstudy_menu_id, 1, 'position', 'jcbt/workstudy/position/index', NULL, 1, 0, 'C', '0', '0', 'jcbt:workstudy:position:list', 'job', 1, NOW(), '勤工俭学岗位管理');
SET @position_menu_id = LAST_INSERT_ID();
-- 5.3 岗位管理权限按钮
INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query_param`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `remark`) VALUES
('岗位查询', @position_menu_id, 1, '', '', NULL, 1, 0, 'F', '0', '0', 'jcbt:workstudy:position:query', '#', 1, NOW(), ''),
('岗位新增', @position_menu_id, 2, '', '', NULL, 1, 0, 'F', '0', '0', 'jcbt:workstudy:position:add', '#', 1, NOW(), ''),
('岗位修改', @position_menu_id, 3, '', '', NULL, 1, 0, 'F', '0', '0', 'jcbt:workstudy:position:edit', '#', 1, NOW(), ''),
('岗位删除', @position_menu_id, 4, '', '', NULL, 1, 0, 'F', '0', '0', 'jcbt:workstudy:position:remove', '#', 1, NOW(), ''),
('岗位导出', @position_menu_id, 5, '', '', NULL, 1, 0, 'F', '0', '0', 'jcbt:workstudy:position:export', '#', 1, NOW(), '');
-- 5.4 申请管理菜单
INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query_param`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `remark`)
VALUES ('申请管理', @workstudy_menu_id, 2, 'application', 'jcbt/workstudy/application/index', NULL, 1, 0, 'C', '0', '0', 'jcbt:workstudy:application:list', 'form', 1, NOW(), '勤工俭学申请管理');
SET @application_menu_id = LAST_INSERT_ID();
-- 5.5 申请管理权限按钮
INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query_param`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `remark`) VALUES
('申请查询', @application_menu_id, 1, '', '', NULL, 1, 0, 'F', '0', '0', 'jcbt:workstudy:application:query', '#', 1, NOW(), ''),
('申请新增', @application_menu_id, 2, '', '', NULL, 1, 0, 'F', '0', '0', 'jcbt:workstudy:application:add', '#', 1, NOW(), ''),
('申请修改', @application_menu_id, 3, '', '', NULL, 1, 0, 'F', '0', '0', 'jcbt:workstudy:application:edit', '#', 1, NOW(), ''),
('申请删除', @application_menu_id, 4, '', '', NULL, 1, 0, 'F', '0', '0', 'jcbt:workstudy:application:remove', '#', 1, NOW(), ''),
('申请导出', @application_menu_id, 5, '', '', NULL, 1, 0, 'F', '0', '0', 'jcbt:workstudy:application:export', '#', 1, NOW(), ''),
('申请审核', @application_menu_id, 6, '', '', NULL, 1, 0, 'F', '0', '0', 'jcbt:workstudy:application:review', '#', 1, NOW(), '');
-- 5.6 审核管理菜单
INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query_param`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `remark`)
VALUES ('审核管理', @workstudy_menu_id, 3, 'review', 'jcbt/workstudy/review/index', NULL, 1, 0, 'C', '0', '0', 'jcbt:workstudy:review:list', 'eye', 1, NOW(), '勤工俭学审核管理');
SET @review_menu_id = LAST_INSERT_ID();
-- 5.7 审核管理权限按钮
INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query_param`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `remark`) VALUES
('审核查询', @review_menu_id, 1, '', '', NULL, 1, 0, 'F', '0', '0', 'jcbt:workstudy:review:query', '#', 1, NOW(), ''),
('学院审核', @review_menu_id, 2, '', '', NULL, 1, 0, 'F', '0', '0', 'jcbt:workstudy:review:college', '#', 1, NOW(), ''),
('终审', @review_menu_id, 3, '', '', NULL, 1, 0, 'F', '0', '0', 'jcbt:workstudy:review:final', '#', 1, NOW(), ''),
('审核记录', @review_menu_id, 4, '', '', NULL, 1, 0, 'F', '0', '0', 'jcbt:workstudy:review:record', '#', 1, NOW(), '');
-- =====================================================
-- 6. 恢复外键检查
-- =====================================================
SET FOREIGN_KEY_CHECKS = 1;
-- =====================================================
-- 7. 脚本执行完成提示
-- =====================================================
SELECT 'JCBT勤工俭学模块数据库建表脚本执行完成!' AS '执行结果';
SELECT '包含内容:' AS '脚本内容',
'1. 岗位信息表' AS '表1',
'2. 申请信息表' AS '表2',
'3. 系统字典数据' AS '数据1',
'4. 测试示例数据' AS '数据2',
'5. 权限菜单数据' AS '数据3';