删除sql和md文件,减轻干扰

This commit is contained in:
zlwu committed 2025-08-18 09:45:35 +08:00
1 parent c9f3687c70
commit adfbb74699
266 files changed
+1155 -48917

No files matched your search

-1
View File
@@ -1 +0,0 @@
ALTER TABLE jcbt_scholarship_type ADD COLUMN create_dept BIGINT(20) COMMENT '创建部门' AFTER is_system;
-6
View File
@@ -1,6 +0,0 @@
-- 为 jcbt_scholarship_application 表添加 create_dept 字段
-- 解决 MyBatis-Plus 插入数据时的字段缺失问题
ALTER TABLE jcbt_scholarship_application
ADD COLUMN create_dept bigint(20) DEFAULT NULL COMMENT '创建部门'
AFTER submit_time;
@@ -1,41 +0,0 @@
-- ============================================================================
-- 贫困生认定申请表 - 添加缺失的family_economy_summary字段
-- 创建时间: 2025-01-27
-- 描述: 修复 jcbt_poverty_application 表缺失的 family_economy_summary 字段
-- ============================================================================
-- 检查并添加 family_economy_summary 字段(如果不存在)
SET @sql = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME = 'family_economy_summary');
SET @sql = IF(@sql = 0,
'ALTER TABLE jcbt_poverty_application ADD COLUMN family_economy_summary text COMMENT ''家庭经济情况摘要'' AFTER assistance_type_names',
'SELECT ''family_economy_summary字段已存在'' as result');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- 验证字段是否添加成功
SELECT
CASE
WHEN (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME = 'family_economy_summary') > 0
THEN 'SUCCESS: family_economy_summary字段已成功添加到数据库表中'
ELSE 'ERROR: family_economy_summary字段添加失败'
END as verification_result;
-- 显示表结构确认
DESCRIBE jcbt_poverty_application;
-- ============================================================================
-- 使用说明:
-- 1. 连接到对应的数据库
-- 2. 执行本脚本: source /path/to/add_family_economy_summary_field.sql
-- 3. 检查输出结果,确认字段已正确添加
-- 4. 重新启动后端服务
-- ============================================================================
@@ -1,28 +0,0 @@
-- =====================================================
-- 奖学金类型表 - 添加缺失字段
-- 创建时间: 2025-08-04
-- 说明: 添加申请条件、评定标准、备注三个字段
-- =====================================================
-- 添加申请条件字段
ALTER TABLE jcbt_scholarship_type
ADD COLUMN IF NOT EXISTS application_conditions TEXT COMMENT '申请条件'
AFTER application_guide;
-- 添加评定标准字段
ALTER TABLE jcbt_scholarship_type
ADD COLUMN IF NOT EXISTS evaluation_criteria TEXT COMMENT '评定标准'
AFTER application_conditions;
-- 添加备注字段
ALTER TABLE jcbt_scholarship_type
ADD COLUMN IF NOT EXISTS remark VARCHAR(500) COMMENT '备注'
AFTER evaluation_criteria;
-- 验证字段添加
SELECT COLUMN_NAME, DATA_TYPE, COLUMN_COMMENT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'jcbt_scholarship_type'
AND COLUMN_NAME IN ('application_conditions', 'evaluation_criteria', 'remark')
ORDER BY ORDINAL_POSITION;
@@ -1,21 +0,0 @@
-- 修复 jcbt_poverty_application 表中 assistance_types 字段的问题
-- 问题: Field 'assistance_types' doesn't have a default value
-- 解决方案: 设置字段允许NULL或者添加默认值
USE hzdyjs_xg;
-- 修改 assistance_types 字段,允许NULL值
ALTER TABLE jcbt_poverty_application
MODIFY COLUMN assistance_types varchar(200) COMMENT '申请资助类型' DEFAULT NULL;
-- 检查修改结果
SELECT
COLUMN_NAME as '字段名',
DATA_TYPE as '数据类型',
IS_NULLABLE as '允许NULL',
COLUMN_DEFAULT as '默认值',
COLUMN_COMMENT as '注释'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME = 'assistance_types';
@@ -1,189 +0,0 @@
-- ============================================================================
-- 贫困生认定申请表字段修复脚本
-- 创建时间: 2025-01-03
-- 描述: 修复 jcbt_poverty_application 表缺失的字段
-- ============================================================================
-- 检查并添加缺失的字段到 jcbt_poverty_application 表
-- 1. 检查表是否存在,如不存在则创建完整表
CREATE TABLE IF NOT EXISTS `jcbt_poverty_application` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`application_no` varchar(50) DEFAULT NULL COMMENT '申请编号',
`academic_year` varchar(20) DEFAULT NULL COMMENT '学年',
`term` int(11) DEFAULT NULL COMMENT '学期',
`student_id` bigint(20) DEFAULT NULL COMMENT '学生ID',
`student_no` varchar(50) DEFAULT NULL COMMENT '学号',
`student_name` varchar(100) DEFAULT NULL COMMENT '学生姓名',
`gender` varchar(10) DEFAULT NULL COMMENT '性别',
`college_id` bigint(20) DEFAULT NULL COMMENT '学院ID',
`college_name` varchar(100) DEFAULT NULL COMMENT '学院名称',
`major_id` bigint(20) DEFAULT NULL COMMENT '专业ID',
`major_name` varchar(100) DEFAULT NULL COMMENT '专业名称',
`class_id` bigint(20) DEFAULT NULL COMMENT '班级ID',
`class_name` varchar(100) DEFAULT NULL COMMENT '班级名称',
`recognition_group` varchar(50) DEFAULT NULL COMMENT '认定群体(特殊群体/其他群体)',
`recognition_type_id` bigint(20) DEFAULT NULL COMMENT '认定类型ID',
`recognition_type_code` varchar(50) DEFAULT NULL COMMENT '认定类型编码',
`recognition_type_name` varchar(100) DEFAULT NULL COMMENT '认定类型名称',
`assistance_type_ids` varchar(500) DEFAULT NULL COMMENT '申请自助类型ID数组(多选)',
`assistance_type_names` varchar(500) DEFAULT NULL COMMENT '申请自助类型名称(多个用逗号分隔)',
`family_economy_summary` text COMMENT '家庭经济情况摘要',
`attach_application_form_url` varchar(500) DEFAULT NULL COMMENT '申请表附件URL',
`attach_application_form_id` bigint(20) DEFAULT NULL COMMENT '申请表附件ID',
`attach_survey_form_url` varchar(500) DEFAULT NULL COMMENT '调查表附件URL',
`attach_survey_form_id` bigint(20) DEFAULT NULL COMMENT '调查表附件ID',
`status` varchar(20) DEFAULT 'DRAFT' COMMENT '申请状态(DRAFT-草稿,SUBMITTED-已提交,REVIEWING-审核中,APPROVED-已通过,REJECTED-已拒绝,WITHDRAWN-已撤回)',
`submitter_id` bigint(20) DEFAULT NULL COMMENT '提交人ID',
`submitter_name` varchar(100) DEFAULT NULL COMMENT '提交人姓名',
`submit_time` datetime DEFAULT NULL COMMENT '提交时间',
`auditor_id` bigint(20) DEFAULT NULL COMMENT '审核人ID',
`auditor_name` varchar(100) DEFAULT NULL COMMENT '审核人姓名',
`audit_time` datetime DEFAULT NULL COMMENT '审核时间',
`audit_opinion` text COMMENT '审核意见',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
`deleted` bigint(20) DEFAULT '0' COMMENT '逻辑删除标记(0-正常,非0-已删除)',
`tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_student_no` (`student_no`),
KEY `idx_status` (`status`),
KEY `idx_academic_year` (`academic_year`),
KEY `idx_college_id` (`college_id`),
KEY `idx_tenant_deleted` (`tenant_id`, `deleted`),
KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='贫困生认定申请表';
-- 2. 如果表已存在但缺少字段,则添加缺失字段
-- 添加 term 字段(如果不存在)
SET @sql = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME = 'term');
SET @sql = IF(@sql = 0,
'ALTER TABLE jcbt_poverty_application ADD COLUMN term int(11) DEFAULT NULL COMMENT ''学期'' AFTER academic_year',
'SELECT ''term字段已存在'' as result');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- 添加 attach_application_form_id 字段(如果不存在)
SET @sql = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME = 'attach_application_form_id');
SET @sql = IF(@sql = 0,
'ALTER TABLE jcbt_poverty_application ADD COLUMN attach_application_form_id bigint(20) DEFAULT NULL COMMENT ''申请表附件ID'' AFTER attach_application_form_url',
'SELECT ''attach_application_form_id字段已存在'' as result');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- 添加 submit_time 字段(如果不存在)
SET @sql = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME = 'submit_time');
SET @sql = IF(@sql = 0,
'ALTER TABLE jcbt_poverty_application ADD COLUMN submit_time datetime DEFAULT NULL COMMENT ''提交时间'' AFTER submitter_name',
'SELECT ''submit_time字段已存在'' as result');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- 添加 auditor_id 字段(如果不存在)
SET @sql = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME = 'auditor_id');
SET @sql = IF(@sql = 0,
'ALTER TABLE jcbt_poverty_application ADD COLUMN auditor_id bigint(20) DEFAULT NULL COMMENT ''审核人ID'' AFTER submit_time',
'SELECT ''auditor_id字段已存在'' as result');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- 添加 auditor_name 字段(如果不存在)
SET @sql = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME = 'auditor_name');
SET @sql = IF(@sql = 0,
'ALTER TABLE jcbt_poverty_application ADD COLUMN auditor_name varchar(100) DEFAULT NULL COMMENT ''审核人姓名'' AFTER auditor_id',
'SELECT ''auditor_name字段已存在'' as result');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- 添加 audit_time 字段(如果不存在)
SET @sql = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME = 'audit_time');
SET @sql = IF(@sql = 0,
'ALTER TABLE jcbt_poverty_application ADD COLUMN audit_time datetime DEFAULT NULL COMMENT ''审核时间'' AFTER auditor_name',
'SELECT ''audit_time字段已存在'' as result');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- 添加 audit_opinion 字段(如果不存在)
SET @sql = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME = 'audit_opinion');
SET @sql = IF(@sql = 0,
'ALTER TABLE jcbt_poverty_application ADD COLUMN audit_opinion text COMMENT ''审核意见'' AFTER audit_time',
'SELECT ''audit_opinion字段已存在'' as result');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- 3. 验证表结构
SELECT 'Table structure verification:' as message;
DESCRIBE jcbt_poverty_application;
-- 4. 检查缺失的字段
SELECT
'Missing fields check:' as message,
CASE
WHEN (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME = 'term') = 0
THEN 'term字段缺失'
ELSE 'term字段存在'
END as term_status,
CASE
WHEN (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME = 'attach_application_form_id') = 0
THEN 'attach_application_form_id字段缺失'
ELSE 'attach_application_form_id字段存在'
END as attach_application_form_id_status;
-- ============================================================================
-- 使用说明:
-- 1. 连接到对应的数据库
-- 2. 执行本脚本
-- 3. 检查输出结果,确认所有字段都已正确添加
-- 4. 重新启动后端服务
-- ============================================================================
@@ -1,98 +0,0 @@
-- ================================================================
-- 贫困生认定申请表完整修复脚本
-- 文件: database_fix_jcbt_poverty_application_complete.sql
-- 功能: 修复 teacher_id 字段默认值问题,添加 family_economy_summary 字段
-- ================================================================
USE hzdyjs_xg;
-- 1. 检查并修复 teacher_id 字段
SELECT '开始检查 teacher_id 字段...' AS message;
-- 检查字段是否存在以及是否允许NULL
SELECT
COLUMN_NAME,
IS_NULLABLE,
COLUMN_DEFAULT,
DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME = 'teacher_id';
-- 修改 teacher_id 字段为允许NULL(如果字段存在且不允许NULL)
SET @sql = '';
SELECT COUNT(*) INTO @count
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME = 'teacher_id'
AND IS_NULLABLE = 'NO';
SELECT IF(@count > 0,
CONCAT('ALTER TABLE jcbt_poverty_application MODIFY COLUMN teacher_id bigint(20) NULL COMMENT ''班主任教师ID'';'),
'SELECT ''teacher_id 字段已允许NULL或不存在'' AS result;'
) INTO @sql;
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SELECT '✅ teacher_id 字段修复完成' AS message;
-- 2. 检查并添加 family_economy_summary 字段
SELECT '开始检查 family_economy_summary 字段...' AS message;
SET @sql = '';
SELECT COUNT(*) INTO @count
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME = 'family_economy_summary';
SELECT IF(@count = 0,
'ALTER TABLE jcbt_poverty_application ADD COLUMN family_economy_summary text COMMENT ''家庭经济情况摘要'' AFTER assistance_type_names;',
'SELECT ''family_economy_summary 字段已存在'' AS result;'
) INTO @sql;
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SELECT '✅ family_economy_summary 字段检查完成' AS message;
-- 3. 验证修复结果
SELECT '=== 修复结果验证 ===' AS message;
-- 显示相关字段信息
SELECT
COLUMN_NAME AS '字段名',
DATA_TYPE AS '数据类型',
IS_NULLABLE AS '允许NULL',
COLUMN_DEFAULT AS '默认值',
COLUMN_COMMENT AS '注释'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME IN ('teacher_id', 'family_economy_summary')
ORDER BY ORDINAL_POSITION;
-- 4. 显示完整表结构(关键字段)
SELECT '=== 表结构确认 ===' AS message;
SELECT
COLUMN_NAME AS '字段名',
DATA_TYPE AS '数据类型',
IS_NULLABLE AS '允许NULL',
COLUMN_COMMENT AS '注释'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME IN (
'id', 'student_id', 'class_id', 'teacher_id',
'family_economy_summary', 'status', 'create_by', 'create_time'
)
ORDER BY ORDINAL_POSITION;
SELECT '🎉 所有修复操作完成!' AS message;
SELECT '📝 请重启后端服务以生效!' AS note;
-131
View File
@@ -1,131 +0,0 @@
-- ================================================================
-- 贫困生认定申请表 teacher_name 字段修复脚本
-- 文件: database_fix_teacher_name.sql
-- 功能: 添加缺失的 teacher_name 字段,并确保允许NULL
-- ================================================================
USE hzdyjs_xg;
-- 1. 检查 teacher_name 字段是否存在
SELECT '开始检查 teacher_name 字段...' AS message;
SELECT
COLUMN_NAME,
IS_NULLABLE,
COLUMN_DEFAULT,
DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME = 'teacher_name';
-- 2. 添加 teacher_name 字段(如果不存在)
SET @sql = '';
SELECT COUNT(*) INTO @count
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME = 'teacher_name';
SELECT IF(@count = 0,
'ALTER TABLE jcbt_poverty_application ADD COLUMN teacher_name varchar(100) DEFAULT NULL COMMENT ''班主任教师姓名'' AFTER teacher_id;',
'SELECT ''teacher_name 字段已存在,检查是否需要修改属性'' AS result;'
) INTO @sql;
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- 3. 修改 teacher_name 字段为允许 NULL(如果字段存在且不允许NULL)
SET @sql = '';
SELECT COUNT(*) INTO @count
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME = 'teacher_name'
AND IS_NULLABLE = 'NO';
SELECT IF(@count > 0,
'ALTER TABLE jcbt_poverty_application MODIFY COLUMN teacher_name varchar(100) DEFAULT NULL COMMENT ''班主任教师姓名'';',
'SELECT ''teacher_name 字段已允许NULL'' AS result;'
) INTO @sql;
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SELECT '✅ teacher_name 字段修复完成' AS message;
-- 4. 添加 teacher_id 字段(如果不存在)
SET @sql = '';
SELECT COUNT(*) INTO @count
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME = 'teacher_id';
SELECT IF(@count = 0,
'ALTER TABLE jcbt_poverty_application ADD COLUMN teacher_id bigint(20) DEFAULT NULL COMMENT ''班主任教师ID'' AFTER class_name;',
'SELECT ''teacher_id 字段已存在'' AS result;'
) INTO @sql;
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- 5. 确保 teacher_id 字段允许 NULL
SELECT '检查 teacher_id 字段...' AS message;
SET @sql = '';
SELECT COUNT(*) INTO @count
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME = 'teacher_id'
AND IS_NULLABLE = 'NO';
SELECT IF(@count > 0,
'ALTER TABLE jcbt_poverty_application MODIFY COLUMN teacher_id bigint(20) DEFAULT NULL COMMENT ''班主任教师ID'';',
'SELECT ''teacher_id 字段已允许NULL或不存在'' AS result;'
) INTO @sql;
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SELECT '✅ teacher_id 字段修复完成' AS message;
-- 6. 验证修复结果
SELECT '=== 修复结果验证 ===' AS message;
SELECT
COLUMN_NAME AS '字段名',
DATA_TYPE AS '数据类型',
IS_NULLABLE AS '允许NULL',
COLUMN_DEFAULT AS '默认值',
COLUMN_COMMENT AS '注释'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME IN ('teacher_id', 'teacher_name')
ORDER BY ORDINAL_POSITION;
-- 7. 显示完整的字段结构确认
SELECT '=== 相关字段结构确认 ===' AS message;
SELECT
COLUMN_NAME AS '字段名',
DATA_TYPE AS '数据类型',
IS_NULLABLE AS '允许NULL',
COLUMN_DEFAULT AS '默认值',
COLUMN_COMMENT AS '注释'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME IN (
'class_id', 'class_name', 'teacher_id', 'teacher_name', 'recognition_group'
)
ORDER BY ORDINAL_POSITION;
SELECT '🎉 teacher_name 和 teacher_id 字段修复完成!' AS message;
SELECT '📝 请重启后端服务以生效!' AS note;
@@ -1,75 +0,0 @@
-- ================================================================
-- 贫困生认定申请表teacher_name字段修复脚本
-- 文件: database_fix_teacher_name_field.sql
-- 功能: 添加缺失的teacher_name字段
-- ================================================================
USE hzdyjs_xg;
-- 1. 检查并添加 teacher_name 字段
SELECT '开始检查 teacher_name 字段...' AS message;
-- 检查字段是否存在
SELECT
COLUMN_NAME,
IS_NULLABLE,
COLUMN_DEFAULT,
DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME = 'teacher_name';
-- 添加 teacher_name 字段(如果不存在)
SET @sql = '';
SELECT COUNT(*) INTO @count
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME = 'teacher_name';
SELECT IF(@count = 0,
'ALTER TABLE jcbt_poverty_application ADD COLUMN teacher_name varchar(100) NULL COMMENT ''班主任教师姓名'' AFTER teacher_id;',
'SELECT ''teacher_name 字段已存在'' AS result;'
) INTO @sql;
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SELECT '✅ teacher_name 字段检查完成' AS message;
-- 2. 验证修复结果
SELECT '=== 修复结果验证 ===' AS message;
-- 显示teacher相关字段信息
SELECT
COLUMN_NAME AS '字段名',
DATA_TYPE AS '数据类型',
IS_NULLABLE AS '允许NULL',
COLUMN_DEFAULT AS '默认值',
COLUMN_COMMENT AS '注释'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME LIKE '%teacher%'
ORDER BY ORDINAL_POSITION;
-- 3. 显示完整表结构确认
SELECT '=== 班级相关字段确认 ===' AS message;
SELECT
COLUMN_NAME AS '字段名',
DATA_TYPE AS '数据类型',
IS_NULLABLE AS '允许NULL',
COLUMN_COMMENT AS '注释'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME IN (
'class_id', 'class_name', 'teacher_id', 'teacher_name'
)
ORDER BY ORDINAL_POSITION;
SELECT '🎉 teacher_name字段修复操作完成!' AS message;
SELECT '📝 请重启后端服务以生效!' AS note;
-30
View File
@@ -1,30 +0,0 @@
-- 调试compatibility_type字段问题
-- 检查表结构
DESCRIBE jcbt_scholarship_type;
-- 检查字段是否存在
SHOW COLUMNS FROM jcbt_scholarship_type LIKE 'compatibility_type';
-- 查看具体数据
SELECT id, type_name, compatibility_type,
CASE
WHEN compatibility_type IS NULL THEN 'NULL值'
WHEN compatibility_type = '' THEN '空字符串'
ELSE CONCAT('有值:', compatibility_type)
END as value_status
FROM jcbt_scholarship_type
WHERE deleted = 0
LIMIT 10;
-- 统计各种值的分布
SELECT
compatibility_type,
COUNT(*) as count,
CASE
WHEN compatibility_type IS NULL THEN 'NULL值'
WHEN compatibility_type = '' THEN '空字符串'
ELSE '有效值'
END as value_type
FROM jcbt_scholarship_type
WHERE deleted = 0
GROUP BY compatibility_type;
-134
View File
@@ -1,134 +0,0 @@
-- ========================================
-- 奖学金名额分配删除问题诊断脚本
-- 创建时间: 2025-01-28
-- 说明: 用于排查无法删除的名额分配记录
-- ========================================
USE hzdyjs_xg;
-- 1. 查看所有名额分配记录的状态
SELECT
id,
batch_id,
scholarship_type_id,
allocation_level,
target_dept_id,
total_quota,
used_quota,
reserved_quota,
available_quota,
is_adjustable,
is_locked,
status,
deleted,
create_time,
update_time
FROM jcbt_scholarship_quota
WHERE deleted = 0
ORDER BY create_time DESC;
-- 2. 查找可能有问题的记录(已使用名额大于0或已锁定)
SELECT
'已使用名额大于0' as issue_type,
id,
batch_id,
scholarship_type_id,
total_quota,
used_quota,
reserved_quota,
available_quota,
is_locked,
status
FROM jcbt_scholarship_quota
WHERE deleted = 0 AND used_quota > 0
UNION ALL
SELECT
'已被锁定' as issue_type,
id,
batch_id,
scholarship_type_id,
total_quota,
used_quota,
reserved_quota,
available_quota,
is_locked,
status
FROM jcbt_scholarship_quota
WHERE deleted = 0 AND is_locked = 1
UNION ALL
SELECT
'状态异常' as issue_type,
id,
batch_id,
scholarship_type_id,
total_quota,
used_quota,
reserved_quota,
available_quota,
is_locked,
status
FROM jcbt_scholarship_quota
WHERE deleted = 0 AND status != 'ACTIVE';
-- 3. 检查是否存在外键约束或关联数据
-- 检查是否有申请记录引用了这些名额
SELECT
q.id as quota_id,
q.batch_id,
q.scholarship_type_id,
q.used_quota,
q.is_locked,
COUNT(DISTINCT a.id) as application_count
FROM jcbt_scholarship_quota q
LEFT JOIN jcbt_scholarship_application a ON a.batch_id = q.batch_id
AND a.scholarship_type_id = q.scholarship_type_id
WHERE q.deleted = 0
GROUP BY q.id, q.batch_id, q.scholarship_type_id, q.used_quota, q.is_locked
HAVING application_count > 0 OR q.used_quota > 0 OR q.is_locked = 1;
-- 4. 检查是否有下级名额分配
SELECT
parent.id as parent_quota_id,
parent.allocation_level as parent_level,
parent.used_quota as parent_used_quota,
parent.is_locked as parent_is_locked,
COUNT(child.id) as child_count
FROM jcbt_scholarship_quota parent
LEFT JOIN jcbt_scholarship_quota child ON child.parent_quota_id = parent.id AND child.deleted = 0
WHERE parent.deleted = 0
GROUP BY parent.id, parent.allocation_level, parent.used_quota, parent.is_locked
HAVING child_count > 0;
-- 5. 详细查看有问题的记录(根据实际情况调整ID)
-- 请替换下面的ID为实际无法删除的记录ID
-- SELECT * FROM jcbt_scholarship_quota WHERE id = 替换为实际ID;
-- 6. 查看相关批次信息
SELECT
b.id as batch_id,
b.batch_name,
b.batch_code,
b.status as batch_status,
b.start_time,
b.end_time,
COUNT(q.id) as quota_count
FROM jcbt_scholarship_batch b
LEFT JOIN jcbt_scholarship_quota q ON q.batch_id = b.id AND q.deleted = 0
WHERE b.deleted = 0
GROUP BY b.id, b.batch_name, b.batch_code, b.status, b.start_time, b.end_time;
-- 7. 查看奖学金类型信息
SELECT
st.id as type_id,
st.type_name,
st.type_code,
st.status as type_status,
COUNT(q.id) as quota_count
FROM jcbt_scholarship_type st
LEFT JOIN jcbt_scholarship_quota q ON q.scholarship_type_id = st.id AND q.deleted = 0
WHERE st.deleted = 0
GROUP BY st.id, st.type_name, st.type_code, st.status;
@@ -1,249 +0,0 @@
-- ===================================================================
-- 奖学金名额显示问题诊断脚本
-- 创建时间: 2025-01-27
-- 目的: 检查班级名额分配和奖学金类型的数据完整性
-- ===================================================================
-- 1. 检查当前班主任和班级信息
SELECT
'=== 1. 班主任和班级信息检查 ===' as info;
SELECT
u.user_id,
u.user_name,
u.nick_name,
c.class_id,
c.class_name,
c.grade_level,
c.dept_id,
d.dept_name
FROM sys_user u
LEFT JOIN jcbt_class c ON u.user_id = c.head_teacher_id
LEFT JOIN sys_dept d ON c.dept_id = d.dept_id
WHERE u.user_type = '03' -- 班主任
AND c.class_id IS NOT NULL
ORDER BY c.class_id;
-- 2. 检查奖学金批次信息
SELECT
'=== 2. 奖学金批次信息检查 ===' as info;
SELECT
batch_id,
batch_name,
batch_status,
start_date,
end_date,
create_time
FROM jcbt_scholarship_batch
WHERE batch_status = '1' -- 启用状态
ORDER BY create_time DESC;
-- 3. 检查奖学金类型信息
SELECT
'=== 3. 奖学金类型信息检查 ===' as info;
SELECT
st.type_id,
st.type_name,
st.type_level,
st.type_status,
bt.batch_id,
b.batch_name
FROM jcbt_scholarship_type st
LEFT JOIN jcbt_batch_type bt ON st.type_id = bt.type_id
LEFT JOIN jcbt_scholarship_batch b ON bt.batch_id = b.batch_id
WHERE st.type_status = '1' -- 启用状态
ORDER BY st.type_level, st.type_name;
-- 4. 检查班级名额分配情况
SELECT
'=== 4. 班级名额分配情况检查 ===' as info;
SELECT
qa.allocation_id,
qa.batch_id,
b.batch_name,
qa.type_id,
st.type_name,
qa.class_id,
c.class_name,
qa.allocated_quota,
qa.allocation_basis,
qa.create_time
FROM jcbt_quota_allocation qa
LEFT JOIN jcbt_scholarship_batch b ON qa.batch_id = b.batch_id
LEFT JOIN jcbt_scholarship_type st ON qa.type_id = st.type_id
LEFT JOIN jcbt_class c ON qa.class_id = c.class_id
ORDER BY qa.batch_id, qa.class_id, qa.type_id;
-- 5. 检查已使用名额情况
SELECT
'=== 5. 已使用名额情况检查 ===' as info;
SELECT
sa.batch_id,
b.batch_name,
sa.scholarship_type_id,
st.type_name,
sa.applicant_class_id,
c.class_name,
COUNT(*) as used_quota,
GROUP_CONCAT(sa.application_status) as status_list
FROM jcbt_scholarship_application sa
LEFT JOIN jcbt_scholarship_batch b ON sa.batch_id = b.batch_id
LEFT JOIN jcbt_scholarship_type st ON sa.scholarship_type_id = st.type_id
LEFT JOIN jcbt_class c ON sa.applicant_class_id = c.class_id
WHERE sa.application_status IN ('submitted', 'approved') -- 有效申请
GROUP BY sa.batch_id, sa.scholarship_type_id, sa.applicant_class_id
ORDER BY sa.batch_id, sa.applicant_class_id, sa.scholarship_type_id;
-- 6. 检查名额使用情况汇总
SELECT
'=== 6. 名额使用情况汇总 ===' as info;
SELECT
qa.batch_id,
b.batch_name,
qa.class_id,
c.class_name,
qa.type_id,
st.type_name,
qa.allocated_quota,
COALESCE(used.used_count, 0) as used_quota,
(qa.allocated_quota - COALESCE(used.used_count, 0)) as available_quota,
CASE
WHEN qa.allocated_quota = 0 THEN 'unlimited'
WHEN (qa.allocated_quota - COALESCE(used.used_count, 0)) > 0 THEN 'available'
ELSE 'full'
END as quota_status
FROM jcbt_quota_allocation qa
LEFT JOIN jcbt_scholarship_batch b ON qa.batch_id = b.batch_id
LEFT JOIN jcbt_scholarship_type st ON qa.type_id = st.type_id
LEFT JOIN jcbt_class c ON qa.class_id = c.class_id
LEFT JOIN (
SELECT
batch_id,
scholarship_type_id,
applicant_class_id,
COUNT(*) as used_count
FROM jcbt_scholarship_application
WHERE application_status IN ('submitted', 'approved')
GROUP BY batch_id, scholarship_type_id, applicant_class_id
) used ON qa.batch_id = used.batch_id
AND qa.type_id = used.scholarship_type_id
AND qa.class_id = used.applicant_class_id
ORDER BY qa.batch_id, qa.class_id, qa.type_id;
-- 7. 检查特定班级的详细情况(以班级ID=1为例)
SELECT
'=== 7. 特定班级详细情况检查 (class_id=1) ===' as info;
SELECT
'班级基本信息:' as section,
c.class_id,
c.class_name,
c.grade_level,
u.user_name as head_teacher_name,
u.nick_name as head_teacher_nick
FROM jcbt_class c
LEFT JOIN sys_user u ON c.head_teacher_id = u.user_id
WHERE c.class_id = 1;
SELECT
'该班级的名额分配:' as section,
qa.type_id,
st.type_name,
qa.allocated_quota,
qa.allocation_basis
FROM jcbt_quota_allocation qa
LEFT JOIN jcbt_scholarship_type st ON qa.type_id = st.type_id
WHERE qa.class_id = 1
ORDER BY qa.type_id;
-- 8. 检查数据完整性问题
SELECT
'=== 8. 数据完整性问题检查 ===' as info;
-- 检查缺少名额分配的奖学金类型
SELECT
'缺少名额分配的奖学金类型:' as issue_type,
st.type_id,
st.type_name,
bt.batch_id,
b.batch_name
FROM jcbt_scholarship_type st
INNER JOIN jcbt_batch_type bt ON st.type_id = bt.type_id
INNER JOIN jcbt_scholarship_batch b ON bt.batch_id = b.batch_id
LEFT JOIN jcbt_quota_allocation qa ON st.type_id = qa.type_id AND bt.batch_id = qa.batch_id
WHERE st.type_status = '1'
AND b.batch_status = '1'
AND qa.allocation_id IS NULL;
-- 检查有名额分配但奖学金类型不存在的情况
SELECT
'名额分配指向不存在的奖学金类型:' as issue_type,
qa.allocation_id,
qa.type_id,
qa.batch_id,
qa.class_id
FROM jcbt_quota_allocation qa
LEFT JOIN jcbt_scholarship_type st ON qa.type_id = st.type_id
WHERE st.type_id IS NULL;
-- 9. 模拟API查询结果
SELECT
'=== 9. 模拟API查询结果 (batch_id=1, class_id=1) ===' as info;
SELECT
st.type_id,
st.type_name,
st.type_level,
st.type_description,
CASE
WHEN qa.allocated_quota IS NULL THEN 0
ELSE qa.allocated_quota
END as total_quota,
COALESCE(used.used_count, 0) as used_quota,
CASE
WHEN qa.allocated_quota IS NULL THEN 0
WHEN qa.allocated_quota = 0 THEN 999999
ELSE (qa.allocated_quota - COALESCE(used.used_count, 0))
END as available_quota,
CASE
WHEN qa.allocated_quota IS NULL THEN FALSE
WHEN qa.allocated_quota = 0 THEN FALSE
ELSE TRUE
END as has_quota,
CASE
WHEN qa.allocated_quota IS NULL THEN 'unlimited'
WHEN qa.allocated_quota = 0 THEN 'unlimited'
WHEN (qa.allocated_quota - COALESCE(used.used_count, 0)) > 0 THEN 'available'
ELSE 'full'
END as quota_status
FROM jcbt_scholarship_type st
INNER JOIN jcbt_batch_type bt ON st.type_id = bt.type_id
LEFT JOIN jcbt_quota_allocation qa ON st.type_id = qa.type_id
AND bt.batch_id = qa.batch_id
AND qa.class_id = 1
LEFT JOIN (
SELECT
scholarship_type_id,
applicant_class_id,
COUNT(*) as used_count
FROM jcbt_scholarship_application
WHERE batch_id = 1
AND applicant_class_id = 1
AND application_status IN ('submitted', 'approved')
GROUP BY scholarship_type_id, applicant_class_id
) used ON st.type_id = used.scholarship_type_id
WHERE bt.batch_id = 1
AND st.type_status = '1'
ORDER BY
CASE quota_status
WHEN 'available' THEN 1
WHEN 'unlimited' THEN 2
WHEN 'full' THEN 3
END,
st.type_level,
st.type_name;
@@ -1,245 +0,0 @@
-- ===================================================================
-- 奖学金名额显示问题诊断脚本 (修正版)
-- 创建时间: 2025-01-27
-- 目的: 检查班级名额分配和奖学金类型的数据完整性
-- ===================================================================
-- 1. 检查当前班主任和班级信息
SELECT
'=== 1. 班主任和班级信息检查 ===' as info;
SELECT
u.user_id,
u.user_name,
u.nick_name,
c.class_id,
c.class_name,
c.grade,
c.dept_id
FROM sys_user u
LEFT JOIN xg_class_info c ON u.user_id = c.head_teacher_id
WHERE u.user_type = '03' -- 班主任
AND c.class_id IS NOT NULL
ORDER BY c.class_id;
-- 2. 检查奖学金批次信息
SELECT
'=== 2. 奖学金批次信息检查 ===' as info;
SELECT
batch_id,
batch_name,
batch_status,
start_date,
end_date,
create_time
FROM jcbt_scholarship_batch
WHERE batch_status = '1' -- 启用状态
ORDER BY create_time DESC;
-- 3. 检查奖学金类型信息
SELECT
'=== 3. 奖学金类型信息检查 ===' as info;
SELECT
st.type_id,
st.type_name,
st.type_level,
st.type_status,
bt.batch_id,
b.batch_name
FROM jcbt_scholarship_type st
LEFT JOIN jcbt_scholarship_batch_type bt ON st.type_id = bt.type_id
LEFT JOIN jcbt_scholarship_batch b ON bt.batch_id = b.batch_id
WHERE st.type_status = '1' -- 启用状态
ORDER BY st.type_level, st.type_name;
-- 4. 检查班级名额分配情况
SELECT
'=== 4. 班级名额分配情况检查 ===' as info;
SELECT
cq.quota_id,
cq.batch_id,
b.batch_name,
cq.type_id,
st.type_name,
cq.class_id,
c.class_name,
cq.allocated_quota,
cq.create_time
FROM jcbt_scholarship_class_quota cq
LEFT JOIN jcbt_scholarship_batch b ON cq.batch_id = b.batch_id
LEFT JOIN jcbt_scholarship_type st ON cq.type_id = st.type_id
LEFT JOIN xg_class_info c ON cq.class_id = c.class_id
ORDER BY cq.batch_id, cq.class_id, cq.type_id;
-- 5. 检查已使用名额情况
SELECT
'=== 5. 已使用名额情况检查 ===' as info;
SELECT
sa.batch_id,
b.batch_name,
sa.scholarship_type_id,
st.type_name,
sa.applicant_class_id,
c.class_name,
COUNT(*) as used_quota,
GROUP_CONCAT(sa.application_status) as status_list
FROM jcbt_scholarship_application sa
LEFT JOIN jcbt_scholarship_batch b ON sa.batch_id = b.batch_id
LEFT JOIN jcbt_scholarship_type st ON sa.scholarship_type_id = st.type_id
LEFT JOIN xg_class_info c ON sa.applicant_class_id = c.class_id
WHERE sa.application_status IN ('submitted', 'approved') -- 有效申请
GROUP BY sa.batch_id, sa.scholarship_type_id, sa.applicant_class_id
ORDER BY sa.batch_id, sa.applicant_class_id, sa.scholarship_type_id;
-- 6. 检查名额使用情况汇总
SELECT
'=== 6. 名额使用情况汇总 ===' as info;
SELECT
cq.batch_id,
b.batch_name,
cq.class_id,
c.class_name,
cq.type_id,
st.type_name,
cq.allocated_quota,
COALESCE(used.used_count, 0) as used_quota,
(cq.allocated_quota - COALESCE(used.used_count, 0)) as available_quota,
CASE
WHEN cq.allocated_quota = 0 THEN 'unlimited'
WHEN (cq.allocated_quota - COALESCE(used.used_count, 0)) > 0 THEN 'available'
ELSE 'full'
END as quota_status
FROM jcbt_scholarship_class_quota cq
LEFT JOIN jcbt_scholarship_batch b ON cq.batch_id = b.batch_id
LEFT JOIN jcbt_scholarship_type st ON cq.type_id = st.type_id
LEFT JOIN xg_class_info c ON cq.class_id = c.class_id
LEFT JOIN (
SELECT
batch_id,
scholarship_type_id,
applicant_class_id,
COUNT(*) as used_count
FROM jcbt_scholarship_application
WHERE application_status IN ('submitted', 'approved')
GROUP BY batch_id, scholarship_type_id, applicant_class_id
) used ON cq.batch_id = used.batch_id
AND cq.type_id = used.scholarship_type_id
AND cq.class_id = used.applicant_class_id
ORDER BY cq.batch_id, cq.class_id, cq.type_id;
-- 7. 检查特定班级的详细情况(以班级ID=1为例)
SELECT
'=== 7. 特定班级详细情况检查 (class_id=1) ===' as info;
SELECT
'班级基本信息:' as section,
c.class_id,
c.class_name,
c.grade,
u.user_name as head_teacher_name,
u.nick_name as head_teacher_nick
FROM xg_class_info c
LEFT JOIN sys_user u ON c.head_teacher_id = u.user_id
WHERE c.class_id = 1;
SELECT
'该班级的名额分配:' as section,
cq.type_id,
st.type_name,
cq.allocated_quota
FROM jcbt_scholarship_class_quota cq
LEFT JOIN jcbt_scholarship_type st ON cq.type_id = st.type_id
WHERE cq.class_id = 1
ORDER BY cq.type_id;
-- 8. 检查数据完整性问题
SELECT
'=== 8. 数据完整性问题检查 ===' as info;
-- 检查缺少名额分配的奖学金类型
SELECT
'缺少名额分配的奖学金类型:' as issue_type,
st.type_id,
st.type_name,
bt.batch_id,
b.batch_name
FROM jcbt_scholarship_type st
INNER JOIN jcbt_scholarship_batch_type bt ON st.type_id = bt.type_id
INNER JOIN jcbt_scholarship_batch b ON bt.batch_id = b.batch_id
LEFT JOIN jcbt_scholarship_class_quota cq ON st.type_id = cq.type_id AND bt.batch_id = cq.batch_id
WHERE st.type_status = '1'
AND b.batch_status = '1'
AND cq.quota_id IS NULL;
-- 检查有名额分配但奖学金类型不存在的情况
SELECT
'名额分配指向不存在的奖学金类型:' as issue_type,
cq.quota_id,
cq.type_id,
cq.batch_id,
cq.class_id
FROM jcbt_scholarship_class_quota cq
LEFT JOIN jcbt_scholarship_type st ON cq.type_id = st.type_id
WHERE st.type_id IS NULL;
-- 9. 模拟API查询结果
SELECT
'=== 9. 模拟API查询结果 (batch_id=1, class_id=1) ===' as info;
SELECT
st.type_id,
st.type_name,
st.type_level,
st.type_description,
CASE
WHEN cq.allocated_quota IS NULL THEN 0
ELSE cq.allocated_quota
END as total_quota,
COALESCE(used.used_count, 0) as used_quota,
CASE
WHEN cq.allocated_quota IS NULL THEN 0
WHEN cq.allocated_quota = 0 THEN 999999
ELSE (cq.allocated_quota - COALESCE(used.used_count, 0))
END as available_quota,
CASE
WHEN cq.allocated_quota IS NULL THEN FALSE
WHEN cq.allocated_quota = 0 THEN FALSE
ELSE TRUE
END as has_quota,
CASE
WHEN cq.allocated_quota IS NULL THEN 'unlimited'
WHEN cq.allocated_quota = 0 THEN 'unlimited'
WHEN (cq.allocated_quota - COALESCE(used.used_count, 0)) > 0 THEN 'available'
ELSE 'full'
END as quota_status
FROM jcbt_scholarship_type st
INNER JOIN jcbt_scholarship_batch_type bt ON st.type_id = bt.type_id
LEFT JOIN jcbt_scholarship_class_quota cq ON st.type_id = cq.type_id
AND bt.batch_id = cq.batch_id
AND cq.class_id = 1
LEFT JOIN (
SELECT
scholarship_type_id,
applicant_class_id,
COUNT(*) as used_count
FROM jcbt_scholarship_application
WHERE batch_id = 1
AND applicant_class_id = 1
AND application_status IN ('submitted', 'approved')
GROUP BY scholarship_type_id, applicant_class_id
) used ON st.type_id = used.scholarship_type_id
WHERE bt.batch_id = 1
AND st.type_status = '1'
ORDER BY
CASE quota_status
WHEN 'available' THEN 1
WHEN 'unlimited' THEN 2
WHEN 'full' THEN 3
END,
st.type_level,
st.type_name;
@@ -1,353 +0,0 @@
-- ===================================================================
-- 奖学金名额显示问题诊断脚本 (完全修正版)
-- 创建时间: 2025-01-27
-- 目的: 检查班级名额分配和奖学金类型的数据完整性
-- 表名和字段名完全修正
-- ===================================================================
-- 1. 检查当前班主任和班级信息
SELECT
'=== 1. 班主任和班级信息检查 ===' as info;
SELECT
u.user_id,
u.user_name,
u.nick_name,
c.id as class_id,
c.class_name,
c.grade,
c.college_id,
c.major_id
FROM sys_user u
LEFT JOIN xg_class_msg c ON u.user_id = c.class_teacher_id
WHERE u.user_type = '03' -- 班主任
AND c.id IS NOT NULL
ORDER BY c.id;
-- 2. 检查奖学金批次信息
SELECT
'=== 2. 奖学金批次信息检查 ===' as info;
SELECT
id as batch_id,
batch_name,
status as batch_status,
start_time,
end_time,
create_time
FROM jcbt_scholarship_batch
WHERE status = 'ACTIVE' -- 启用状态
ORDER BY create_time DESC;
-- 3. 检查奖学金类型信息
SELECT
'=== 3. 奖学金类型信息检查 ===' as info;
SELECT
st.id as type_id,
st.type_name,
st.level_type,
st.status as type_status,
bt.batch_id,
b.batch_name
FROM jcbt_scholarship_type st
LEFT JOIN jcbt_scholarship_batch_type bt ON st.id = bt.scholarship_type_id
LEFT JOIN jcbt_scholarship_batch b ON bt.batch_id = b.id
WHERE st.status = 1 -- 启用状态
ORDER BY st.level_type, st.type_name;
-- 4. 检查班级名额分配情况
SELECT
'=== 4. 班级名额分配情况检查 ===' as info;
SELECT
cq.id as quota_id,
cq.batch_id,
b.batch_name,
cq.scholarship_type_id,
st.type_name,
cq.class_id,
c.class_name,
cq.total_quota,
cq.used_quota,
cq.available_quota,
cq.allocation_method,
cq.status,
cq.create_time
FROM jcbt_scholarship_class_quota cq
LEFT JOIN jcbt_scholarship_batch b ON cq.batch_id = b.id
LEFT JOIN jcbt_scholarship_type st ON cq.scholarship_type_id = st.id
LEFT JOIN xg_class_msg c ON cq.class_id = c.id
ORDER BY cq.batch_id, cq.class_id, cq.scholarship_type_id;
-- 5. 检查已使用名额情况
SELECT
'=== 5. 已使用名额情况检查 ===' as info;
SELECT
sa.batch_id,
b.batch_name,
sa.scholarship_type_id,
st.type_name,
sa.applicant_class_id,
c.class_name,
COUNT(*) as actual_used_quota,
GROUP_CONCAT(sa.application_status) as status_list
FROM jcbt_scholarship_application sa
LEFT JOIN jcbt_scholarship_batch b ON sa.batch_id = b.id
LEFT JOIN jcbt_scholarship_type st ON sa.scholarship_type_id = st.id
LEFT JOIN xg_class_msg c ON sa.applicant_class_id = c.id
WHERE sa.application_status IN ('submitted', 'approved') -- 有效申请
GROUP BY sa.batch_id, sa.scholarship_type_id, sa.applicant_class_id
ORDER BY sa.batch_id, sa.applicant_class_id, sa.scholarship_type_id;
-- 6. 检查名额使用情况汇总与一致性
SELECT
'=== 6. 名额使用情况汇总与一致性检查 ===' as info;
SELECT
cq.batch_id,
b.batch_name,
cq.class_id,
c.class_name,
cq.scholarship_type_id,
st.type_name,
cq.total_quota,
cq.used_quota as recorded_used_quota,
COALESCE(actual_used.used_count, 0) as actual_used_quota,
cq.available_quota as recorded_available_quota,
(cq.total_quota - COALESCE(actual_used.used_count, 0)) as calculated_available_quota,
CASE
WHEN cq.used_quota != COALESCE(actual_used.used_count, 0) THEN 'INCONSISTENT'
WHEN cq.available_quota != (cq.total_quota - COALESCE(actual_used.used_count, 0)) THEN 'INCONSISTENT'
ELSE 'CONSISTENT'
END as consistency_status,
CASE
WHEN cq.total_quota = 0 THEN 'unlimited'
WHEN (cq.total_quota - COALESCE(actual_used.used_count, 0)) > 0 THEN 'available'
ELSE 'full'
END as quota_status
FROM jcbt_scholarship_class_quota cq
LEFT JOIN jcbt_scholarship_batch b ON cq.batch_id = b.id
LEFT JOIN jcbt_scholarship_type st ON cq.scholarship_type_id = st.id
LEFT JOIN xg_class_msg c ON cq.class_id = c.id
LEFT JOIN (
SELECT
batch_id,
scholarship_type_id,
applicant_class_id,
COUNT(*) as used_count
FROM jcbt_scholarship_application
WHERE application_status IN ('submitted', 'approved')
GROUP BY batch_id, scholarship_type_id, applicant_class_id
) actual_used ON cq.batch_id = actual_used.batch_id
AND cq.scholarship_type_id = actual_used.scholarship_type_id
AND cq.class_id = actual_used.applicant_class_id
ORDER BY cq.batch_id, cq.class_id, cq.scholarship_type_id;
-- 7. 检查特定班级的详细情况(以班级ID=1为例)
SELECT
'=== 7. 特定班级详细情况检查 (class_id=1) ===' as info;
SELECT
'班级基本信息:' as section,
c.id as class_id,
c.class_name,
c.grade,
c.class_teacher_id,
u.user_name as class_teacher_name,
u.nick_name as class_teacher_nick
FROM xg_class_msg c
LEFT JOIN sys_user u ON c.class_teacher_id = u.user_id
WHERE c.id = 1;
SELECT
'该班级的名额分配:' as section,
cq.scholarship_type_id,
st.type_name,
cq.total_quota,
cq.used_quota,
cq.available_quota,
cq.allocation_method,
cq.status
FROM jcbt_scholarship_class_quota cq
LEFT JOIN jcbt_scholarship_type st ON cq.scholarship_type_id = st.id
WHERE cq.class_id = 1
ORDER BY cq.scholarship_type_id;
-- 8. 检查数据完整性问题
SELECT
'=== 8. 数据完整性问题检查 ===' as info;
-- 检查缺少名额分配的奖学金类型
SELECT
'缺少名额分配的奖学金类型:' as issue_type,
st.id as type_id,
st.type_name,
bt.batch_id,
b.batch_name,
COUNT(DISTINCT c.id) as total_classes_without_quota
FROM jcbt_scholarship_type st
INNER JOIN jcbt_scholarship_batch_type bt ON st.id = bt.scholarship_type_id
INNER JOIN jcbt_scholarship_batch b ON bt.batch_id = b.id
CROSS JOIN xg_class_msg c
LEFT JOIN jcbt_scholarship_class_quota cq ON st.id = cq.scholarship_type_id
AND bt.batch_id = cq.batch_id
AND c.id = cq.class_id
WHERE st.status = 1
AND b.status = 'ACTIVE'
AND c.class_status = '1'
AND cq.id IS NULL
GROUP BY st.id, st.type_name, bt.batch_id, b.batch_name;
-- 检查有名额分配但奖学金类型不存在的情况
SELECT
'名额分配指向不存在的奖学金类型:' as issue_type,
cq.id as quota_id,
cq.scholarship_type_id,
cq.batch_id,
cq.class_id
FROM jcbt_scholarship_class_quota cq
LEFT JOIN jcbt_scholarship_type st ON cq.scholarship_type_id = st.id
WHERE st.id IS NULL;
-- 检查名额分配指向不存在的班级
SELECT
'名额分配指向不存在的班级:' as issue_type,
cq.id as quota_id,
cq.class_id,
cq.class_name as recorded_class_name
FROM jcbt_scholarship_class_quota cq
LEFT JOIN xg_class_msg c ON cq.class_id = c.id
WHERE c.id IS NULL;
-- 9. 模拟API查询结果
SELECT
'=== 9. 模拟API查询结果 (batch_id=1, class_id=1) ===' as info;
SELECT
st.id as type_id,
st.type_name,
st.level_type,
st.description,
CASE
WHEN cq.total_quota IS NULL THEN 0
ELSE cq.total_quota
END as total_quota,
CASE
WHEN cq.used_quota IS NULL THEN 0
ELSE cq.used_quota
END as used_quota,
CASE
WHEN cq.available_quota IS NULL THEN 0
WHEN cq.total_quota = 0 THEN 999999
ELSE cq.available_quota
END as available_quota,
CASE
WHEN cq.total_quota IS NULL THEN FALSE
WHEN cq.total_quota = 0 THEN FALSE
ELSE TRUE
END as has_quota,
CASE
WHEN cq.total_quota IS NULL THEN 'no_allocation'
WHEN cq.total_quota = 0 THEN 'unlimited'
WHEN cq.available_quota > 0 THEN 'available'
ELSE 'full'
END as quota_status,
cq.allocation_method,
cq.status as allocation_status
FROM jcbt_scholarship_type st
INNER JOIN jcbt_scholarship_batch_type bt ON st.id = bt.scholarship_type_id
LEFT JOIN jcbt_scholarship_class_quota cq ON st.id = cq.scholarship_type_id
AND bt.batch_id = cq.batch_id
AND cq.class_id = 1
WHERE bt.batch_id = 1
AND st.status = 1
ORDER BY
CASE quota_status
WHEN 'available' THEN 1
WHEN 'unlimited' THEN 2
WHEN 'full' THEN 3
WHEN 'no_allocation' THEN 4
END,
st.level_type,
st.type_name;
-- 10. 额外检查:验证数据同步问题
SELECT
'=== 10. 数据同步问题检查 ===' as info;
-- 检查used_quota和available_quota字段是否需要更新
SELECT
'need_quota_update' as check_type,
cq.id,
cq.batch_id,
cq.class_id,
cq.scholarship_type_id,
cq.total_quota,
cq.used_quota as recorded_used,
COALESCE(actual.actual_used, 0) as actual_used,
cq.available_quota as recorded_available,
(cq.total_quota - COALESCE(actual.actual_used, 0)) as calculated_available
FROM jcbt_scholarship_class_quota cq
LEFT JOIN (
SELECT
batch_id,
scholarship_type_id,
applicant_class_id,
COUNT(*) as actual_used
FROM jcbt_scholarship_application
WHERE application_status IN ('submitted', 'approved')
GROUP BY batch_id, scholarship_type_id, applicant_class_id
) actual ON cq.batch_id = actual.batch_id
AND cq.scholarship_type_id = actual.scholarship_type_id
AND cq.class_id = actual.applicant_class_id
WHERE cq.used_quota != COALESCE(actual.actual_used, 0)
OR cq.available_quota != (cq.total_quota - COALESCE(actual.actual_used, 0));
-- 11. 快速检查当前数据状态
SELECT
'=== 11. 快速数据状态检查 ===' as info;
SELECT
'总批次数' as item,
COUNT(*) as count
FROM jcbt_scholarship_batch;
SELECT
'启用批次数' as item,
COUNT(*) as count
FROM jcbt_scholarship_batch
WHERE status = 'ACTIVE';
SELECT
'总奖学金类型数' as item,
COUNT(*) as count
FROM jcbt_scholarship_type;
SELECT
'启用奖学金类型数' as item,
COUNT(*) as count
FROM jcbt_scholarship_type
WHERE status = 1;
SELECT
'总班级数' as item,
COUNT(*) as count
FROM xg_class_msg;
SELECT
'启用班级数' as item,
COUNT(*) as count
FROM xg_class_msg
WHERE class_status = '1';
SELECT
'总名额分配记录数' as item,
COUNT(*) as count
FROM jcbt_scholarship_class_quota;
SELECT
'总申请记录数' as item,
COUNT(*) as count
FROM jcbt_scholarship_application;
@@ -1,306 +0,0 @@
-- ===================================================================
-- 奖学金名额显示问题诊断脚本 (最终修正版)
-- 创建时间: 2025-01-27
-- 目的: 检查班级名额分配和奖学金类型的数据完整性
-- 表名修正: xg_class_msg, jcbt_scholarship_class_quota
-- ===================================================================
-- 1. 检查当前班主任和班级信息
SELECT
'=== 1. 班主任和班级信息检查 ===' as info;
SELECT
u.user_id,
u.user_name,
u.nick_name,
c.id as class_id,
c.class_name,
c.grade,
c.college_id,
c.major_id
FROM sys_user u
LEFT JOIN xg_class_msg c ON u.user_id = c.class_teacher_id
WHERE u.user_type = '03' -- 班主任
AND c.id IS NOT NULL
ORDER BY c.id;
-- 2. 检查奖学金批次信息
SELECT
'=== 2. 奖学金批次信息检查 ===' as info;
SELECT
id as batch_id,
batch_name,
status as batch_status,
start_time,
end_time,
create_time
FROM jcbt_scholarship_batch
WHERE status = 'ACTIVE' -- 启用状态
ORDER BY create_time DESC;
-- 3. 检查奖学金类型信息
SELECT
'=== 3. 奖学金类型信息检查 ===' as info;
SELECT
st.id as type_id,
st.type_name,
st.level_type,
st.status as type_status,
bt.batch_id,
b.batch_name
FROM jcbt_scholarship_type st
LEFT JOIN jcbt_scholarship_batch_type bt ON st.id = bt.scholarship_type_id
LEFT JOIN jcbt_scholarship_batch b ON bt.batch_id = b.id
WHERE st.status = 1 -- 启用状态
ORDER BY st.level_type, st.type_name;
-- 4. 检查班级名额分配情况
SELECT
'=== 4. 班级名额分配情况检查 ===' as info;
SELECT
cq.id as quota_id,
cq.batch_id,
b.batch_name,
cq.scholarship_type_id,
st.type_name,
cq.class_id,
c.class_name,
cq.total_quota,
cq.used_quota,
cq.available_quota,
cq.allocation_method,
cq.status,
cq.create_time
FROM jcbt_scholarship_class_quota cq
LEFT JOIN jcbt_scholarship_batch b ON cq.batch_id = b.id
LEFT JOIN jcbt_scholarship_type st ON cq.scholarship_type_id = st.id
LEFT JOIN xg_class_msg c ON cq.class_id = c.id
ORDER BY cq.batch_id, cq.class_id, cq.scholarship_type_id;
-- 5. 检查已使用名额情况
SELECT
'=== 5. 已使用名额情况检查 ===' as info;
SELECT
sa.batch_id,
b.batch_name,
sa.scholarship_type_id,
st.type_name,
sa.applicant_class_id,
c.class_name,
COUNT(*) as actual_used_quota,
GROUP_CONCAT(sa.application_status) as status_list
FROM jcbt_scholarship_application sa
LEFT JOIN jcbt_scholarship_batch b ON sa.batch_id = b.batch_id
LEFT JOIN jcbt_scholarship_type st ON sa.scholarship_type_id = st.type_id
LEFT JOIN xg_class_msg c ON sa.applicant_class_id = c.id
WHERE sa.application_status IN ('submitted', 'approved') -- 有效申请
GROUP BY sa.batch_id, sa.scholarship_type_id, sa.applicant_class_id
ORDER BY sa.batch_id, sa.applicant_class_id, sa.scholarship_type_id;
-- 6. 检查名额使用情况汇总与一致性
SELECT
'=== 6. 名额使用情况汇总与一致性检查 ===' as info;
SELECT
cq.batch_id,
b.batch_name,
cq.class_id,
c.class_name,
cq.scholarship_type_id,
st.type_name,
cq.total_quota,
cq.used_quota as recorded_used_quota,
COALESCE(actual_used.used_count, 0) as actual_used_quota,
cq.available_quota as recorded_available_quota,
(cq.total_quota - COALESCE(actual_used.used_count, 0)) as calculated_available_quota,
CASE
WHEN cq.used_quota != COALESCE(actual_used.used_count, 0) THEN 'INCONSISTENT'
WHEN cq.available_quota != (cq.total_quota - COALESCE(actual_used.used_count, 0)) THEN 'INCONSISTENT'
ELSE 'CONSISTENT'
END as consistency_status,
CASE
WHEN cq.total_quota = 0 THEN 'unlimited'
WHEN (cq.total_quota - COALESCE(actual_used.used_count, 0)) > 0 THEN 'available'
ELSE 'full'
END as quota_status
FROM jcbt_scholarship_class_quota cq
LEFT JOIN jcbt_scholarship_batch b ON cq.batch_id = b.batch_id
LEFT JOIN jcbt_scholarship_type st ON cq.scholarship_type_id = st.type_id
LEFT JOIN xg_class_msg c ON cq.class_id = c.id
LEFT JOIN (
SELECT
batch_id,
scholarship_type_id,
applicant_class_id,
COUNT(*) as used_count
FROM jcbt_scholarship_application
WHERE application_status IN ('submitted', 'approved')
GROUP BY batch_id, scholarship_type_id, applicant_class_id
) actual_used ON cq.batch_id = actual_used.batch_id
AND cq.scholarship_type_id = actual_used.scholarship_type_id
AND cq.class_id = actual_used.applicant_class_id
ORDER BY cq.batch_id, cq.class_id, cq.scholarship_type_id;
-- 7. 检查特定班级的详细情况(以班级ID=1为例)
SELECT
'=== 7. 特定班级详细情况检查 (class_id=1) ===' as info;
SELECT
'班级基本信息:' as section,
c.id as class_id,
c.class_name,
c.grade,
c.class_teacher_id,
u.user_name as class_teacher_name,
u.nick_name as class_teacher_nick
FROM xg_class_msg c
LEFT JOIN sys_user u ON c.class_teacher_id = u.user_id
WHERE c.id = 1;
SELECT
'该班级的名额分配:' as section,
cq.scholarship_type_id,
st.type_name,
cq.total_quota,
cq.used_quota,
cq.available_quota,
cq.allocation_method,
cq.status
FROM jcbt_scholarship_class_quota cq
LEFT JOIN jcbt_scholarship_type st ON cq.scholarship_type_id = st.type_id
WHERE cq.class_id = 1
ORDER BY cq.scholarship_type_id;
-- 8. 检查数据完整性问题
SELECT
'=== 8. 数据完整性问题检查 ===' as info;
-- 检查缺少名额分配的奖学金类型
SELECT
'缺少名额分配的奖学金类型:' as issue_type,
st.type_id,
st.type_name,
bt.batch_id,
b.batch_name,
COUNT(DISTINCT c.id) as total_classes_without_quota
FROM jcbt_scholarship_type st
INNER JOIN jcbt_scholarship_batch_type bt ON st.type_id = bt.type_id
INNER JOIN jcbt_scholarship_batch b ON bt.batch_id = b.batch_id
CROSS JOIN xg_class_msg c
LEFT JOIN jcbt_scholarship_class_quota cq ON st.type_id = cq.scholarship_type_id
AND bt.batch_id = cq.batch_id
AND c.id = cq.class_id
WHERE st.type_status = '1'
AND b.batch_status = '1'
AND c.class_status = '1'
AND cq.id IS NULL
GROUP BY st.type_id, st.type_name, bt.batch_id, b.batch_name;
-- 检查有名额分配但奖学金类型不存在的情况
SELECT
'名额分配指向不存在的奖学金类型:' as issue_type,
cq.id as quota_id,
cq.scholarship_type_id,
cq.batch_id,
cq.class_id
FROM jcbt_scholarship_class_quota cq
LEFT JOIN jcbt_scholarship_type st ON cq.scholarship_type_id = st.type_id
WHERE st.type_id IS NULL;
-- 检查名额分配指向不存在的班级
SELECT
'名额分配指向不存在的班级:' as issue_type,
cq.id as quota_id,
cq.class_id,
cq.class_name as recorded_class_name
FROM jcbt_scholarship_class_quota cq
LEFT JOIN xg_class_msg c ON cq.class_id = c.id
WHERE c.id IS NULL;
-- 9. 模拟API查询结果
SELECT
'=== 9. 模拟API查询结果 (batch_id=1, class_id=1) ===' as info;
SELECT
st.type_id,
st.type_name,
st.type_level,
st.type_description,
CASE
WHEN cq.total_quota IS NULL THEN 0
ELSE cq.total_quota
END as total_quota,
CASE
WHEN cq.used_quota IS NULL THEN 0
ELSE cq.used_quota
END as used_quota,
CASE
WHEN cq.available_quota IS NULL THEN 0
WHEN cq.total_quota = 0 THEN 999999
ELSE cq.available_quota
END as available_quota,
CASE
WHEN cq.total_quota IS NULL THEN FALSE
WHEN cq.total_quota = 0 THEN FALSE
ELSE TRUE
END as has_quota,
CASE
WHEN cq.total_quota IS NULL THEN 'no_allocation'
WHEN cq.total_quota = 0 THEN 'unlimited'
WHEN cq.available_quota > 0 THEN 'available'
ELSE 'full'
END as quota_status,
cq.allocation_method,
cq.status as allocation_status
FROM jcbt_scholarship_type st
INNER JOIN jcbt_scholarship_batch_type bt ON st.type_id = bt.type_id
LEFT JOIN jcbt_scholarship_class_quota cq ON st.type_id = cq.scholarship_type_id
AND bt.batch_id = cq.batch_id
AND cq.class_id = 1
WHERE bt.batch_id = 1
AND st.type_status = '1'
ORDER BY
CASE quota_status
WHEN 'available' THEN 1
WHEN 'unlimited' THEN 2
WHEN 'full' THEN 3
WHEN 'no_allocation' THEN 4
END,
st.type_level,
st.type_name;
-- 10. 额外检查:验证数据同步问题
SELECT
'=== 10. 数据同步问题检查 ===' as info;
-- 检查used_quota和available_quota字段是否需要更新
SELECT
'need_quota_update' as check_type,
cq.id,
cq.batch_id,
cq.class_id,
cq.scholarship_type_id,
cq.total_quota,
cq.used_quota as recorded_used,
COALESCE(actual.actual_used, 0) as actual_used,
cq.available_quota as recorded_available,
(cq.total_quota - COALESCE(actual.actual_used, 0)) as calculated_available
FROM jcbt_scholarship_class_quota cq
LEFT JOIN (
SELECT
batch_id,
scholarship_type_id,
applicant_class_id,
COUNT(*) as actual_used
FROM jcbt_scholarship_application
WHERE application_status IN ('submitted', 'approved')
GROUP BY batch_id, scholarship_type_id, applicant_class_id
) actual ON cq.batch_id = actual.batch_id
AND cq.scholarship_type_id = actual.scholarship_type_id
AND cq.class_id = actual.applicant_class_id
WHERE cq.used_quota != COALESCE(actual.actual_used, 0)
OR cq.available_quota != (cq.total_quota - COALESCE(actual.actual_used, 0));
-45
View File
@@ -1,45 +0,0 @@
-- 修复 jcbt_poverty_application 表中审核字段名称不一致问题
-- 问题: 数据库字段为 auditor_time/auditor_opinion,但实体类期望 audit_time/audit_opinion
-- 解决方案: 重命名数据库字段,保持与实体类一致
USE hzdyjs_xg;
-- 检查当前字段状态
SELECT '=== 修复前字段检查 ===' as message;
SELECT
COLUMN_NAME as '字段名',
DATA_TYPE as '数据类型',
IS_NULLABLE as '允许NULL',
COLUMN_DEFAULT as '默认值',
COLUMN_COMMENT as '注释'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME IN ('auditor_time', 'auditor_opinion', 'audit_time', 'audit_opinion');
-- 方案1: 重命名字段(推荐)
SELECT '=== 开始重命名字段 ===' as message;
-- 重命名 auditor_time 为 audit_time
ALTER TABLE jcbt_poverty_application
CHANGE COLUMN auditor_time audit_time datetime DEFAULT NULL COMMENT '审核时间';
-- 重命名 auditor_opinion 为 audit_opinion
ALTER TABLE jcbt_poverty_application
CHANGE COLUMN auditor_opinion audit_opinion text COMMENT '审核意见';
-- 验证修复结果
SELECT '=== 修复后字段检查 ===' as message;
SELECT
COLUMN_NAME as '字段名',
DATA_TYPE as '数据类型',
IS_NULLABLE as '允许NULL',
COLUMN_DEFAULT as '默认值',
COLUMN_COMMENT as '注释'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME IN ('auditor_time', 'auditor_opinion', 'audit_time', 'audit_opinion')
ORDER BY COLUMN_NAME;
SELECT '✅ 字段重命名完成!现在数据库字段与实体类保持一致!' as result;
@@ -1,36 +0,0 @@
-- =====================================================
-- 奖学金兼得关系表 - create_dept字段修复脚本
-- 版本: v1.0
-- 创建时间: 2025-01-27
-- 问题描述: 实体类继承BaseEntity包含create_dept字段,但数据库表缺少该字段
-- 解决方案: 为jcbt_scholarship_compatibility表添加create_dept字段
-- =====================================================
USE `ruoyi-vue-pro`;
-- 为奖学金兼得关系表添加create_dept字段
ALTER TABLE `jcbt_scholarship_compatibility`
ADD COLUMN IF NOT EXISTS `create_dept` BIGINT(20) COMMENT '创建部门'
AFTER `description`;
-- 验证字段添加结果
SELECT
COLUMN_NAME,
DATA_TYPE,
IS_NULLABLE,
COLUMN_DEFAULT,
COLUMN_COMMENT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'ruoyi-vue-pro'
AND TABLE_NAME = 'jcbt_scholarship_compatibility'
AND COLUMN_NAME = 'create_dept';
-- 显示表结构确认修复结果
DESCRIBE `jcbt_scholarship_compatibility`;
-- =====================================================
-- 修复说明:
-- 1. 该字段是BaseEntity的标准字段,用于记录创建部门
-- 2. 字段类型为BIGINT(20),允许NULL,与其他表保持一致
-- 3. 字段位置放在description字段之后,符合标准字段顺序
-- =====================================================
@@ -1,56 +0,0 @@
-- =====================================================
-- 奖学金管理模块 - 兼得类型字段修复脚本
-- 版本: v1.0
-- 创建时间: 2025-08-04
-- 说明: 为jcbt_scholarship_type表添加缺失的compatibility_type字段
-- =====================================================
-- 设置字符集
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- =====================================================
-- 1. 为奖学金类型表添加兼得类型字段
-- =====================================================
-- 检查字段是否存在,如果不存在则添加
ALTER TABLE `jcbt_scholarship_type`
ADD COLUMN IF NOT EXISTS `compatibility_type` VARCHAR(20) DEFAULT 'COMPATIBLE' COMMENT '兼得类型:EXCLUSIVE-完全互斥,COMPATIBLE-完全兼容,PRIORITY-优先级关系,CUSTOM-自定义配置'
AFTER `application_guide`;
-- =====================================================
-- 2. 添加兼得类型字段索引
-- =====================================================
-- 为新字段添加索引以提高查询性能
ALTER TABLE `jcbt_scholarship_type`
ADD INDEX IF NOT EXISTS `idx_compatibility_type` (`compatibility_type`) COMMENT '兼得类型索引';
-- =====================================================
-- 3. 更新现有数据(可选)
-- =====================================================
-- 将现有数据的兼得类型设置为默认值(兼容)
-- 如果需要不同的默认值,可以修改这里的UPDATE语句
UPDATE `jcbt_scholarship_type`
SET `compatibility_type` = 'COMPATIBLE'
WHERE `compatibility_type` IS NULL AND `deleted` = 0;
-- =====================================================
-- 4. 验证字段添加结果
-- =====================================================
-- 查询表结构确认字段已添加
-- DESCRIBE `jcbt_scholarship_type`;
-- 查询数据确认字段值正确
-- SELECT id, type_name, compatibility_type FROM `jcbt_scholarship_type` WHERE deleted = 0 LIMIT 5;
-- =====================================================
-- 脚本执行完成
-- =====================================================
SET FOREIGN_KEY_CHECKS = 1;
-- 执行完成提示
SELECT '兼得类型字段修复完成!' AS status;
@@ -1,33 +0,0 @@
-- 修复奖学金申请表缺失的create_dept字段
-- 问题: MyBatis-Plus插入数据时报错 Unknown column 'create_dept' in 'field list'
-- 原因: 数据库表缺少BaseEntity中的create_dept字段
-- 解决方案: 为jcbt_scholarship_application表添加create_dept字段
-- 检查字段是否存在,不存在则添加
SET @sql = '';
SELECT COUNT(*) INTO @col_exists
FROM information_schema.columns
WHERE table_schema = 'hzdyjs_xg'
AND table_name = 'jcbt_scholarship_application'
AND column_name = 'create_dept';
-- 如果字段不存在,则添加
SET @sql = IF(@col_exists = 0,
'ALTER TABLE jcbt_scholarship_application ADD COLUMN create_dept bigint(20) DEFAULT NULL COMMENT ''创建部门'' AFTER submit_time;',
'SELECT ''字段 create_dept 已存在,跳过添加'' AS message;');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- 验证字段是否添加成功
SELECT
COLUMN_NAME as '字段名',
DATA_TYPE as '数据类型',
IS_NULLABLE as '允许空值',
COLUMN_DEFAULT as '默认值',
COLUMN_COMMENT as '注释'
FROM information_schema.columns
WHERE table_schema = 'hzdyjs_xg'
AND table_name = 'jcbt_scholarship_application'
AND column_name = 'create_dept';
@@ -1,27 +0,0 @@
-- 修复助学金申请表状态问题
-- 将状态为SUBMITTED的记录改为WAITING,以便正常进行审核
-- 查看当前状态分布(执行前检查)
SELECT status, COUNT(*) as count
FROM jcbt_poverty_application
GROUP BY status;
-- 修复SUBMITTED状态为WAITING
UPDATE jcbt_poverty_application
SET status = 'WAITING',
update_time = NOW(),
update_by = 103,
remark = CONCAT(IFNULL(remark, ''), ' [系统修复:状态从SUBMITTED更新为WAITING以支持审核]')
WHERE status = 'SUBMITTED';
-- 查看修复后的状态分布
SELECT status, COUNT(*) as count
FROM jcbt_poverty_application
GROUP BY status;
-- 显示被修复的记录详情
SELECT id, application_no, student_name, status, submit_time, update_time
FROM jcbt_poverty_application
WHERE status = 'WAITING'
AND remark LIKE '%系统修复:状态从SUBMITTED更新为WAITING%'
ORDER BY update_time DESC;
-101
View File
@@ -1,101 +0,0 @@
-- ========================================
-- 修复奖学金名额分配唯一约束问题
-- 创建时间: 2025-01-28
-- 问题描述: 唯一约束包含deleted字段导致逻辑删除时出现约束冲突
-- ========================================
USE hzdyjs_xg;
-- 1. 查看当前的唯一约束问题数据
SELECT
batch_id,
scholarship_type_id,
target_dept_id,
deleted,
COUNT(*) as count_records,
GROUP_CONCAT(id) as record_ids,
GROUP_CONCAT(status) as statuses
FROM jcbt_scholarship_quota
GROUP BY batch_id, scholarship_type_id, target_dept_id, deleted
HAVING COUNT(*) > 1
ORDER BY batch_id, scholarship_type_id, target_dept_id;
-- 2. 查看可能存在冲突的记录(同一组合下有删除和未删除的记录)
SELECT
q1.id as active_id,
q1.batch_id,
q1.scholarship_type_id,
q1.target_dept_id,
q1.deleted as active_deleted,
q1.status as active_status,
q2.id as deleted_id,
q2.deleted as deleted_deleted,
q2.status as deleted_status
FROM jcbt_scholarship_quota q1
INNER JOIN jcbt_scholarship_quota q2 ON
q1.batch_id = q2.batch_id
AND q1.scholarship_type_id = q2.scholarship_type_id
AND q1.target_dept_id = q2.target_dept_id
AND q1.deleted = 0
AND q2.deleted = 1
ORDER BY q1.batch_id, q1.scholarship_type_id, q1.target_dept_id;
-- 3. 删除旧的唯一约束(包含deleted字段的约束)
ALTER TABLE jcbt_scholarship_quota DROP INDEX uk_batch_type_dept;
-- 4. 先清理可能的重复数据,然后重新添加不包含deleted字段的唯一约束
-- 这样可以避免删除时的约束冲突,同时保证业务数据的唯一性
-- 清理重复的已删除记录(保留最新的一条)
DELETE q1 FROM jcbt_scholarship_quota q1
INNER JOIN jcbt_scholarship_quota q2
WHERE q1.batch_id = q2.batch_id
AND q1.scholarship_type_id = q2.scholarship_type_id
AND q1.target_dept_id = q2.target_dept_id
AND q1.deleted = 1
AND q2.deleted = 1
AND q1.id < q2.id;
-- 如果仍然存在同一业务组合的active和deleted记录,物理删除deleted记录
DELETE FROM jcbt_scholarship_quota
WHERE deleted = 1
AND EXISTS (
SELECT 1 FROM jcbt_scholarship_quota q2
WHERE q2.batch_id = jcbt_scholarship_quota.batch_id
AND q2.scholarship_type_id = jcbt_scholarship_quota.scholarship_type_id
AND q2.target_dept_id = jcbt_scholarship_quota.target_dept_id
AND q2.deleted = 0
);
-- 重新添加不包含deleted字段的唯一约束
ALTER TABLE jcbt_scholarship_quota
ADD CONSTRAINT uk_batch_type_dept_business
UNIQUE (batch_id, scholarship_type_id, target_dept_id);
-- 5. 验证修复结果
SELECT
'修复后检查' as check_type,
batch_id,
scholarship_type_id,
target_dept_id,
COUNT(*) as count_records,
GROUP_CONCAT(CONCAT('id:', id, ',deleted:', deleted)) as record_details
FROM jcbt_scholarship_quota
WHERE deleted = 0
GROUP BY batch_id, scholarship_type_id, target_dept_id
HAVING COUNT(*) > 1
UNION ALL
SELECT
'已删除记录检查' as check_type,
batch_id,
scholarship_type_id,
target_dept_id,
COUNT(*) as count_records,
GROUP_CONCAT(CONCAT('id:', id, ',deleted:', deleted)) as record_details
FROM jcbt_scholarship_quota
WHERE deleted = 1
GROUP BY batch_id, scholarship_type_id, target_dept_id
HAVING COUNT(*) > 1;
-- 6. 显示当前表的约束信息
SHOW INDEX FROM jcbt_scholarship_quota WHERE Key_name LIKE '%batch%' OR Key_name LIKE '%type%' OR Key_name LIKE '%dept%';
@@ -1,20 +0,0 @@
-- 修复勤工俭学岗位表缺少 create_dept 字段的问题
-- 创建日期: 2025-01-03
-- 说明: 添加 create_dept 字段以保持与 BaseEntity 的一致性
-- 添加 create_dept 字段
ALTER TABLE `jcbt_work_study_position`
ADD COLUMN `create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门'
AFTER `tenant_id`;
-- 更新现有数据的 create_dept 字段(设置为默认值 NULL)
UPDATE `jcbt_work_study_position`
SET `create_dept` = NULL
WHERE `create_dept` IS NULL;
-- 验证字段是否添加成功
SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT, COLUMN_COMMENT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'jcbt_work_study_position'
AND COLUMN_NAME = 'create_dept';
-71
View File
@@ -1,71 +0,0 @@
-- =====================================================
-- 奖学金名额分配 - 简单测试数据插入脚本
-- 创建时间: 2025-01-27
-- 说明: 插入基础测试数据
-- =====================================================
-- 设置数据库
USE hzdyjs_xg;
-- =====================================================
-- 1. 插入奖学金批次数据
-- =====================================================
INSERT IGNORE INTO jcbt_scholarship_batch (
id, batch_code, batch_name, academic_year, semester, batch_type,
start_time, end_time, apply_start_time, apply_end_time,
review_start_time, review_end_time, status, description,
create_by, create_time, update_by, update_time, tenant_id, deleted
) VALUES
(1890000000000000001, 'BATCH_2024_1', '2024学年第一学期奖学金评定', '2024-2025', 1, 'REGULAR',
'2024-09-01 00:00:00', '2024-12-31 23:59:59', '2024-10-01 00:00:00', '2024-10-31 23:59:59',
'2024-11-01 00:00:00', '2024-11-30 23:59:59', 'ACTIVE', '2024学年第一学期常规奖学金评定批次',
1, NOW(), 1, NOW(), 1, 0);
-- =====================================================
-- 2. 插入奖学金类型数据
-- =====================================================
INSERT IGNORE INTO jcbt_scholarship_type (
id, type_code, type_name, type_category, level_type, award_amount,
description, application_guide, application_conditions, evaluation_criteria,
compatibility_type, sort_order, status, is_system,
create_by, create_time, update_by, update_time, tenant_id, deleted
) VALUES
(1890000000000000101, 'GJZXJ', '国家奖学金', 'NATIONAL', 'FIRST_CLASS', 8000.00,
'国家奖学金是为了激励普通本科高校、高等职业学校和高等专科学校学生勤奋学习、努力进取。',
'学生本人提出申请,按学校规定程序推荐上报。', '品学兼优,学习成绩排名在评选范围内位于前10%',
'学习成绩、综合测评、道德品质等综合评定', 'EXCLUSIVE', 1, 1, 1,
1, NOW(), 1, NOW(), 1, 0);
-- =====================================================
-- 3. 插入名额分配数据
-- =====================================================
INSERT IGNORE INTO jcbt_scholarship_quota (
id, batch_id, scholarship_type_id, allocation_level, target_dept_id, parent_quota_id,
total_quota, used_quota, reserved_quota, available_quota,
allocation_rule, allocation_basis, allocation_method, is_adjustable, is_locked, status,
remark, create_by, create_time, update_by, update_time, tenant_id, deleted
) VALUES
(1890000000000000201, 1890000000000000001, 1890000000000000101, 'UNIVERSITY', NULL, NULL,
50, 0, 5, 45, '{"type":"university","rule":"total_allocation"}', '根据学校总体规模和历年获奖情况分配',
'MANUAL', 1, 0, 'ACTIVE', '全校国家奖学金总名额', 1, NOW(), 1, NOW(), 1, 0);
-- =====================================================
-- 4. 验证数据
-- =====================================================
SELECT '插入结果验证' as message;
SELECT COUNT(*) as batch_count FROM jcbt_scholarship_batch WHERE deleted = 0;
SELECT COUNT(*) as type_count FROM jcbt_scholarship_type WHERE deleted = 0;
SELECT COUNT(*) as quota_count FROM jcbt_scholarship_quota WHERE deleted = 0;
-- 验证关联查询
SELECT
q.id,
b.batch_name,
st.type_name as scholarship_type_name,
q.allocation_level,
q.total_quota,
q.status
FROM jcbt_scholarship_quota q
LEFT JOIN jcbt_scholarship_batch b ON q.batch_id = b.id
LEFT JOIN jcbt_scholarship_type st ON q.scholarship_type_id = st.id
WHERE q.deleted = 0;
@@ -1,119 +0,0 @@
-- ========================================
-- 贫困生认定申请管理模块 - 菜单权限配置
-- 创建时间: 2025-01-26
-- 说明: 配置贫困生认定申请管理功能的菜单和权限
-- ========================================
USE hzdyjs_xg;
-- 设置变量
SET @parent_menu_id = 2015; -- 奖惩补贴管理父菜单ID
SET @menu_order = 4; -- 菜单排序(在奖学金申请管理之后)
-- =====================================================
-- 1. 删除已存在的菜单(开发环境重新创建)
-- =====================================================
DELETE FROM sys_menu WHERE menu_name = '助学金申请管理' AND parent_id = @parent_menu_id;
-- =====================================================
-- 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, update_by, update_time, remark)
VALUES ('助学金申请管理', @parent_menu_id, @menu_order, 'povertyApplication', 'jcbt/poverty/Application/index', '', 1, 0, 'C', '0', '0', 'jcbt:povertyApplication:list', 'money', 1, NOW(), 1, NOW(), '贫困生认定申请管理菜单');
-- 获取刚插入的菜单ID
SET @poverty_menu_id = LAST_INSERT_ID();
-- =====================================================
-- 3. 创建基础管理功能按钮权限(6个)
-- =====================================================
-- 3.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, update_by, update_time, remark)
VALUES ('申请查询', @poverty_menu_id, 1, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:povertyApplication:query', '#', 1, NOW(), 1, NOW(), '');
-- 3.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, update_by, update_time, remark)
VALUES ('申请新增', @poverty_menu_id, 2, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:povertyApplication:add', '#', 1, NOW(), 1, NOW(), '');
-- 3.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, update_by, update_time, remark)
VALUES ('申请修改', @poverty_menu_id, 3, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:povertyApplication:edit', '#', 1, NOW(), 1, NOW(), '');
-- 3.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, update_by, update_time, remark)
VALUES ('申请删除', @poverty_menu_id, 4, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:povertyApplication:remove', '#', 1, NOW(), 1, NOW(), '');
-- 3.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, update_by, update_time, remark)
VALUES ('申请详情', @poverty_menu_id, 5, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:povertyApplication:detail', '#', 1, NOW(), 1, NOW(), '');
-- 3.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, update_by, update_time, remark)
VALUES ('申请导出', @poverty_menu_id, 6, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:povertyApplication:export', '#', 1, NOW(), 1, NOW(), '');
-- =====================================================
-- 4. 创建业务功能权限(4个)
-- =====================================================
-- 4.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, update_by, update_time, remark)
VALUES ('我的申请', @poverty_menu_id, 7, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:povertyApplication:myList', '#', 1, NOW(), 1, NOW(), '');
-- 4.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, update_by, update_time, remark)
VALUES ('待审核申请', @poverty_menu_id, 8, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:povertyApplication:pendingList', '#', 1, NOW(), 1, NOW(), '');
-- 4.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, update_by, update_time, remark)
VALUES ('资格检查', @poverty_menu_id, 9, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:povertyApplication:check', '#', 1, NOW(), 1, NOW(), '');
-- 4.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, update_by, update_time, remark)
VALUES ('申请审核', @poverty_menu_id, 10, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:povertyApplication:approve', '#', 1, NOW(), 1, NOW(), '');
-- =====================================================
-- 5. 创建辅助功能权限(6个)
-- =====================================================
-- 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, update_by, update_time, remark)
VALUES ('提交申请', @poverty_menu_id, 11, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:povertyApplication:submit', '#', 1, NOW(), 1, NOW(), '');
-- 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, update_by, update_time, remark)
VALUES ('撤回申请', @poverty_menu_id, 12, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:povertyApplication:cancel', '#', 1, NOW(), 1, NOW(), '');
-- 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, update_by, update_time, remark)
VALUES ('驳回申请', @poverty_menu_id, 13, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:povertyApplication:reject', '#', 1, NOW(), 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, update_by, update_time, remark)
VALUES ('保存草稿', @poverty_menu_id, 14, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:povertyApplication:draft', '#', 1, NOW(), 1, NOW(), '');
-- 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, update_by, update_time, remark)
VALUES ('重复检查', @poverty_menu_id, 15, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:povertyApplication:duplicate', '#', 1, NOW(), 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, update_by, update_time, remark)
VALUES ('申请统计', @poverty_menu_id, 16, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:povertyApplication:statistics', '#', 1, NOW(), 1, NOW(), '');
-- =====================================================
-- 6. 分配权限给超级管理员角色
-- =====================================================
-- 获取超级管理员角色ID (通常是1)
SET @admin_role_id = 1;
-- 分配所有权限给超级管理员
INSERT INTO sys_role_menu (role_id, menu_id)
SELECT @admin_role_id, menu_id FROM sys_menu WHERE parent_id = @poverty_menu_id OR menu_id = @poverty_menu_id;
-- =====================================================
-- 7. 输出确认信息
-- =====================================================
SELECT '贫困生认定申请管理菜单权限配置完成!' as message;
SELECT CONCAT('主菜单ID: ', @poverty_menu_id) as menu_info;
SELECT COUNT(*) as total_permissions FROM sys_menu WHERE parent_id = @poverty_menu_id OR menu_id = @poverty_menu_id;
@@ -1,311 +0,0 @@
-- ============================================================================
-- 贫困生认定申请管理 - 数据库表创建脚本
-- 创建时间: 2024-12-19
-- 描述: 创建贫困生认定申请相关的数据库表、菜单权限和测试数据
-- ============================================================================
-- ============================================================================
-- 1. 创建贫困生认定申请表
-- ============================================================================
CREATE TABLE IF NOT EXISTS `jcbt_poverty_application` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`application_no` varchar(50) DEFAULT NULL COMMENT '申请编号',
`academic_year` varchar(20) DEFAULT NULL COMMENT '学年',
`term` int(11) DEFAULT NULL COMMENT '学期',
`student_id` bigint(20) DEFAULT NULL COMMENT '学生ID',
`student_no` varchar(50) DEFAULT NULL COMMENT '学号',
`student_name` varchar(100) DEFAULT NULL COMMENT '学生姓名',
`gender` varchar(10) DEFAULT NULL COMMENT '性别',
`college_id` bigint(20) DEFAULT NULL COMMENT '学院ID',
`college_name` varchar(100) DEFAULT NULL COMMENT '学院名称',
`major_id` bigint(20) DEFAULT NULL COMMENT '专业ID',
`major_name` varchar(100) DEFAULT NULL COMMENT '专业名称',
`class_id` bigint(20) DEFAULT NULL COMMENT '班级ID',
`class_name` varchar(100) DEFAULT NULL COMMENT '班级名称',
`recognition_group` varchar(50) DEFAULT NULL COMMENT '认定群体(特殊群体/其他群体)',
`recognition_type_id` bigint(20) DEFAULT NULL COMMENT '认定类型ID',
`recognition_type_code` varchar(50) DEFAULT NULL COMMENT '认定类型编码',
`recognition_type_name` varchar(100) DEFAULT NULL COMMENT '认定类型名称',
`assistance_type_ids` varchar(500) DEFAULT NULL COMMENT '申请自助类型ID数组(多选)',
`assistance_type_names` varchar(500) DEFAULT NULL COMMENT '申请自助类型名称(多个用逗号分隔)',
`family_economy_summary` text COMMENT '家庭经济情况摘要',
`attach_application_form_url` varchar(500) DEFAULT NULL COMMENT '申请表附件URL',
`attach_application_form_id` bigint(20) DEFAULT NULL COMMENT '申请表附件ID',
`attach_survey_form_url` varchar(500) DEFAULT NULL COMMENT '调查表附件URL',
`attach_survey_form_id` bigint(20) DEFAULT NULL COMMENT '调查表附件ID',
`status` varchar(20) DEFAULT 'DRAFT' COMMENT '申请状态(DRAFT-草稿,SUBMITTED-已提交,REVIEWING-审核中,APPROVED-已通过,REJECTED-已拒绝,WITHDRAWN-已撤回)',
`submitter_id` bigint(20) DEFAULT NULL COMMENT '提交人ID',
`submitter_name` varchar(100) DEFAULT NULL COMMENT '提交人姓名',
`submit_time` datetime DEFAULT NULL COMMENT '提交时间',
`auditor_id` bigint(20) DEFAULT NULL COMMENT '审核人ID',
`auditor_name` varchar(100) DEFAULT NULL COMMENT '审核人姓名',
`audit_time` datetime DEFAULT NULL COMMENT '审核时间',
`audit_opinion` text COMMENT '审核意见',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
`deleted` bigint(20) DEFAULT '0' COMMENT '逻辑删除标记(0-正常,非0-已删除)',
`tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_student_no` (`student_no`),
KEY `idx_status` (`status`),
KEY `idx_academic_year` (`academic_year`),
KEY `idx_college_id` (`college_id`),
KEY `idx_tenant_deleted` (`tenant_id`, `deleted`),
KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='贫困生认定申请表';
-- ============================================================================
-- 2. 插入菜单权限配置
-- ============================================================================
-- 2.1 插入主菜单(贫困生认定申请管理)
INSERT INTO sys_menu VALUES(
'1954043650013946881',
'贫困生认定申请管理',
'1851080776692494337',
'4',
'jcbt:poverty:application:list',
'poverty/Application/index',
'',
'',
'1',
'0',
'C',
'0',
'0',
'jcbt:poverty:application:list',
'education',
'103',
'1',
NOW(),
NULL,
NULL,
''
);
-- 2.2 插入按钮权限
-- 查询按钮
INSERT INTO sys_menu VALUES(
'1954043651013946881',
'贫困生认定申请查询',
'1954043650013946881',
'1',
'jcbt:poverty:application:query',
'',
'',
'',
'1',
'0',
'F',
'0',
'0',
'jcbt:poverty:application:query',
'#',
'103',
'1',
NOW(),
NULL,
NULL,
''
);
-- 新增按钮
INSERT INTO sys_menu VALUES(
'1954043652013946881',
'贫困生认定申请新增',
'1954043650013946881',
'2',
'jcbt:poverty:application:add',
'',
'',
'',
'1',
'0',
'F',
'0',
'0',
'jcbt:poverty:application:add',
'#',
'103',
'1',
NOW(),
NULL,
NULL,
''
);
-- 修改按钮
INSERT INTO sys_menu VALUES(
'1954043653013946881',
'贫困生认定申请修改',
'1954043650013946881',
'3',
'jcbt:poverty:application:edit',
'',
'',
'',
'1',
'0',
'F',
'0',
'0',
'jcbt:poverty:application:edit',
'#',
'103',
'1',
NOW(),
NULL,
NULL,
''
);
-- 删除按钮
INSERT INTO sys_menu VALUES(
'1954043654013946881',
'贫困生认定申请删除',
'1954043650013946881',
'4',
'jcbt:poverty:application:remove',
'',
'',
'',
'1',
'0',
'F',
'0',
'0',
'jcbt:poverty:application:remove',
'#',
'103',
'1',
NOW(),
NULL,
NULL,
''
);
-- 导出按钮
INSERT INTO sys_menu VALUES(
'1954043655013946881',
'贫困生认定申请导出',
'1954043650013946881',
'5',
'jcbt:poverty:application:export',
'',
'',
'',
'1',
'0',
'F',
'0',
'0',
'jcbt:poverty:application:export',
'#',
'103',
'1',
NOW(),
NULL,
NULL,
''
);
-- 审核按钮
INSERT INTO sys_menu VALUES(
'1954043656013946881',
'贫困生认定申请审核',
'1954043650013946881',
'6',
'jcbt:poverty:application:audit',
'',
'',
'',
'1',
'0',
'F',
'0',
'0',
'jcbt:poverty:application:audit',
'#',
'103',
'1',
NOW(),
NULL,
NULL,
''
);
-- ============================================================================
-- 3. 插入字典数据
-- ============================================================================
-- 3.1 申请状态字典
INSERT INTO sys_dict_type VALUES(
(SELECT IFNULL(MAX(dict_id), 0) + 1 FROM sys_dict_type t),
'贫困生申请状态',
'jcbt_poverty_application_status',
'0',
'103',
'1',
NOW(),
NULL,
NULL,
'贫困生认定申请状态选项'
);
-- 获取刚插入的字典类型ID
SET @dict_type_id = (SELECT dict_id FROM sys_dict_type WHERE dict_type = 'jcbt_poverty_application_status');
-- 插入状态字典数据
INSERT INTO sys_dict_data VALUES(@dict_type_id * 10 + 1, 1, '草稿', 'DRAFT', 'jcbt_poverty_application_status', '', 'info', 'N', '0', '103', '1', NOW(), NULL, NULL, '申请草稿状态');
INSERT INTO sys_dict_data VALUES(@dict_type_id * 10 + 2, 2, '已提交', 'SUBMITTED', 'jcbt_poverty_application_status', '', 'primary', 'N', '0', '103', '1', NOW(), NULL, NULL, '申请已提交状态');
INSERT INTO sys_dict_data VALUES(@dict_type_id * 10 + 3, 3, '审核中', 'REVIEWING', 'jcbt_poverty_application_status', '', 'warning', 'N', '0', '103', '1', NOW(), NULL, NULL, '申请审核中状态');
INSERT INTO sys_dict_data VALUES(@dict_type_id * 10 + 4, 4, '已通过', 'APPROVED', 'jcbt_poverty_application_status', '', 'success', 'N', '0', '103', '1', NOW(), NULL, NULL, '申请已通过状态');
INSERT INTO sys_dict_data VALUES(@dict_type_id * 10 + 5, 5, '已拒绝', 'REJECTED', 'jcbt_poverty_application_status', '', 'danger', 'N', '0', '103', '1', NOW(), NULL, NULL, '申请已拒绝状态');
INSERT INTO sys_dict_data VALUES(@dict_type_id * 10 + 6, 6, '已撤回', 'WITHDRAWN', 'jcbt_poverty_application_status', '', 'info', 'N', '0', '103', '1', NOW(), NULL, NULL, '申请已撤回状态');
-- ============================================================================
-- 4. 插入测试数据
-- ============================================================================
INSERT INTO `jcbt_poverty_application` VALUES
(1954048400013946881, 'PK2024001', '2024-2025', 1, 1001, '202401001', '张三', '男', 101, '计算机学院', 10101, '计算机科学与技术', 1010101, '计软2401班', '其他群体', 1, 'TYPE001', '一般困难', '1,2', '学费减免,生活补助', '家庭经济困难,父母务农收入微薄', '', NULL, '', NULL, 'SUBMITTED', 1001, '张三', '2024-12-01 10:00:00', NULL, NULL, NULL, NULL, '因家庭经济困难申请贫困生认定', 0, '000000', 103, '2024-12-01 09:30:00', 103, '2024-12-01 10:00:00'),
(1954048401013946881, 'PK2024002', '2024-2025', 1, 1002, '202401002', '李四', '女', 102, '外国语学院', 10201, '英语', 1020101, '英语2401班', '特殊群体', 2, 'TYPE002', '特别困难', '1,3', '学费减免,勤工助学', '单亲家庭,母亲重病', '', NULL, '', NULL, 'REVIEWING', 1002, '李四', '2024-12-02 14:00:00', 201, '王老师', NULL, NULL, '单亲家庭申请特别困难认定', 0, '000000', 103, '2024-12-02 13:30:00', 201, '2024-12-02 14:00:00'),
(1954048402013946881, 'PK2024003', '2024-2025', 1, 1003, '202401003', '王五', '男', 101, '计算机学院', 10102, '软件工程', 1010201, '软工2401班', '其他群体', 1, 'TYPE001', '一般困难', '2', '生活补助', '家庭收入较低', '', NULL, '', NULL, 'APPROVED', 1003, '王五', '2024-11-28 16:00:00', 201, '王老师', '2024-11-30 10:00:00', '符合认定条件,予以通过', '已通过认定审核', 0, '000000', 103, '2024-11-28 15:30:00', 201, '2024-11-30 10:00:00'),
(1954048403013946881, 'PK2024004', '2024-2025', 1, 1004, '202401004', '赵六', '女', 103, '经济管理学院', 10301, '会计学', 1030101, '会计2401班', '其他群体', 1, 'TYPE001', '一般困难', '1,2,3', '学费减免,生活补助,勤工助学', '家庭经济确实困难', '', NULL, '', NULL, 'DRAFT', NULL, NULL, NULL, NULL, NULL, NULL, NULL, '正在准备申请材料', 0, '000000', 103, '2024-12-05 11:00:00', 103, '2024-12-05 11:00:00'),
(1954048404013946881, 'PK2024005', '2024-2025', 1, 1005, '202401005', '钱七', '男', 104, '机械工程学院', 10401, '机械设计制造及其自动化', 1040101, '机械2401班', '特殊群体', 2, 'TYPE002', '特别困难', '1,2', '学费减免,生活补助', '建档立卡贫困户', '', NULL, '', NULL, 'REJECTED', 1005, '钱七', '2024-11-25 09:00:00', 202, '李老师', '2024-11-27 15:00:00', '材料不够完整,请补充相关证明', '需要补充材料后重新申请', 0, '000000', 103, '2024-11-25 08:30:00', 202, '2024-11-27 15:00:00');
-- ============================================================================
-- 5. 创建索引优化
-- ============================================================================
-- 优化查询性能的复合索引
CREATE INDEX idx_student_status_time ON jcbt_poverty_application(student_id, status, create_time);
CREATE INDEX idx_college_year_status ON jcbt_poverty_application(college_id, academic_year, status);
CREATE INDEX idx_auditor_time ON jcbt_poverty_application(auditor_id, audit_time);
-- ============================================================================
-- 6. 数据统计视图(可选)
-- ============================================================================
-- 创建状态统计视图
CREATE OR REPLACE VIEW v_poverty_application_statistics AS
SELECT
status,
COUNT(*) as count,
academic_year,
college_name
FROM jcbt_poverty_application
WHERE deleted = 0
GROUP BY status, academic_year, college_name;
-- ============================================================================
-- 脚本执行完成
-- ============================================================================
-- 执行完成后请检查:
-- 1. 表结构是否创建成功: SHOW CREATE TABLE jcbt_poverty_application;
-- 2. 菜单权限是否正确: SELECT * FROM sys_menu WHERE menu_name LIKE '%贫困生%';
-- 3. 测试数据是否插入: SELECT COUNT(*) FROM jcbt_poverty_application;
-- ============================================================================
@@ -1,141 +0,0 @@
-- ========================================
-- 奖学金申请管理模块 - 菜单权限配置
-- 创建时间: 2025-01-26
-- 说明: 配置奖学金申请管理功能的菜单和权限
-- ========================================
USE hzdyjs_xg;
-- 设置变量
SET @parent_menu_id = 2015; -- 奖惩补贴管理父菜单ID
SET @menu_order = 3; -- 菜单排序
-- =====================================================
-- 1. 删除已存在的菜单(开发环境重新创建)
-- =====================================================
DELETE FROM sys_menu WHERE menu_name = '申请管理' AND parent_id = @parent_menu_id;
-- =====================================================
-- 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, update_by, update_time, remark)
VALUES ('申请管理', @parent_menu_id, @menu_order, 'application', 'jcbt/scholarship/application/index', '', 1, 0, 'C', '0', '0', 'jcbt:scholarshipApplication:list', 'form', 1, NOW(), 1, NOW(), '奖学金申请管理菜单');
-- 获取刚插入的菜单ID
SET @application_menu_id = LAST_INSERT_ID();
-- =====================================================
-- 3. 创建申请管理功能按钮权限
-- =====================================================
-- 3.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, update_by, update_time, remark)
VALUES ('申请查询', @application_menu_id, 1, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:query', '#', 1, NOW(), 1, NOW(), '');
-- 3.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, update_by, update_time, remark)
VALUES ('申请新增', @application_menu_id, 2, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:add', '#', 1, NOW(), 1, NOW(), '');
-- 3.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, update_by, update_time, remark)
VALUES ('申请修改', @application_menu_id, 3, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:edit', '#', 1, NOW(), 1, NOW(), '');
-- 3.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, update_by, update_time, remark)
VALUES ('申请删除', @application_menu_id, 4, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:remove', '#', 1, NOW(), 1, NOW(), '');
-- 3.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, update_by, update_time, remark)
VALUES ('申请导出', @application_menu_id, 5, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:export', '#', 1, NOW(), 1, NOW(), '');
-- 3.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, update_by, update_time, remark)
VALUES ('申请导入', @application_menu_id, 6, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:import', '#', 1, NOW(), 1, NOW(), '');
-- =====================================================
-- 4. 创建业务功能权限
-- =====================================================
-- 4.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, update_by, update_time, remark)
VALUES ('我的申请', @application_menu_id, 7, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:my', '#', 1, NOW(), 1, NOW(), '');
-- 4.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, update_by, update_time, remark)
VALUES ('待审核申请', @application_menu_id, 8, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:pending', '#', 1, NOW(), 1, NOW(), '');
-- 4.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, update_by, update_time, remark)
VALUES ('资格检查', @application_menu_id, 9, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:check', '#', 1, NOW(), 1, NOW(), '');
-- 4.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, update_by, update_time, remark)
VALUES ('批量审核', @application_menu_id, 10, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:approve', '#', 1, NOW(), 1, NOW(), '');
-- 4.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, update_by, update_time, remark)
VALUES ('提交申请', @application_menu_id, 11, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:submit', '#', 1, NOW(), 1, NOW(), '');
-- 4.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, update_by, update_time, remark)
VALUES ('撤回申请', @application_menu_id, 12, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:withdraw', '#', 1, NOW(), 1, NOW(), '');
-- 4.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, update_by, update_time, remark)
VALUES ('批量申请', @application_menu_id, 13, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:batch', '#', 1, NOW(), 1, NOW(), '');
-- 4.8 统计权限
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, update_by, update_time, remark)
VALUES ('申请统计', @application_menu_id, 14, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:statistics', '#', 1, NOW(), 1, NOW(), '');
-- =====================================================
-- 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, update_by, update_time, remark)
VALUES ('名额查询', @application_menu_id, 15, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:quota', '#', 1, NOW(), 1, NOW(), '');
-- 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, update_by, update_time, remark)
VALUES ('可申请奖学金', @application_menu_id, 16, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:available', '#', 1, NOW(), 1, NOW(), '');
-- 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, update_by, update_time, remark)
VALUES ('班级信息查询', @application_menu_id, 17, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:classInfo', '#', 1, NOW(), 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, update_by, update_time, remark)
VALUES ('学生信息查询', @application_menu_id, 18, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:students', '#', 1, NOW(), 1, NOW(), '');
-- 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, update_by, update_time, remark)
VALUES ('奖学金类型查询', @application_menu_id, 19, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:scholarshipTypes', '#', 1, NOW(), 1, NOW(), '');
-- =====================================================
-- 6. 为管理员角色分配权限
-- =====================================================
-- 获取管理员角色ID (role_key = 'admin')
SET @admin_role_id = (SELECT role_id FROM sys_role WHERE role_key = 'admin' LIMIT 1);
-- 为管理员分配奖学金申请管理菜单权限
INSERT INTO sys_role_menu (role_id, menu_id)
SELECT @admin_role_id, menu_id
FROM sys_menu
WHERE (menu_id = @application_menu_id OR parent_id = @application_menu_id)
AND NOT EXISTS (
SELECT 1 FROM sys_role_menu rm
WHERE rm.role_id = @admin_role_id AND rm.menu_id = sys_menu.menu_id
);
-- =====================================================
-- 7. 检查结果
-- =====================================================
SELECT '奖学金申请管理菜单权限配置完成!' as message;
-- 查看创建的菜单
SELECT menu_id, menu_name, parent_id, perms, menu_type
FROM sys_menu
WHERE menu_id = @application_menu_id OR parent_id = @application_menu_id
ORDER BY parent_id, order_num;
@@ -1,42 +0,0 @@
-- =====================================================
-- 奖学金管理模块 - 完整数据库表结构
-- 版本: v1.0
-- 创建时间: 2025-01-27
-- 说明: 包含奖学金类型表的完整结构定义
-- =====================================================
-- 奖学金类型表
CREATE TABLE IF NOT EXISTS jcbt_scholarship_type (
id BIGINT(20) PRIMARY KEY COMMENT '主键ID',
type_name VARCHAR(100) NOT NULL COMMENT '奖学金类型名称',
type_code VARCHAR(50) UNIQUE NOT NULL COMMENT '类型代码',
description TEXT COMMENT '详细描述',
amount DECIMAL(10,2) DEFAULT 0.00 COMMENT '金额',
create_dept BIGINT(20) COMMENT '创建部门',
create_by BIGINT(20) COMMENT '创建者',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_by BIGINT(20) COMMENT '更新者',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
tenant_id BIGINT(20) NOT NULL COMMENT '租户ID',
deleted TINYINT(1) DEFAULT 0 COMMENT '删除标记',
is_system TINYINT(1) DEFAULT 0 COMMENT '是否系统内置',
status TINYINT(1) DEFAULT 1 COMMENT '状态',
sort_order INT DEFAULT 0 COMMENT '排序',
KEY idx_status (status) COMMENT '状态索引',
KEY idx_create_time (create_time) COMMENT '创建时间索引',
KEY idx_tenant_deleted (tenant_id, deleted) COMMENT '租户删除索引'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='奖学金类型表';
-- 如果表已存在,添加create_dept字段(兼容性处理)
ALTER TABLE jcbt_scholarship_type
ADD COLUMN IF NOT EXISTS create_dept BIGINT(20) COMMENT '创建部门'
AFTER is_system;
-- =====================================================
-- 奖学金兼得关系表修复
-- =====================================================
-- 为jcbt_scholarship_compatibility表添加create_dept字段
ALTER TABLE jcbt_scholarship_compatibility
ADD COLUMN IF NOT EXISTS create_dept BIGINT(20) COMMENT '创建部门'
AFTER description;
@@ -1,98 +0,0 @@
-- ========================================
-- 奖学金名额分配模块 - 数据库建表脚本
-- 创建时间: 2025-01-27
-- 模块: ruoyi-jcbt
-- 说明: 按批次进行名额分配管理
-- ========================================
USE hzdyjs_xg;
-- 删除已存在的表(开发环境)
DROP TABLE IF EXISTS `jcbt_scholarship_quota_adjustment`;
DROP TABLE IF EXISTS `jcbt_scholarship_quota`;
-- =====================================================
-- 1. 名额分配主表
-- =====================================================
CREATE TABLE `jcbt_scholarship_quota` (
`id` BIGINT(20) NOT NULL COMMENT '主键ID',
`batch_id` BIGINT(20) NOT NULL COMMENT '批次ID',
`scholarship_type_id` BIGINT(20) NOT NULL COMMENT '奖学金类型ID',
`allocation_level` VARCHAR(20) NOT NULL COMMENT '分配级别:UNIVERSITY-全校,COLLEGE-学院,MAJOR-专业,CLASS-班级',
`target_dept_id` BIGINT(20) DEFAULT NULL COMMENT '目标部门ID(学院/专业/班级)',
`parent_quota_id` BIGINT(20) DEFAULT NULL COMMENT '上级名额ID(层级分配)',
`total_quota` INT NOT NULL DEFAULT 0 COMMENT '总名额',
`used_quota` INT NOT NULL DEFAULT 0 COMMENT '已使用名额',
`reserved_quota` INT NOT NULL DEFAULT 0 COMMENT '预留名额',
`available_quota` INT NOT NULL DEFAULT 0 COMMENT '可用名额',
`allocation_rule` TEXT DEFAULT NULL COMMENT '分配规则(JSON格式)',
`allocation_basis` VARCHAR(500) DEFAULT NULL COMMENT '分配依据说明',
`allocation_method` VARCHAR(20) DEFAULT 'MANUAL' COMMENT '分配方式:MANUAL-手动分配,AUTO-自动分配,PROPORTIONAL-按比例分配',
`is_adjustable` TINYINT(1) DEFAULT 1 COMMENT '是否可调整:0-否,1-是',
`is_locked` TINYINT(1) DEFAULT 0 COMMENT '是否锁定:0-否,1-是',
`status` VARCHAR(20) DEFAULT 'ACTIVE' COMMENT '状态:ACTIVE-生效,INACTIVE-失效,PENDING-待审核',
`remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
`tenant_id` BIGINT(20) NOT NULL COMMENT '租户ID',
`create_dept` BIGINT(20) DEFAULT NULL COMMENT '创建部门',
`create_by` BIGINT(20) DEFAULT NULL COMMENT '创建者',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` BIGINT(20) DEFAULT NULL COMMENT '更新者',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` TINYINT(1) DEFAULT 0 COMMENT '删除标记:0-正常,1-删除',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_batch_type_dept` (`batch_id`, `scholarship_type_id`, `target_dept_id`, `deleted`),
INDEX `idx_batch_level` (`batch_id`, `allocation_level`),
INDEX `idx_dept_quota` (`target_dept_id`, `total_quota`),
INDEX `idx_parent_quota` (`parent_quota_id`),
INDEX `idx_tenant_status` (`tenant_id`, `status`, `deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='奖学金名额分配表';
-- =====================================================
-- 2. 名额调整记录表
-- =====================================================
CREATE TABLE `jcbt_scholarship_quota_adjustment` (
`id` BIGINT(20) NOT NULL COMMENT '主键ID',
`quota_id` BIGINT(20) NOT NULL COMMENT '名额分配ID',
`adjustment_type` VARCHAR(20) NOT NULL COMMENT '调整类型:INCREASE-增加,DECREASE-减少,TRANSFER-转移',
`from_quota_id` BIGINT(20) DEFAULT NULL COMMENT '源名额ID(转移时使用)',
`to_quota_id` BIGINT(20) DEFAULT NULL COMMENT '目标名额ID(转移时使用)',
`adjustment_amount` INT NOT NULL COMMENT '调整数量',
`before_total` INT NOT NULL COMMENT '调整前总名额',
`after_total` INT NOT NULL COMMENT '调整后总名额',
`adjustment_reason` VARCHAR(500) NOT NULL COMMENT '调整原因',
`approval_status` VARCHAR(20) DEFAULT 'PENDING' COMMENT '审批状态:PENDING-待审批,APPROVED-已通过,REJECTED-已拒绝',
`approval_user_id` BIGINT(20) DEFAULT NULL COMMENT '审批人ID',
`approval_time` DATETIME DEFAULT NULL COMMENT '审批时间',
`approval_remark` VARCHAR(500) DEFAULT NULL COMMENT '审批备注',
`tenant_id` BIGINT(20) NOT NULL COMMENT '租户ID',
`create_dept` BIGINT(20) DEFAULT NULL COMMENT '创建部门',
`create_by` BIGINT(20) DEFAULT NULL COMMENT '创建者',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` BIGINT(20) DEFAULT NULL COMMENT '更新者',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` TINYINT(1) DEFAULT 0 COMMENT '删除标记:0-正常,1-删除',
PRIMARY KEY (`id`),
INDEX `idx_quota_id` (`quota_id`),
INDEX `idx_adjustment_type` (`adjustment_type`, `approval_status`),
INDEX `idx_from_to_quota` (`from_quota_id`, `to_quota_id`),
INDEX `idx_tenant` (`tenant_id`, `deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='名额调整记录表';
-- =====================================================
-- 3. 添加外键约束(可选,根据实际情况)
-- =====================================================
-- ALTER TABLE `jcbt_scholarship_quota`
-- ADD CONSTRAINT `fk_quota_batch` FOREIGN KEY (`batch_id`) REFERENCES `jcbt_scholarship_batch` (`id`);
-- ALTER TABLE `jcbt_scholarship_quota`
-- ADD CONSTRAINT `fk_quota_type` FOREIGN KEY (`scholarship_type_id`) REFERENCES `jcbt_scholarship_type` (`id`);
-- ALTER TABLE `jcbt_scholarship_quota_adjustment`
-- ADD CONSTRAINT `fk_adjustment_quota` FOREIGN KEY (`quota_id`) REFERENCES `jcbt_scholarship_quota` (`id`);
-- =====================================================
-- 4. 验证表创建
-- =====================================================
SHOW TABLES LIKE 'jcbt_scholarship_quota%';
DESCRIBE jcbt_scholarship_quota;
DESCRIBE jcbt_scholarship_quota_adjustment;
@@ -1,134 +0,0 @@
-- ========================================
-- 奖学金名额分配模块 - 菜单权限配置
-- 创建时间: 2025-01-27
-- 说明: 配置名额分配功能的菜单和权限
-- ========================================
USE hzdyjs_xg;
-- 设置变量
SET @parent_menu_id = 2015; -- 奖惩补贴管理父菜单ID
SET @menu_order = 4; -- 菜单排序
-- =====================================================
-- 1. 删除已存在的菜单(开发环境重新创建)
-- =====================================================
DELETE FROM sys_menu WHERE menu_name = '名额分配管理' AND parent_id = @parent_menu_id;
-- =====================================================
-- 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, update_by, update_time, remark)
VALUES ('名额分配管理', @parent_menu_id, @menu_order, 'scholarshipQuota', 'jcbt/scholarshipQuota/index', '', 1, 0, 'C', '0', '0', 'jcbt:scholarshipQuota:list', 'tree-table', 1, NOW(), 1, NOW(), '奖学金名额分配管理菜单');
-- 获取刚插入的菜单ID
SET @quota_menu_id = LAST_INSERT_ID();
-- =====================================================
-- 3. 创建名额分配功能按钮权限
-- =====================================================
-- 3.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, update_by, update_time, remark)
VALUES ('名额分配查询', @quota_menu_id, 1, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipQuota:query', '#', 1, NOW(), 1, NOW(), '');
-- 3.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, update_by, update_time, remark)
VALUES ('名额分配新增', @quota_menu_id, 2, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipQuota:add', '#', 1, NOW(), 1, NOW(), '');
-- 3.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, update_by, update_time, remark)
VALUES ('名额分配修改', @quota_menu_id, 3, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipQuota:edit', '#', 1, NOW(), 1, NOW(), '');
-- 3.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, update_by, update_time, remark)
VALUES ('名额分配删除', @quota_menu_id, 4, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipQuota:remove', '#', 1, NOW(), 1, NOW(), '');
-- 3.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, update_by, update_time, remark)
VALUES ('名额分配导出', @quota_menu_id, 5, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipQuota:export', '#', 1, NOW(), 1, NOW(), '');
-- 3.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, update_by, update_time, remark)
VALUES ('批量分配名额', @quota_menu_id, 6, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipQuota:batchAllocate', '#', 1, NOW(), 1, NOW(), '');
-- 3.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, update_by, update_time, remark)
VALUES ('名额调整', @quota_menu_id, 7, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipQuota:adjust', '#', 1, NOW(), 1, NOW(), '');
-- 3.8 名额锁定权限
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, update_by, update_time, remark)
VALUES ('名额锁定', @quota_menu_id, 8, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipQuota:lock', '#', 1, NOW(), 1, NOW(), '');
-- 3.9 自动分配权限
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, update_by, update_time, remark)
VALUES ('自动分配名额', @quota_menu_id, 9, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipQuota:autoAllocate', '#', 1, NOW(), 1, NOW(), '');
-- 3.10 复制分配权限
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, update_by, update_time, remark)
VALUES ('复制名额分配', @quota_menu_id, 10, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipQuota:copy', '#', 1, NOW(), 1, NOW(), '');
-- =====================================================
-- 4. 为管理员角色分配权限
-- =====================================================
-- 4.1 获取管理员角色ID
SET @admin_role_id = (SELECT role_id FROM sys_role WHERE role_key = 'admin' LIMIT 1);
-- 4.2 为管理员角色分配名额分配菜单权限
INSERT INTO sys_role_menu (role_id, menu_id)
SELECT @admin_role_id, menu_id
FROM sys_menu
WHERE (menu_id = @quota_menu_id OR parent_id = @quota_menu_id)
AND NOT EXISTS (
SELECT 1 FROM sys_role_menu rm
WHERE rm.role_id = @admin_role_id AND rm.menu_id = sys_menu.menu_id
);
-- =====================================================
-- 5. 创建字典数据
-- =====================================================
-- 5.1 分配级别字典
INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, update_by, update_time, remark)
VALUES ('名额分配级别', 'jcbt_quota_allocation_level', '0', 1, NOW(), 1, NOW(), '奖学金名额分配级别字典类型')
ON DUPLICATE KEY UPDATE dict_name = VALUES(dict_name);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark)
VALUES
(1, '全校', 'UNIVERSITY', 'jcbt_quota_allocation_level', '', 'primary', 'Y', '0', 1, NOW(), 1, NOW(), '全校级别分配'),
(2, '学院', 'COLLEGE', 'jcbt_quota_allocation_level', '', 'success', 'N', '0', 1, NOW(), 1, NOW(), '学院级别分配'),
(3, '专业', 'MAJOR', 'jcbt_quota_allocation_level', '', 'info', 'N', '0', 1, NOW(), 1, NOW(), '专业级别分配'),
(4, '班级', 'CLASS', 'jcbt_quota_allocation_level', '', 'warning', 'N', '0', 1, NOW(), 1, NOW(), '班级级别分配')
ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label);
-- 5.2 分配方式字典
INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, update_by, update_time, remark)
VALUES ('名额分配方式', 'jcbt_quota_allocation_method', '0', 1, NOW(), 1, NOW(), '奖学金名额分配方式字典类型')
ON DUPLICATE KEY UPDATE dict_name = VALUES(dict_name);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark)
VALUES
(1, '手动分配', 'MANUAL', 'jcbt_quota_allocation_method', '', 'primary', 'Y', '0', 1, NOW(), 1, NOW(), '手动分配名额'),
(2, '自动分配', 'AUTO', 'jcbt_quota_allocation_method', '', 'success', 'N', '0', 1, NOW(), 1, NOW(), '自动分配名额'),
(3, '按比例分配', 'PROPORTIONAL', 'jcbt_quota_allocation_method', '', 'info', 'N', '0', 1, NOW(), 1, NOW(), '按比例分配名额')
ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label);
-- 5.3 分配状态字典
INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, update_by, update_time, remark)
VALUES ('名额分配状态', 'jcbt_quota_status', '0', 1, NOW(), 1, NOW(), '奖学金名额分配状态字典类型')
ON DUPLICATE KEY UPDATE dict_name = VALUES(dict_name);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark)
VALUES
(1, '生效', 'ACTIVE', 'jcbt_quota_status', '', 'success', 'Y', '0', 1, NOW(), 1, NOW(), '名额分配生效'),
(2, '失效', 'INACTIVE', 'jcbt_quota_status', '', 'danger', 'N', '0', 1, NOW(), 1, NOW(), '名额分配失效'),
(3, '待审核', 'PENDING', 'jcbt_quota_status', '', 'warning', 'N', '0', 1, NOW(), 1, NOW(), '名额分配待审核')
ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label);
-- =====================================================
-- 6. 验证创建结果
-- =====================================================
SELECT '名额分配管理菜单创建完成!' as message;
SELECT menu_id, menu_name, parent_id, perms FROM sys_menu WHERE menu_name LIKE '%名额分配%' ORDER BY parent_id, order_num;
SELECT dict_type, COUNT(*) as count FROM sys_dict_data WHERE dict_type LIKE 'jcbt_quota_%' GROUP BY dict_type;
-224
View File
@@ -1,224 +0,0 @@
-- ====================================================================
-- 奖学金管理模块 - 测试数据脚本
-- 创建时间: 2025-01-27
-- 说明: 包含奖学金类型、班级、申请记录的测试数据
-- ====================================================================
USE hzdyjs_xg;
-- =====================================================
-- 1. 清理现有测试数据
-- =====================================================
DELETE FROM jcbt_scholarship_application WHERE student_name LIKE '测试学生%';
DELETE FROM jcbt_scholarship_type WHERE type_name LIKE '测试%';
DELETE FROM xg_class_msg WHERE class_name LIKE '测试%';
-- =====================================================
-- 2. 插入奖学金类型测试数据
-- =====================================================
INSERT INTO jcbt_scholarship_type (
id, type_code, type_name, type_category, level_type, award_amount,
description, application_guide, application_conditions, evaluation_criteria,
compatibility_type, sort_order, status, is_system, tenant_id, deleted,
create_by, create_time, update_by, update_time
) VALUES
(
1863768901234567001,
'ACADEMIC_EXCELLENCE',
'优秀学生奖学金',
'ACADEMIC',
'FIRST_CLASS',
3000.00,
'奖励品学兼优的学生',
'申请时需要提交成绩单和获奖证书',
'学期平均分85分以上,无挂科记录',
'按成绩排名评定',
'COMPATIBLE',
1, 1, 0, '000000', 0,
1, NOW(), 1, NOW()
),
(
1863768901234567002,
'POVERTY_ASSISTANCE',
'贫困助学金',
'ASSISTANCE',
'GENERAL',
2000.00,
'资助家庭经济困难学生',
'申请时需要提交家庭经济证明',
'家庭经济困难,成绩及格以上',
'按经济困难程度评定',
'COMPATIBLE',
2, 1, 0, '000000', 0,
1, NOW(), 1, NOW()
),
(
1863768901234567003,
'INNOVATION_PRIZE',
'创新创业奖学金',
'INNOVATION',
'SPECIAL',
5000.00,
'奖励在创新创业方面表现突出的学生',
'申请时需要提交创新项目材料',
'有创新成果或创业经历',
'按创新项目质量评定',
'EXCLUSIVE',
3, 1, 0, '000000', 0,
1, NOW(), 1, NOW()
);
-- =====================================================
-- 3. 插入班级测试数据
-- =====================================================
INSERT INTO xg_class_msg (
id, college_id, college_name, major_id, major_name,
class_code, class_name, class_type, grade, enrollment_year, graduation_year,
class_teacher_id, class_teacher_name, class_status,
planned_capacity, current_student_count, tenant_id, deleted,
create_by, create_time, update_by, update_time
) VALUES
(
1863768901234568001,
100, '计算机学院', 101, '软件工程',
'CS2021001', '测试班级2021级软件工程1班', '1', '2021', 2021, 2025,
1001, '张老师', '1',
30, 28, '000000', 0,
1, NOW(), 1, NOW()
),
(
1863768901234568002,
100, '计算机学院', 101, '软件工程',
'CS2021002', '测试班级2021级软件工程2班', '1', '2021', 2021, 2025,
1002, '李老师', '1',
30, 26, '000000', 0,
1, NOW(), 1, NOW()
),
(
1863768901234568003,
200, '机械学院', 201, '机械设计制造及其自动化',
'ME2021001', '测试班级2021级机械1班', '1', '2021', 2021, 2025,
2001, '王老师', '1',
25, 24, '000000', 0,
1, NOW(), 1, NOW()
);
-- =====================================================
-- 4. 插入申请记录测试数据
-- =====================================================
INSERT INTO jcbt_scholarship_application (
id, application_no, batch_id, scholarship_type_id,
student_no, student_name, student_id, dept_id, major_id, class_id,
application_type, current_status, apply_reason, self_evaluation,
calculated_score, final_score, ranking_in_dept, ranking_in_major,
submit_time, tenant_id, deleted,
create_by, create_time, update_by, update_time
) VALUES
(
1863768901234569001,
'APPLY20250127001',
1863768901234560001, -- 假设批次ID
1863768901234567001, -- 优秀学生奖学金
'2021001001', '测试学生张三', 1863768901234570001,
100, 101, 1863768901234568001, -- 计算机学院,软件工程,测试班级1
'STUDENT', 'SUBMITTED', '学习成绩优异,积极参与社会实践',
'我在本学期各科成绩均在90分以上,积极参与班级和学院活动,希望能够获得奖学金鼓励。',
92.5, 93.0, 2, 1,
NOW(), '000000', 0,
1, NOW(), 1, NOW()
),
(
1863768901234569002,
'APPLY20250127002',
1863768901234560001, -- 假设批次ID
1863768901234567002, -- 贫困助学金
'2021001002', '测试学生李四', 1863768901234570002,
100, 101, 1863768901234568001, -- 计算机学院,软件工程,测试班级1
'STUDENT', 'SUBMITTED', '家庭经济困难,需要资助',
'家庭经济困难,父母务农收入微薄,希望通过助学金减轻经济负担,专心学习。',
78.5, 80.0, 15, 8,
NOW(), '000000', 0,
1, NOW(), 1, NOW()
),
(
1863768901234569003,
'APPLY20250127003',
1863768901234560001, -- 假设批次ID
1863768901234567003, -- 创新创业奖学金
'2021002001', '测试学生王五', 1863768901234570003,
100, 101, 1863768901234568002, -- 计算机学院,软件工程,测试班级2
'RECOMMEND', 'REVIEWING', '在创新创业方面表现突出',
'参与开发了校园APP项目,获得大学生创新创业大赛二等奖,具有很强的创新能力。',
88.0, 89.5, 5, 3,
NOW(), '000000', 0,
1, NOW(), 1, NOW()
),
(
1863768901234569004,
'APPLY20250127004',
1863768901234560001, -- 假设批次ID
1863768901234567001, -- 优秀学生奖学金
'2021003001', '测试学生赵六', 1863768901234570004,
200, 201, 1863768901234568003, -- 机械学院,机械设计,测试班级3
'STUDENT', 'APPROVED', '学习成绩优秀,综合素质高',
'各科成绩均名列前茅,担任班长职务,热心为同学服务,积极参与各项活动。',
95.0, 95.5, 1, 1,
DATE_SUB(NOW(), INTERVAL 2 DAY), '000000', 0,
1, DATE_SUB(NOW(), INTERVAL 2 DAY), 1, NOW()
),
(
1863768901234569005,
'APPLY20250127005',
1863768901234560001, -- 假设批次ID
1863768901234567002, -- 贫困助学金
'2021003002', '测试学生孙七', 1863768901234570005,
200, 201, 1863768901234568003, -- 机械学院,机械设计,测试班级3
'STUDENT', 'REJECTED', '经济困难但成绩有待提高',
'虽然家庭经济困难,但我会努力学习,提高成绩,争取下次申请成功。',
65.0, 68.0, 20, 12,
DATE_SUB(NOW(), INTERVAL 3 DAY), '000000', 0,
1, DATE_SUB(NOW(), INTERVAL 3 DAY), 1, NOW()
);
-- =====================================================
-- 5. 插入奖学金批次测试数据(如果需要)
-- =====================================================
INSERT IGNORE INTO jcbt_scholarship_batch (
id, batch_name, batch_code, academic_year, semester,
start_date, end_date, status, description,
tenant_id, deleted, create_by, create_time, update_by, update_time
) VALUES (
1863768901234560001,
'2024-2025学年第一学期奖学金申请',
'BATCH202401',
'2024-2025', '1',
'2024-09-01', '2024-09-30', 'ACTIVE', '2024-2025学年第一学期奖学金申请批次',
'000000', 0, 1, NOW(), 1, NOW()
);
-- =====================================================
-- 6. 验证数据插入
-- =====================================================
SELECT '=== 奖学金类型数据 ===' AS info;
SELECT id, type_code, type_name, award_amount FROM jcbt_scholarship_type WHERE type_name LIKE '测试%' OR type_name LIKE '%奖学金' OR type_name LIKE '%助学金' LIMIT 5;
SELECT '=== 班级数据 ===' AS info;
SELECT id, class_code, class_name, college_name, major_name FROM xg_class_msg WHERE class_name LIKE '测试%' LIMIT 5;
SELECT '=== 申请记录数据 ===' AS info;
SELECT id, application_no, student_name, current_status FROM jcbt_scholarship_application WHERE student_name LIKE '测试学生%' LIMIT 5;
SELECT '=== 关联查询测试 ===' AS info;
SELECT
a.application_no,
a.student_name,
st.type_name as scholarship_type_name,
c.class_name,
a.current_status
FROM jcbt_scholarship_application a
LEFT JOIN jcbt_scholarship_type st ON a.scholarship_type_id = st.id
LEFT JOIN xg_class_msg c ON a.class_id = c.id
WHERE a.student_name LIKE '测试学生%'
LIMIT 10;
COMMIT;
-43
View File
@@ -1,43 +0,0 @@
-- 测试 assistance_types 字段修复结果
USE hzdyjs_xg;
SELECT '=== 检查 assistance_types 字段属性 ===' as message;
SELECT
COLUMN_NAME as '字段名',
DATA_TYPE as '数据类型',
IS_NULLABLE as '允许NULL',
COLUMN_DEFAULT as '默认值',
COLUMN_COMMENT as '注释'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME = 'assistance_types';
SELECT '=== 测试插入记录(assistance_types为NULL)===' as message;
-- 插入测试记录,assistance_types 字段为 NULL
INSERT INTO jcbt_poverty_application (
id, application_no, academic_year, term, student_id, student_no, student_name,
gender, college_id, college_name, major_id, major_name, class_id, class_name,
recognition_group, recognition_type_id, recognition_type_name,
status, create_by, create_time, tenant_id
) VALUES (
999999998, 'TEST002', '2024-2025', 1, 1002, '202401002', '测试学生2',
'1', 102, '测试学院', 10102, '测试专业', 1010102, '测试班级2',
'特殊群体', 1, '特困生',
'DRAFT', 103, NOW(), '000000'
);
SELECT '=== 查询测试记录 ===' as message;
SELECT id, student_name, assistance_types, status
FROM jcbt_poverty_application
WHERE id = 999999998;
SELECT '=== 清理测试数据 ===' as message;
-- 清理测试数据
DELETE FROM jcbt_poverty_application WHERE id = 999999998;
SELECT '✅ 测试完成!如果没有错误,说明 assistance_types 字段修复成功!' as result;
-35
View File
@@ -1,35 +0,0 @@
-- 测试审核字段修复结果
USE hzdyjs_xg;
SELECT '=== 检查修复后的审核字段 ===' as message;
SELECT
COLUMN_NAME as '字段名',
DATA_TYPE as '数据类型',
IS_NULLABLE as '允许NULL',
COLUMN_DEFAULT as '默认值',
COLUMN_COMMENT as '注释'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME IN ('audit_time', 'audit_opinion', 'auditor_id', 'auditor_name')
ORDER BY COLUMN_NAME;
SELECT '=== 测试审核字段查询(模拟MyBatis-Plus查询)===' as message;
-- 模拟MyBatis-Plus的查询,包含所有字段
SELECT
id, application_no, academic_year, term, student_id, student_no, student_name,
gender, college_id, college_name, major_id, major_name, class_id, class_name,
teacher_id, teacher_name, recognition_group, recognition_type_id, recognition_type_code,
recognition_type_name, assistance_type_ids, assistance_type_names, family_economy_summary,
attach_application_form_url, attach_application_form_id, attach_survey_form_url,
attach_survey_form_id, status, submitter_id, submitter_name, submit_time,
auditor_id, auditor_name, audit_time, audit_opinion, remark,
deleted, create_dept, create_by, create_time, update_by, update_time
FROM jcbt_poverty_application
WHERE deleted = 0 AND tenant_id = '000000'
ORDER BY create_time DESC
LIMIT 1;
SELECT '✅ 测试完成!如果没有 Unknown column 错误,说明字段修复成功!' as result;
-52
View File
@@ -1,52 +0,0 @@
-- ================================================================
-- 测试 teacher_name 字段修复结果
-- 文件: test_fix_result.sql
-- 功能: 验证修复是否成功
-- ================================================================
USE hzdyjs_xg;
-- 1. 检查表结构
SELECT '=== 检查表结构 ===' AS message;
SHOW CREATE TABLE jcbt_poverty_application;
-- 2. 检查关键字段属性
SELECT '=== 检查关键字段属性 ===' AS message;
SELECT
COLUMN_NAME AS '字段名',
DATA_TYPE AS '数据类型',
IS_NULLABLE AS '允许NULL',
COLUMN_DEFAULT AS '默认值',
COLUMN_COMMENT AS '注释'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME IN ('teacher_id', 'teacher_name')
ORDER BY ORDINAL_POSITION;
-- 3. 测试插入记录(不包含teacher_name)
SELECT '=== 测试插入记录 ===' AS message;
INSERT INTO jcbt_poverty_application (
id, application_no, academic_year, term, student_id, student_no, student_name,
gender, college_id, college_name, major_id, major_name, class_id, class_name,
recognition_group, recognition_type_id, recognition_type_name, assistance_types,
status, create_by, create_time, tenant_id
) VALUES (
999999999, 'TEST001', '2024-2025', 1, 1001, '202401001', '测试学生',
'1', 101, '计算机学院', 10101, '计算机科学', 1010101, '测试班级',
'特殊群体', 1, '特困生', '助学金',
'DRAFT', 103, NOW(), '000000'
);
-- 4. 查询测试记录
SELECT '=== 查询测试记录 ===' AS message;
SELECT
id, student_name, teacher_id, teacher_name, status
FROM jcbt_poverty_application
WHERE id = 999999999;
-- 5. 清理测试数据
DELETE FROM jcbt_poverty_application WHERE id = 999999999;
SELECT '✅ 测试完成!如果没有错误,说明修复成功!' AS result;
-105
View File
@@ -1,105 +0,0 @@
-- =====================================================
-- 奖学金类型表字段修复验证脚本
-- 创建时间: 2025-08-04
-- 说明: 验证申请条件、评定标准、备注字段是否正确添加和工作
-- =====================================================
-- 1. 验证字段是否存在
SELECT
COLUMN_NAME as '字段名',
DATA_TYPE as '数据类型',
CHARACTER_MAXIMUM_LENGTH as '最大长度',
IS_NULLABLE as '是否可空',
COLUMN_DEFAULT as '默认值',
COLUMN_COMMENT as '字段注释'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'jcbt_scholarship_type'
AND COLUMN_NAME IN ('application_conditions', 'evaluation_criteria', 'remark')
ORDER BY ORDINAL_POSITION;
-- 2. 查看表结构(包含新增字段的完整表结构)
DESCRIBE jcbt_scholarship_type;
-- 3. 测试插入数据(包含新增字段)
INSERT INTO jcbt_scholarship_type (
id, type_code, type_name, type_category, level_type, award_amount,
description, application_guide, application_conditions, evaluation_criteria, remark,
sort_order, status, is_system, compatibility_type,
create_by, create_time, update_by, update_time, tenant_id, deleted
) VALUES (
1001, 'TEST_001', '测试奖学金', 'ACADEMIC', 'FIRST_CLASS', 5000.00,
'这是一个测试奖学金描述',
'请按照以下步骤申请:\n1. 填写申请表\n2. 提交相关材料',
'申请条件:\n1. 学习成绩优秀,GPA≥3.5\n2. 无违纪记录\n3. 积极参与社会实践',
'评定标准:\n1. 学习成绩占60%\n2. 综合素质占30%\n3. 社会实践占10%',
'备注:本奖学金每学期评选一次,优秀学生可连续获得',
1, 1, 0, 'COMPATIBLE',
1, NOW(), 1, NOW(), '000000', 0
);
-- 4. 验证数据插入是否成功
SELECT
id, type_code, type_name,
LEFT(application_conditions, 50) as '申请条件_前50字符',
LEFT(evaluation_criteria, 50) as '评定标准_前50字符',
LEFT(remark, 50) as '备注_前50字符'
FROM jcbt_scholarship_type
WHERE type_code = 'TEST_001';
-- 5. 测试更新操作
UPDATE jcbt_scholarship_type
SET
application_conditions = '更新后的申请条件:\n1. GPA≥3.8\n2. 英语四级以上\n3. 无挂科记录',
evaluation_criteria = '更新后的评定标准:\n1. 学习成绩70%\n2. 英语水平20%\n3. 综合表现10%',
remark = '更新后的备注:此奖学金面向大二及以上学生',
update_time = NOW()
WHERE type_code = 'TEST_001';
-- 6. 验证更新是否成功
SELECT
id, type_code, type_name,
application_conditions as '申请条件',
evaluation_criteria as '评定标准',
remark as '备注',
update_time as '更新时间'
FROM jcbt_scholarship_type
WHERE type_code = 'TEST_001';
-- 7. 查询所有奖学金类型的这三个字段(查看现有数据)
SELECT
id, type_code, type_name,
CASE
WHEN application_conditions IS NULL THEN '空值'
WHEN application_conditions = '' THEN '空字符串'
ELSE CONCAT('有值-', LEFT(application_conditions, 20), '...')
END as '申请条件状态',
CASE
WHEN evaluation_criteria IS NULL THEN '空值'
WHEN evaluation_criteria = '' THEN '空字符串'
ELSE CONCAT('有值-', LEFT(evaluation_criteria, 20), '...')
END as '评定标准状态',
CASE
WHEN remark IS NULL THEN '空值'
WHEN remark = '' THEN '空字符串'
ELSE CONCAT('有值-', LEFT(remark, 20), '...')
END as '备注状态'
FROM jcbt_scholarship_type
WHERE deleted = 0
ORDER BY sort_order, create_time DESC;
-- 8. 清理测试数据
DELETE FROM jcbt_scholarship_type WHERE type_code = 'TEST_001';
-- 9. 验证清理结果
SELECT COUNT(*) as '清理后剩余测试数据数量'
FROM jcbt_scholarship_type
WHERE type_code = 'TEST_001';
-- =====================================================
-- 测试完成提示
-- =====================================================
SELECT
'字段修复验证完成' as '状态',
'如果以上查询都正常执行,说明字段修复成功' as '说明',
'现在可以重启后端服务测试详情页面显示' as '下一步';
-131
View File
@@ -1,131 +0,0 @@
-- =====================================================
-- 奖学金名额分配 - 基础数据检查和测试数据插入
-- 创建时间: 2025-01-27
-- 说明: 检查和创建测试用的基础数据
-- =====================================================
USE hzdyjs_xg;
-- =====================================================
-- 1. 检查现有数据
-- =====================================================
-- 检查奖学金批次数据
SELECT 'jcbt_scholarship_batch' as table_name, COUNT(*) as record_count FROM jcbt_scholarship_batch WHERE deleted = 0;
-- 检查奖学金类型数据
SELECT 'jcbt_scholarship_type' as table_name, COUNT(*) as record_count FROM jcbt_scholarship_type WHERE deleted = 0;
-- 检查名额分配数据
SELECT 'jcbt_scholarship_quota' as table_name, COUNT(*) as record_count FROM jcbt_scholarship_quota WHERE deleted = 0;
-- =====================================================
-- 2. 插入测试批次数据(如果不存在)
-- =====================================================
INSERT IGNORE INTO jcbt_scholarship_batch (
id, batch_code, batch_name, academic_year, semester, batch_type,
start_time, end_time, apply_start_time, apply_end_time,
review_start_time, review_end_time, status, description,
create_by, create_time, update_by, update_time, tenant_id, deleted
) VALUES
(1890000000000000001, 'BATCH_2024_1', '2024学年第一学期奖学金评定', '2024-2025', 1, 'REGULAR',
'2024-09-01 00:00:00', '2024-12-31 23:59:59', '2024-10-01 00:00:00', '2024-10-31 23:59:59',
'2024-11-01 00:00:00', '2024-11-30 23:59:59', 'ACTIVE', '2024学年第一学期常规奖学金评定批次',
1, NOW(), 1, NOW(), 1, 0),
(1890000000000000002, 'BATCH_2024_2', '2024学年第二学期奖学金评定', '2024-2025', 2, 'REGULAR',
'2025-02-01 00:00:00', '2025-06-30 23:59:59', '2025-03-01 00:00:00', '2025-03-31 23:59:59',
'2025-04-01 00:00:00', '2025-04-30 23:59:59', 'DRAFT', '2024学年第二学期常规奖学金评定批次',
1, NOW(), 1, NOW(), 1, 0);
-- =====================================================
-- 3. 插入测试奖学金类型数据(如果不存在)
-- =====================================================
INSERT IGNORE INTO jcbt_scholarship_type (
id, type_code, type_name, type_category, level_type, award_amount,
description, application_guide, application_conditions, evaluation_criteria,
compatibility_type, sort_order, status, is_system,
create_by, create_time, update_by, update_time, tenant_id, deleted
) VALUES
(1890000000000000101, 'GJZXJ', '国家奖学金', 'NATIONAL', 'FIRST_CLASS', 8000.00,
'国家奖学金是为了激励普通本科高校、高等职业学校和高等专科学校学生勤奋学习、努力进取,在德、智、体、美等方面全面发展,由中央政府出资设立的奖励特别优秀学生的奖学金。',
'学生本人提出申请,按学校规定程序推荐上报。', '品学兼优,学习成绩排名在评选范围内位于前10%',
'学习成绩、综合测评、道德品质等综合评定', 'EXCLUSIVE', 1, 1, 1,
1, NOW(), 1, NOW(), 1, 0),
(1890000000000000102, 'GJLZJ', '国家励志奖学金', 'NATIONAL', 'SECOND_CLASS', 5000.00,
'国家励志奖学金是为了激励普通本科高校、高等职业学校和高等专科学校的家庭经济困难学生勤奋学习、努力进取,在德、智、体、美等方面全面发展,由中央和地方政府共同出资设立的,奖励资助品学兼优的家庭经济困难学生的奖学金。',
'学生本人提出申请,按学校规定程序推荐上报。', '家庭经济困难且品学兼优,学习成绩排名在评选范围内位于前25%',
'学习成绩、综合测评、家庭经济状况等综合评定', 'EXCLUSIVE', 2, 1, 1,
1, NOW(), 1, NOW(), 1, 0),
(1890000000000000103, 'XXZXJ1', '校级奖学金一等奖', 'SCHOOL', 'FIRST_CLASS', 3000.00,
'学校设立的奖学金,奖励学习成绩优秀、综合素质突出的学生。',
'学生本人提出申请,班级推荐,学院审核。', '学习成绩排名在专业前5%,综合测评排名在专业前10%',
'学习成绩、综合测评、特长发展等', 'COMPATIBLE', 3, 1, 0,
1, NOW(), 1, NOW(), 1, 0),
(1890000000000000104, 'XXZXJ2', '校级奖学金二等奖', 'SCHOOL', 'SECOND_CLASS', 2000.00,
'学校设立的奖学金,奖励学习成绩良好、综合素质较好的学生。',
'学生本人提出申请,班级推荐,学院审核。', '学习成绩排名在专业前15%,综合测评排名在专业前20%',
'学习成绩、综合测评、特长发展等', 'COMPATIBLE', 4, 1, 0,
1, NOW(), 1, NOW(), 1, 0),
(1890000000000000105, 'SZZXJ', '社会专项奖学金', 'ENTERPRISE', 'SPECIAL', 1500.00,
'由社会企业、校友或其他组织设立的专项奖学金。',
'学生本人提出申请,按专项奖学金具体要求推荐。', '符合专项奖学金设立的特定条件和要求',
'按照专项奖学金的评定标准执行', 'CUSTOM', 5, 1, 0,
1, NOW(), 1, NOW(), 1, 0);
-- =====================================================
-- 4. 插入测试名额分配数据(如果不存在)
-- =====================================================
INSERT IGNORE INTO jcbt_scholarship_quota (
id, batch_id, scholarship_type_id, allocation_level, target_dept_id, parent_quota_id,
total_quota, used_quota, reserved_quota, available_quota,
allocation_rule, allocation_basis, allocation_method, is_adjustable, is_locked, status,
remark, create_by, create_time, update_by, update_time, tenant_id, deleted
) VALUES
-- 国家奖学金 - 全校级分配
(1890000000000000201, 1890000000000000001, 1890000000000000101, 'UNIVERSITY', NULL, NULL,
50, 0, 5, 45, '{"type":"university","rule":"total_allocation"}', '根据学校总体规模和历年获奖情况分配',
'MANUAL', 1, 0, 'ACTIVE', '全校国家奖学金总名额', 1, NOW(), 1, NOW(), 1, 0),
-- 国家励志奖学金 - 全校级分配
(1890000000000000202, 1890000000000000001, 1890000000000000102, 'UNIVERSITY', NULL, NULL,
200, 0, 20, 180, '{"type":"university","rule":"total_allocation"}', '根据学校困难学生比例和名额分配',
'MANUAL', 1, 0, 'ACTIVE', '全校国家励志奖学金总名额', 1, NOW(), 1, NOW(), 1, 0),
-- 校级奖学金一等奖 - 全校级分配
(1890000000000000203, 1890000000000000001, 1890000000000000103, 'UNIVERSITY', NULL, NULL,
100, 0, 10, 90, '{"type":"university","rule":"total_allocation"}', '根据学校各学院学生人数比例分配',
'MANUAL', 1, 0, 'ACTIVE', '全校校级一等奖学金总名额', 1, NOW(), 1, NOW(), 1, 0),
-- 校级奖学金二等奖 - 全校级分配
(1890000000000000204, 1890000000000000001, 1890000000000000104, 'UNIVERSITY', NULL, NULL,
300, 0, 30, 270, '{"type":"university","rule":"total_allocation"}', '根据学校各学院学生人数比例分配',
'MANUAL', 1, 0, 'ACTIVE', '全校校级二等奖学金总名额', 1, NOW(), 1, NOW(), 1, 0);
-- =====================================================
-- 5. 验证插入结果
-- =====================================================
-- 再次检查数据插入结果
SELECT '插入后-jcbt_scholarship_batch' as table_name, COUNT(*) as record_count FROM jcbt_scholarship_batch WHERE deleted = 0;
SELECT '插入后-jcbt_scholarship_type' as table_name, COUNT(*) as record_count FROM jcbt_scholarship_type WHERE deleted = 0;
SELECT '插入后-jcbt_scholarship_quota' as table_name, COUNT(*) as record_count FROM jcbt_scholarship_quota WHERE deleted = 0;
-- 查看详细数据
SELECT
q.id,
b.batch_name,
st.type_name as scholarship_type_name,
q.allocation_level,
q.total_quota,
q.available_quota,
q.status
FROM jcbt_scholarship_quota q
LEFT JOIN jcbt_scholarship_batch b ON q.batch_id = b.id
LEFT JOIN jcbt_scholarship_type st ON q.scholarship_type_id = st.id
WHERE q.deleted = 0
ORDER BY q.id;
-- =====================================================
-95
View File
@@ -1,95 +0,0 @@
-- =====================================================
-- 勤工俭学测试数据脚本 - 修正版
-- 匹配当前数据库表结构
-- 创建时间: 2025-01-03
-- =====================================================
-- 设置字符集
SET NAMES utf8mb4;
-- =====================================================
-- 1. 插入测试岗位数据
-- =====================================================
-- 1.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,每天3小时', '2025-01-03', '2025-06-30',
'1. 大二及以上年级\n2. 学习成绩良好\n3. 责任心强,工作认真\n4. 熟悉图书分类和管理',
'15元/小时', '张老师', '13800138001',
1001, '文学院', 'RECRUITING', 1, 1, '000000');
-- 1.2 实验室设备维护岗位
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
(1736000000000000002, '实验室设备维护', 'COLLEGE', 2, '周三、周五 16:00-18:00,每次2小时', '2025-01-03', '2025-05-31',
'1. 理工科专业学生\n2. 有基础的设备维护经验\n3. 动手能力强\n4. 能吃苦耐劳',
'18元/小时', '李老师', '13800138002',
1002, '理学院', 'RECRUITING', 1, 1, '000000');
-- 1.3 学生宿舍管理助理岗位
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
(1736000000000000003, '学生宿舍管理助理', 'UNIVERSITY', 3, '周一至周日轮班,每次4小时', '2025-01-03', '2025-07-31',
'1. 品行端正,无违纪记录\n2. 沟通能力强\n3. 能适应轮班工作\n4. 有服务意识',
'12元/小时,夜班补贴3元/小时', '王老师', '13800138003',
1003, '学生处', 'RECRUITING', 1, 1, '000000');
-- =====================================================
-- 2. 插入测试申请数据
-- =====================================================
-- 2.1 张三的申请
INSERT INTO `jcbt_work_study_application`
(`id`, `position_id`, `position_name`, `position_type`, `work_location`, `planned_work_hours`,
`student_id`, `student_name`, `student_number`, `college_id`, `college_name`, `major_id`, `major_name`,
`grade`, `class_name`, `contact_phone`, `family_financial_status`, `application_reason`,
`personal_ability`, `time_arrangement`, `status`, `application_date`, `create_by`, `update_by`, `tenant_id`)
VALUES
(1736100000000000001, 1736000000000000001, '图书馆助理管理员', 'TEACHING_ASSISTANT', '图书馆', 15,
2000001, '张三', '2023001001', 1001, '文学院', 2001, '汉语言文学', '2', '汉语言文学2023-1班',
'13900139001', 'DIFFICULT', '家庭经济困难,希望通过勤工俭学减轻家庭负担,同时锻炼自己的工作能力。',
'有图书管理相关经验,熟悉图书分类方法,责任心强,工作细致认真。',
'周一至周五下午14:00-17:00有空,时间安排合理,不会影响学习。',
'SUBMITTED', '2025-01-03 10:00:00', 1, 1, '000000');
-- 2.2 李四的申请
INSERT INTO `jcbt_work_study_application`
(`id`, `position_id`, `position_name`, `position_type`, `work_location`, `planned_work_hours`,
`student_id`, `student_name`, `student_number`, `college_id`, `college_name`, `major_id`, `major_name`,
`grade`, `class_name`, `contact_phone`, `family_financial_status`, `application_reason`,
`personal_ability`, `time_arrangement`, `status`, `application_date`, `create_by`, `update_by`, `tenant_id`)
VALUES
(1736100000000000002, 1736000000000000002, '实验室设备维护', 'LOGISTICS', '物理实验室', 8,
2000002, '李四', '2023002001', 1002, '理学院', 2002, '应用物理学', '3', '应用物理学2021-1班',
'13900139002', 'AVERAGE', '希望通过实验室工作积累实践经验,为将来就业做准备。',
'理工科背景,具备基本的物理实验操作能力,对设备维护有浓厚兴趣。',
'周三、周五下午时间充足,能保证工作时间,不影响专业课学习。',
'COLLEGE_PASSED', '2025-01-03 11:30:00', 1, 1, '000000');
-- 2.3 王五的申请
INSERT INTO `jcbt_work_study_application`
(`id`, `position_id`, `position_name`, `position_type`, `work_location`, `planned_work_hours`,
`student_id`, `student_name`, `student_number`, `college_id`, `college_name`, `major_id`, `major_name`,
`grade`, `class_name`, `contact_phone`, `family_financial_status`, `application_reason`,
`personal_ability`, `time_arrangement`, `status`, `application_date`,
`college_review_status`, `college_review_time`, `college_reviewer_name`, `college_review_comment`,
`create_by`, `update_by`, `tenant_id`)
VALUES
(1736100000000000003, 1736000000000000003, '学生宿舍管理助理', 'SERVICE', '学生宿舍区', 20,
2000003, '王五', '2023003001', 1003, '管理学院', 2003, '工商管理', '2', '工商管理2023-2班',
'13900139003', 'GOOD', '希望通过宿舍管理工作提升组织协调能力和服务意识。',
'性格开朗,沟通能力强,有学生干部经验,能够胜任宿舍管理工作。',
'时间灵活,能够适应轮班制度,周末和晚上都有时间。',
'APPROVED', '2025-01-03 09:15:00',
'APPROVED', '2025-01-03 15:30:00', '赵老师', '学生综合素质优秀,适合宿舍管理工作。',
1, 1, '000000');
-246
View File
@@ -1,246 +0,0 @@
-- =====================================================
-- 微信JS-SDK配置初始化脚本
-- 版本: v1.0
-- 创建时间: 2025-01-03
-- 说明: 在sys_config表中添加微信相关配置项
-- =====================================================
-- 删除已存在的微信配置(避免重复)
-- DELETE FROM sys_config WHERE config_key IN ('wechat.app.id', 'wechat.app.secret');
-- 插入微信AppID配置
INSERT INTO sys_wechat_config (
config_name,
config_key,
config_value,
config_type,
remark,
create_by,
create_time,
update_by,
update_time,
tenant_id
) VALUES (
'微信公众号AppID',
'wechat.app.id',
'wx1234567890abcdef',
'Y',
'微信公众号的AppID,用于JS-SDK初始化配置',
1,
NOW(),
1,
NOW(),
'000000'
);
-- 插入微信AppSecret配置
INSERT INTO sys_wechat_config (
config_name,
config_key,
config_value,
config_type,
remark,
create_by,
create_time,
update_by,
update_time,
tenant_id
) VALUES (
'微信公众号AppSecret',
'wechat.app.secret',
'your_app_secret_here',
'Y',
'微信公众号的AppSecret,用于获取access_token和jsapi_ticket',
1,
NOW(),
1,
NOW(),
'000000'
);
-- 插入微信JS-SDK域名配置
INSERT INTO sys_wechat_config (
config_name,
config_key,
config_value,
config_type,
remark,
create_by,
create_time,
update_by,
update_time,
tenant_id
) VALUES (
'微信JS-SDK安全域名',
'wechat.js.domain',
'example.com',
'Y',
'微信JS-SDK的安全域名配置,需要在微信公众平台配置',
1,
NOW(),
1,
NOW(),
'000000'
);
-- 插入微信商户号配置(支付功能使用)
INSERT INTO sys_wechat_config (
config_name,
config_key,
config_value,
config_type,
remark,
create_by,
create_time,
update_by,
update_time,
tenant_id
) VALUES (
'微信商户号',
'wechat.mch.id',
'1234567890',
'Y',
'微信支付商户号,用于微信支付功能',
1,
NOW(),
1,
NOW(),
'000000'
);
-- 插入微信商户密钥配置(支付功能使用)
INSERT INTO sys_wechat_config (
config_name,
config_key,
config_value,
config_type,
remark,
create_by,
create_time,
update_by,
update_time,
tenant_id
) VALUES (
'微信商户密钥',
'wechat.mch.key',
'your_mch_key_here',
'Y',
'微信支付商户密钥,用于支付签名',
1,
NOW(),
1,
NOW(),
'000000'
);
-- 插入微信支付回调地址配置
INSERT INTO sys_wechat_config (
config_name,
config_key,
config_value,
config_type,
remark,
create_by,
create_time,
update_by,
update_time,
tenant_id
) VALUES (
'微信支付回调地址',
'wechat.pay.notify.url',
'https://example.com/api/wechat/pay/notify',
'Y',
'微信支付结果通知回调地址',
1,
NOW(),
1,
NOW(),
'000000'
);
-- 插入微信调试模式配置
INSERT INTO sys_wechat_config (
config_name,
config_key,
config_value,
config_type,
remark,
create_by,
create_time,
update_by,
update_time,
tenant_id
) VALUES (
'微信JS-SDK调试模式',
'wechat.debug.enabled',
'false',
'Y',
'微信JS-SDK调试模式开关,true开启,false关闭',
1,
NOW(),
1,
NOW(),
'000000'
);
-- 验证插入结果
SELECT config_name, config_key, config_value, remark
FROM sys_wechat_config
WHERE config_key LIKE 'wechat.%'
ORDER BY config_key;
-- =====================================================
-- 配置说明
-- =====================================================
--
-- 1. wechat.app.id: 微信公众号AppID
-- - 获取方式:微信公众平台 → 开发 → 基本配置
-- - 示例:wx1234567890abcdef
--
-- 2. wechat.app.secret: 微信公众号AppSecret
-- - 获取方式:微信公众平台 → 开发 → 基本配置
-- - 注意:AppSecret需要保密,不能暴露在前端
--
-- 3. wechat.js.domain: JS-SDK安全域名
-- - 配置方式:微信公众平台 → 设置 → 公众号设置 → 功能设置
-- - 示例:example.com(不包含http://)
--
-- 4. wechat.mch.id: 微信商户号
-- - 获取方式:微信支付商户平台
-- - 用途:微信支付功能
--
-- 5. wechat.mch.key: 微信商户密钥
-- - 获取方式:微信支付商户平台 → 账户中心 → API安全
-- - 用途:微信支付签名
--
-- 6. wechat.pay.notify.url: 支付回调地址
-- - 说明:微信支付结果通知地址
-- - 要求:必须是HTTPS地址
--
-- 7. wechat.debug.enabled: 调试模式
-- - 说明:开发环境建议开启,生产环境关闭
-- - 值:true/false
--
-- =====================================================
-- 部署说明
-- =====================================================
--
-- 1. 生产环境部署前,请修改以下配置:
-- - wechat.app.id: 替换为真实的微信AppID
-- - wechat.app.secret: 替换为真实的微信AppSecret
-- - wechat.js.domain: 替换为实际的域名
-- - wechat.mch.id: 替换为真实的商户号(如需支付功能)
-- - wechat.mch.key: 替换为真实的商户密钥(如需支付功能)
-- - wechat.pay.notify.url: 替换为实际的回调地址
--
-- 2. 微信公众平台配置:
-- - 配置JS接口安全域名
-- - 开通所需的接口权限
-- - 配置服务器白名单(如需要)
--
-- 3. 安全建议:
-- - AppSecret和商户密钥需要定期更新
-- - 生产环境关闭调试模式
-- - 使用HTTPS协议
--
-- =====================================================
-92
View File
@@ -1,92 +0,0 @@
-- =====================================================
-- 勤工俭学管理系统字典数据脚本
-- 项目: 校园管理系统 - 勤工俭学模块
-- 版本: v1.0
-- 创建时间: 2025-01-03
-- 说明: 适配现有系统字典表结构
-- =====================================================
-- 设置字符集
SET NAMES utf8mb4;
-- =====================================================
-- 1. 插入字典类型数据
-- =====================================================
-- 1.1 岗位状态字典类型
INSERT INTO `sys_dict_type` (`dict_id`, `dict_name`, `dict_type`, `create_by`, `create_time`, `remark`)
VALUES (1736000001, '勤工俭学岗位状态', 'work_study_position_status', 1, NOW(), '勤工俭学岗位状态字典');
-- 1.2 申请状态字典类型
INSERT INTO `sys_dict_type` (`dict_id`, `dict_name`, `dict_type`, `create_by`, `create_time`, `remark`)
VALUES (1736000002, '勤工俭学申请状态', 'work_study_application_status', 1, NOW(), '勤工俭学申请状态字典');
-- 1.3 审核状态字典类型
INSERT INTO `sys_dict_type` (`dict_id`, `dict_name`, `dict_type`, `create_by`, `create_time`, `remark`)
VALUES (1736000003, '勤工俭学审核状态', 'work_study_review_status', 1, NOW(), '勤工俭学审核状态字典');
-- 1.4 岗位发布范围字典类型
INSERT INTO `sys_dict_type` (`dict_id`, `dict_name`, `dict_type`, `create_by`, `create_time`, `remark`)
VALUES (1736000004, '勤工俭学岗位发布范围', 'work_study_position_scope', 1, NOW(), '勤工俭学岗位发布范围字典');
-- =====================================================
-- 2. 检查字典数据表结构
-- =====================================================
-- 先检查sys_dict_data表结构
-- DESC sys_dict_data;
-- =====================================================
-- 3. 插入字典数据(需要根据实际表结构调整)
-- =====================================================
-- 查看现有字典数据样例来确定正确的字段结构
SELECT * FROM sys_dict_data LIMIT 1;
-- =====================================================
-- 4. 预留字典数据插入区域
-- =====================================================
-- 4.1 岗位状态字典数据(待确认表结构后插入)
/*
草稿(DRAFT), 已发布(PUBLISHED), 招录中(RECRUITING),
已满员(FULL), 已过期(EXPIRED), 已暂停(SUSPENDED), 已取消(CANCELLED)
*/
-- 4.2 申请状态字典数据(待确认表结构后插入)
/*
草稿(DRAFT), 已提交(SUBMITTED), 学院审核中(COLLEGE_REVIEWING),
学院审核通过(COLLEGE_PASSED), 学院审核不通过(COLLEGE_REJECTED),
学生处审核中(FINAL_REVIEWING), 审核通过(APPROVED),
审核不通过(REJECTED), 已撤回(WITHDRAWN)
*/
-- 4.3 审核状态字典数据(待确认表结构后插入)
/*
待审核(PENDING), 审核通过(PASSED), 审核不通过(REJECTED)
*/
-- 4.4 岗位发布范围字典数据(待确认表结构后插入)
/*
本学院(COLLEGE), 全校(UNIVERSITY)
*/
-- =====================================================
-- 5. 查询验证字典类型数据
-- =====================================================
SELECT
dict_name as '字典名称',
dict_type as '字典类型',
create_time as '创建时间',
remark as '备注'
FROM sys_dict_type
WHERE dict_type LIKE 'work_study%'
ORDER BY dict_id;
-- =====================================================
-- 6. 脚本执行完成提示
-- =====================================================
SELECT 'JCBT勤工俭学模块字典类型数据插入完成!' AS '执行结果';
SELECT
(SELECT COUNT(*) FROM sys_dict_type WHERE dict_type LIKE 'work_study%') AS '字典类型数量';
@@ -1,211 +0,0 @@
-- =====================================================
-- 勤工俭学管理系统完整字典数据脚本
-- 项目: 校园管理系统 - 勤工俭学模块
-- 版本: v1.0
-- 创建时间: 2025-01-03
-- 说明: 基于实际字典表结构的完整字典数据
-- =====================================================
-- 设置字符集
SET NAMES utf8mb4;
-- =====================================================
-- 1. 岗位状态字典数据
-- =====================================================
-- 1.1 草稿
INSERT INTO `sys_dict_data`
(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`)
VALUES
(1736001001, '000000', 1, '草稿', 'DRAFT', 'work_study_position_status', '', 'info', 'N', 103, 1, NOW(), '岗位创建但未发布');
-- 1.2 已发布
INSERT INTO `sys_dict_data`
(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`)
VALUES
(1736001002, '000000', 2, '已发布', 'PUBLISHED', 'work_study_position_status', '', 'primary', 'N', 103, 1, NOW(), '岗位已发布但未开始招录');
-- 1.3 招录中
INSERT INTO `sys_dict_data`
(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`)
VALUES
(1736001003, '000000', 3, '招录中', 'RECRUITING', 'work_study_position_status', '', 'success', 'Y', 103, 1, NOW(), '岗位正在招录学生');
-- 1.4 已满员
INSERT INTO `sys_dict_data`
(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`)
VALUES
(1736001004, '000000', 4, '已满员', 'FULL', 'work_study_position_status', '', 'warning', 'N', 103, 1, NOW(), '岗位申请人数已满');
-- 1.5 已过期
INSERT INTO `sys_dict_data`
(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`)
VALUES
(1736001005, '000000', 5, '已过期', 'EXPIRED', 'work_study_position_status', '', 'danger', 'N', 103, 1, NOW(), '岗位已过有效期');
-- 1.6 已暂停
INSERT INTO `sys_dict_data`
(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`)
VALUES
(1736001006, '000000', 6, '已暂停', 'SUSPENDED', 'work_study_position_status', '', 'info', 'N', 103, 1, NOW(), '岗位暂时停止招录');
-- 1.7 已取消
INSERT INTO `sys_dict_data`
(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`)
VALUES
(1736001007, '000000', 7, '已取消', 'CANCELLED', 'work_study_position_status', '', 'danger', 'N', 103, 1, NOW(), '岗位被取消');
-- =====================================================
-- 2. 申请状态字典数据
-- =====================================================
-- 2.1 草稿
INSERT INTO `sys_dict_data`
(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`)
VALUES
(1736002001, '000000', 1, '草稿', 'DRAFT', 'work_study_application_status', '', 'info', 'N', 103, 1, NOW(), '申请暂存未提交');
-- 2.2 已提交
INSERT INTO `sys_dict_data`
(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`)
VALUES
(1736002002, '000000', 2, '已提交', 'SUBMITTED', 'work_study_application_status', '', 'primary', 'Y', 103, 1, NOW(), '申请已提交,等待学院审核');
-- 2.3 学院审核中
INSERT INTO `sys_dict_data`
(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`)
VALUES
(1736002003, '000000', 3, '学院审核中', 'COLLEGE_REVIEWING', 'work_study_application_status', '', 'primary', 'N', 103, 1, NOW(), '二级学院正在审核');
-- 2.4 学院审核通过
INSERT INTO `sys_dict_data`
(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`)
VALUES
(1736002004, '000000', 4, '学院审核通过', 'COLLEGE_PASSED', 'work_study_application_status', '', 'success', 'N', 103, 1, NOW(), '学院审核通过,待学生处审核');
-- 2.5 学院审核不通过
INSERT INTO `sys_dict_data`
(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`)
VALUES
(1736002005, '000000', 5, '学院审核不通过', 'COLLEGE_REJECTED', 'work_study_application_status', '', 'danger', 'N', 103, 1, NOW(), '学院审核未通过');
-- 2.6 学生处审核中
INSERT INTO `sys_dict_data`
(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`)
VALUES
(1736002006, '000000', 6, '学生处审核中', 'FINAL_REVIEWING', 'work_study_application_status', '', 'warning', 'N', 103, 1, NOW(), '学生处正在终审');
-- 2.7 审核通过
INSERT INTO `sys_dict_data`
(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`)
VALUES
(1736002007, '000000', 7, '审核通过', 'APPROVED', 'work_study_application_status', '', 'success', 'N', 103, 1, NOW(), '最终审核通过');
-- 2.8 审核不通过
INSERT INTO `sys_dict_data`
(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`)
VALUES
(1736002008, '000000', 8, '审核不通过', 'REJECTED', 'work_study_application_status', '', 'danger', 'N', 103, 1, NOW(), '最终审核未通过');
-- 2.9 已撤回
INSERT INTO `sys_dict_data`
(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`)
VALUES
(1736002009, '000000', 9, '已撤回', 'WITHDRAWN', 'work_study_application_status', '', 'info', 'N', 103, 1, NOW(), '学生主动撤回申请');
-- =====================================================
-- 3. 审核状态字典数据
-- =====================================================
-- 3.1 待审核
INSERT INTO `sys_dict_data`
(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`)
VALUES
(1736003001, '000000', 1, '待审核', 'PENDING', 'work_study_review_status', '', 'warning', 'Y', 103, 1, NOW(), '等待审核');
-- 3.2 审核通过
INSERT INTO `sys_dict_data`
(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`)
VALUES
(1736003002, '000000', 2, '审核通过', 'PASSED', 'work_study_review_status', '', 'success', 'N', 103, 1, NOW(), '审核通过');
-- 3.3 审核不通过
INSERT INTO `sys_dict_data`
(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`)
VALUES
(1736003003, '000000', 3, '审核不通过', 'REJECTED', 'work_study_review_status', '', 'danger', 'N', 103, 1, NOW(), '审核不通过');
-- =====================================================
-- 4. 岗位发布范围字典数据
-- =====================================================
-- 4.1 本学院
INSERT INTO `sys_dict_data`
(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`)
VALUES
(1736004001, '000000', 1, '本学院', 'COLLEGE', 'work_study_position_scope', '', 'primary', 'Y', 103, 1, NOW(), '仅本学院学生可见和申请');
-- 4.2 全校
INSERT INTO `sys_dict_data`
(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`)
VALUES
(1736004002, '000000', 2, '全校', 'UNIVERSITY', 'work_study_position_scope', '', 'success', 'N', 103, 1, NOW(), '所有学生可见和申请');
-- =====================================================
-- 5. 查询验证字典数据
-- =====================================================
-- 5.1 查询岗位状态字典
SELECT
dict_label as '标签',
dict_value as '值',
dict_type as '字典类型',
list_class as '样式',
remark as '说明'
FROM sys_dict_data
WHERE dict_type = 'work_study_position_status'
ORDER BY dict_sort;
-- 5.2 查询申请状态字典
SELECT
dict_label as '标签',
dict_value as '值',
dict_type as '字典类型',
list_class as '样式',
remark as '说明'
FROM sys_dict_data
WHERE dict_type = 'work_study_application_status'
ORDER BY dict_sort;
-- 5.3 查询审核状态字典
SELECT
dict_label as '标签',
dict_value as '值',
dict_type as '字典类型',
list_class as '样式',
remark as '说明'
FROM sys_dict_data
WHERE dict_type = 'work_study_review_status'
ORDER BY dict_sort;
-- 5.4 查询发布范围字典
SELECT
dict_label as '标签',
dict_value as '值',
dict_type as '字典类型',
list_class as '样式',
remark as '说明'
FROM sys_dict_data
WHERE dict_type = 'work_study_position_scope'
ORDER BY dict_sort;
-- =====================================================
-- 6. 脚本执行完成提示
-- =====================================================
SELECT 'JCBT勤工俭学模块完整字典数据插入完成!' AS '执行结果';
SELECT
(SELECT COUNT(*) FROM sys_dict_data WHERE dict_type LIKE 'work_study%') AS '字典数据总数',
(SELECT COUNT(*) FROM sys_dict_data WHERE dict_type = 'work_study_position_status') AS '岗位状态数量',
(SELECT COUNT(*) FROM sys_dict_data WHERE dict_type = 'work_study_application_status') AS '申请状态数量',
(SELECT COUNT(*) FROM sys_dict_data WHERE dict_type = 'work_study_review_status') AS '审核状态数量',
(SELECT COUNT(*) FROM sys_dict_data WHERE dict_type = 'work_study_position_scope') AS '发布范围数量';
@@ -1,269 +0,0 @@
-- =====================================================
-- 勤工俭学管理系统数据库建表脚本
-- 项目: 校园管理系统 - 勤工俭学模块
-- 版本: 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';
-193
View File
@@ -1,193 +0,0 @@
-- =====================================================
-- 勤工俭学管理系统测试数据脚本
-- 项目: 校园管理系统 - 勤工俭学模块
-- 版本: v1.0
-- 创建时间: 2025-01-03
-- =====================================================
-- 设置字符集
SET NAMES utf8mb4;
-- =====================================================
-- 1. 插入测试岗位数据
-- =====================================================
-- 1.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');
-- 1.2 实验室设备维护岗位
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
(1736000000000000002, '实验室设备维护', 'COLLEGE', 2, '周三、周五 16:00-18:00', '2025-01-03', '2025-05-31',
'1. 理工科专业学生\n2. 有基础的设备维护经验\n3. 动手能力强\n4. 能吃苦耐劳',
'每小时18元,有技术补贴', '李老师', '13800138002',
1002, '理学院', 'RECRUITING', 1, 1, '000000');
-- 1.3 学生宿舍管理助理岗位
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
(1736000000000000003, '学生宿舍管理助理', 'UNIVERSITY', 8, '周一至周日轮班,每次4小时', '2025-01-03', '2025-07-31',
'1. 品行端正,无违纪记录\n2. 沟通能力强\n3. 能适应轮班工作\n4. 有服务意识',
'每小时12元,夜班有补贴', '王老师', '13800138003',
1003, '学生处', 'RECRUITING', 1, 1, '000000');
-- 1.4 教学助理岗位
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
(1736000000000000004, '教学助理', 'COLLEGE', 3, '周二、周四 10:00-12:00', '2025-01-03', '2025-06-15',
'1. 本专业学生\n2. 学习成绩优秀\n3. 表达能力强\n4. 有耐心和责任心',
'每小时20元,期末有奖励', '赵老师', '13800138004',
1001, '文学院', 'RECRUITING', 1, 1, '000000');
-- 1.5 校园网络维护岗位
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
(1736000000000000005, '校园网络维护', 'UNIVERSITY', 4, '周一至周五随时待命', '2025-01-03', '2025-12-31',
'1. 计算机相关专业\n2. 熟悉网络技术\n3. 能够解决常见网络问题\n4. 工作时间灵活',
'每小时25元,紧急出勤有额外补贴', '孙老师', '13800138005',
1004, '信息学院', 'RECRUITING', 1, 1, '000000');
-- =====================================================
-- 2. 插入测试申请数据
-- =====================================================
-- 2.1 张三申请图书馆助理管理员
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');
-- 2.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
(1736000000000000102, 1736000000000000002, '实验室设备维护', 2002001, '李四', '2023002001',
1002, '理学院', '物理学', '2023', '物理学1班', '13900139002', 'lisi@example.com',
'我是物理专业学生,对实验设备比较了解,有维修电子设备的经验,希望能申请这个岗位。',
'SUBMITTED', '2025-01-03 10:00:00', 2002001, 2002001, '000000');
-- 2.3 王五申请学生宿舍管理助理
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
(1736000000000000103, 1736000000000000003, '学生宿舍管理助理', 2003001, '王五', '2023003001',
1004, '管理学院', '工商管理', '2023', '工商管理1班', '13900139003', 'wangwu@example.com',
'我性格开朗,善于与人沟通,希望能为同学们的宿舍生活提供帮助,同时锻炼自己的管理能力。',
'SUBMITTED', '2025-01-03 11:00:00', 2003001, 2003001, '000000');
-- 2.4 赵六申请教学助理
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
(1736000000000000104, 1736000000000000004, '教学助理', 2001002, '赵六', '2023001002',
1001, '文学院', '汉语言文学', '2023', '汉语言文学2班', '13900139004', 'zhaoliu@example.com',
'我的学习成绩优秀,有良好的表达能力,希望能帮助老师进行教学工作,同时提升自己的能力。',
'COLLEGE_REVIEWING', '2025-01-03 12:00:00', 2001002, 2001002, '000000');
-- 2.5 孙七申请校园网络维护
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`, `college_review_status`, `college_review_time`,
`college_reviewer_id`, `college_reviewer_name`, `college_review_comment`,
`create_by`, `update_by`, `tenant_id`)
VALUES
(1736000000000000105, 1736000000000000005, '校园网络维护', 2004001, '孙七', '2023004001',
1004, '信息学院', '计算机科学与技术', '2023', '计算机1班', '13900139005', 'sunqi@example.com',
'我是计算机专业学生,熟悉网络技术,有实际网络维护经验,能够解决各种网络问题。',
'COLLEGE_PASSED', '2025-01-03 13:00:00', 'PASSED', '2025-01-03 15:00:00',
3001, '信息学院审核老师', '该学生专业技能扎实,推荐通过。',
2004001, 2004001, '000000');
-- 2.6 周八申请图书馆助理管理员(已审核通过)
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`,
`college_review_status`, `college_review_time`, `college_reviewer_id`, `college_reviewer_name`, `college_review_comment`,
`final_review_status`, `final_review_time`, `final_reviewer_id`, `final_reviewer_name`, `final_review_comment`,
`work_start_date`, `work_end_date`,
`create_by`, `update_by`, `tenant_id`)
VALUES
(1736000000000000106, 1736000000000000001, '图书馆助理管理员', 2002002, '周八', '2023002002',
1002, '理学院', '数学与应用数学', '2023', '数学1班', '13900139006', 'zhouba@example.com',
'我有良好的组织能力和服务意识,希望能在图书馆为同学们提供优质服务。',
'APPROVED', '2025-01-02 14:00:00',
'PASSED', '2025-01-02 16:00:00', 3002, '理学院审核老师', '学生表现优秀,同意申请。',
'PASSED', '2025-01-02 18:00:00', 4001, '学生处终审老师', '经终审,同意该学生申请。',
'2025-01-05', '2025-06-30',
2002002, 2002002, '000000');
-- =====================================================
-- 3. 更新岗位当前申请通过人数
-- =====================================================
-- 更新图书馆助理管理员岗位的当前人数
UPDATE `jcbt_work_study_position`
SET `current_count` = 1, `update_time` = NOW()
WHERE `id` = 1736000000000000001;
-- =====================================================
-- 4. 查询验证数据
-- =====================================================
-- 4.1 查询岗位数据
SELECT
position_name as '岗位名称',
position_scope as '发布范围',
required_count as '需求人数',
current_count as '当前人数',
status as '状态',
college_name as '发布学院'
FROM jcbt_work_study_position
WHERE deleted = 0;
-- 4.2 查询申请数据
SELECT
student_name as '学生姓名',
position_name as '申请岗位',
status as '申请状态',
college_name as '学生学院',
application_date as '申请时间'
FROM jcbt_work_study_application
WHERE deleted = 0
ORDER BY application_date;
-- =====================================================
-- 5. 脚本执行完成提示
-- =====================================================
SELECT 'JCBT勤工俭学模块测试数据插入完成!' AS '执行结果';
SELECT
(SELECT COUNT(*) FROM jcbt_work_study_position WHERE deleted = 0) AS '岗位数量',
(SELECT COUNT(*) FROM jcbt_work_study_application WHERE deleted = 0) AS '申请数量';