wuzhen update
This commit is contained in:
1 parent
bab7b53074
commit
a2222f63cb
284 files changed
+48629
-3473
No files matched your search
@@ -0,0 +1,75 @@
|
||||
-- ===============================================
|
||||
-- 奖学金申请管理模块 v2.0 数据字典配置脚本
|
||||
-- ===============================================
|
||||
|
||||
USE hzdyjs_xg;
|
||||
|
||||
-- =====================================================
|
||||
-- 数据字典配置 (使用正确的ID值)
|
||||
-- =====================================================
|
||||
|
||||
-- 1. 申请人类型字典
|
||||
INSERT INTO sys_dict_type (dict_id, dict_name, dict_type, tenant_id, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
VALUES (2000000000000000015, '申请人类型', 'applicant_type', '000000', NULL, 1, NOW(), 1, NOW(), '奖学金申请人类型')
|
||||
ON DUPLICATE KEY UPDATE update_time = NOW();
|
||||
|
||||
INSERT INTO sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, tenant_id, create_dept, create_by, create_time, update_by, update_time, remark) VALUES
|
||||
(3000000000000000014, 1, '学生申请', 'STUDENT', 'applicant_type', '', 'primary', 'N', '000000', NULL, 1, NOW(), 1, NOW(), '学生自主申请'),
|
||||
(3000000000000000015, 2, '教师代申请', 'TEACHER', 'applicant_type', '', 'success', 'Y', '000000', NULL, 1, NOW(), 1, NOW(), '班主任代学生申请')
|
||||
ON DUPLICATE KEY UPDATE update_time = NOW();
|
||||
|
||||
-- 2. 申请类型字典更新 (检查是否已存在)
|
||||
INSERT INTO sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, tenant_id, create_dept, create_by, create_time, update_by, update_time, remark) VALUES
|
||||
(3000000000000000016, 1, '教师推荐', 'TEACHER_RECOMMEND', 'application_type', '', 'success', 'Y', '000000', NULL, 1, NOW(), 1, NOW(), '班主任推荐申请'),
|
||||
(3000000000000000017, 2, '自动评定', 'AUTO', 'application_type', '', 'info', 'N', '000000', NULL, 1, NOW(), 1, NOW(), '系统自动评定'),
|
||||
(3000000000000000018, 3, '直接指定', 'DIRECT', 'application_type', '', 'warning', 'N', '000000', NULL, 1, NOW(), 1, NOW(), '管理员直接指定')
|
||||
ON DUPLICATE KEY UPDATE update_time = NOW();
|
||||
|
||||
-- 3. 名额类型字典
|
||||
INSERT INTO sys_dict_type (dict_id, dict_name, dict_type, tenant_id, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
VALUES (2000000000000000016, '名额类型', 'quota_type', '000000', NULL, 1, NOW(), 1, NOW(), '奖学金名额分配类型')
|
||||
ON DUPLICATE KEY UPDATE update_time = NOW();
|
||||
|
||||
INSERT INTO sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, tenant_id, create_dept, create_by, create_time, update_by, update_time, remark) VALUES
|
||||
(3000000000000000019, 1, '班级名额', 'CLASS', 'quota_type', '', 'primary', 'Y', '000000', NULL, 1, NOW(), 1, NOW(), '班级级别名额'),
|
||||
(3000000000000000020, 2, '学院名额', 'DEPT', 'quota_type', '', 'success', 'N', '000000', NULL, 1, NOW(), 1, NOW(), '学院级别名额'),
|
||||
(3000000000000000021, 3, '全校名额', 'UNIVERSITY', 'quota_type', '', 'info', 'N', '000000', NULL, 1, NOW(), 1, NOW(), '全校级别名额')
|
||||
ON DUPLICATE KEY UPDATE update_time = NOW();
|
||||
|
||||
-- 4. 操作类型字典
|
||||
INSERT INTO sys_dict_type (dict_id, dict_name, dict_type, tenant_id, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
VALUES (2000000000000000017, '名额操作类型', 'quota_operation_type', '000000', NULL, 1, NOW(), 1, NOW(), '名额使用操作类型')
|
||||
ON DUPLICATE KEY UPDATE update_time = NOW();
|
||||
|
||||
INSERT INTO sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, tenant_id, create_dept, create_by, create_time, update_by, update_time, remark) VALUES
|
||||
(3000000000000000022, 1, '使用名额', 'USE', 'quota_operation_type', '', 'success', 'Y', '000000', NULL, 1, NOW(), 1, NOW(), '申请时使用名额'),
|
||||
(3000000000000000023, 2, '释放名额', 'RELEASE', 'quota_operation_type', '', 'warning', 'N', '000000', NULL, 1, NOW(), 1, NOW(), '撤回申请时释放名额')
|
||||
ON DUPLICATE KEY UPDATE update_time = NOW();
|
||||
|
||||
-- 5. 上传者类型字典
|
||||
INSERT INTO sys_dict_type (dict_id, dict_name, dict_type, tenant_id, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
VALUES (2000000000000000018, '材料上传者类型', 'uploader_type', '000000', NULL, 1, NOW(), 1, NOW(), '申请材料上传者类型')
|
||||
ON DUPLICATE KEY UPDATE update_time = NOW();
|
||||
|
||||
INSERT INTO sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, tenant_id, create_dept, create_by, create_time, update_by, update_time, remark) VALUES
|
||||
(3000000000000000024, 1, '学生上传', 'STUDENT', 'uploader_type', '', 'primary', 'N', '000000', NULL, 1, NOW(), 1, NOW(), '学生自行上传'),
|
||||
(3000000000000000025, 2, '教师上传', 'TEACHER', 'uploader_type', '', 'success', 'Y', '000000', NULL, 1, NOW(), 1, NOW(), '班主任代为上传')
|
||||
ON DUPLICATE KEY UPDATE update_time = NOW();
|
||||
|
||||
-- =====================================================
|
||||
-- 验证数据字典配置
|
||||
-- =====================================================
|
||||
|
||||
SELECT '=== 新增数据字典类型 ===' as info;
|
||||
SELECT dict_id, dict_name, dict_type
|
||||
FROM sys_dict_type
|
||||
WHERE dict_type IN ('applicant_type', 'quota_type', 'quota_operation_type', 'uploader_type');
|
||||
|
||||
SELECT '=== 新增数据字典数据 ===' as info;
|
||||
SELECT dt.dict_name, dd.dict_label, dd.dict_value, dd.dict_type
|
||||
FROM sys_dict_type dt
|
||||
JOIN sys_dict_data dd ON dt.dict_type = dd.dict_type
|
||||
WHERE dt.dict_type IN ('applicant_type', 'quota_type', 'quota_operation_type', 'uploader_type')
|
||||
ORDER BY dt.dict_type, dd.dict_sort;
|
||||
|
||||
SELECT '=== 数据字典配置完成 ===' as info;
|
||||
@@ -0,0 +1,64 @@
|
||||
-- ===============================================
|
||||
-- 奖学金申请列表数据修复脚本
|
||||
-- 修复时间:2025-01-26
|
||||
-- 修复内容:将错误的申请类型值从 'RECOMMEND' 修复为 'TEACHER_RECOMMEND'
|
||||
-- ===============================================
|
||||
|
||||
USE hzdyjs_xg;
|
||||
|
||||
-- =====================================================
|
||||
-- 1. 查看当前错误数据
|
||||
-- =====================================================
|
||||
SELECT '=== 修复前数据检查 ===' as info;
|
||||
SELECT
|
||||
COUNT(*) as total_count,
|
||||
application_type,
|
||||
current_status
|
||||
FROM jcbt_scholarship_application
|
||||
WHERE application_type = 'RECOMMEND'
|
||||
GROUP BY application_type, current_status;
|
||||
|
||||
-- =====================================================
|
||||
-- 2. 修复申请类型数据
|
||||
-- =====================================================
|
||||
SELECT '=== 开始修复申请类型数据 ===' as info;
|
||||
|
||||
UPDATE jcbt_scholarship_application
|
||||
SET
|
||||
application_type = 'TEACHER_RECOMMEND',
|
||||
update_time = NOW(),
|
||||
update_by = 1
|
||||
WHERE application_type = 'RECOMMEND';
|
||||
|
||||
-- 显示修复结果
|
||||
SELECT ROW_COUNT() as '修复记录数';
|
||||
|
||||
-- =====================================================
|
||||
-- 3. 验证修复结果
|
||||
-- =====================================================
|
||||
SELECT '=== 修复后数据验证 ===' as info;
|
||||
|
||||
-- 验证不应该再有 'RECOMMEND' 类型的数据
|
||||
SELECT
|
||||
COUNT(*) as should_be_zero
|
||||
FROM jcbt_scholarship_application
|
||||
WHERE application_type = 'RECOMMEND';
|
||||
|
||||
-- 验证 'TEACHER_RECOMMEND' 类型的数据
|
||||
SELECT
|
||||
COUNT(*) as teacher_recommend_count,
|
||||
current_status
|
||||
FROM jcbt_scholarship_application
|
||||
WHERE application_type = 'TEACHER_RECOMMEND'
|
||||
GROUP BY current_status;
|
||||
|
||||
-- 显示所有申请类型的分布情况
|
||||
SELECT
|
||||
application_type,
|
||||
COUNT(*) as count,
|
||||
current_status
|
||||
FROM jcbt_scholarship_application
|
||||
GROUP BY application_type, current_status
|
||||
ORDER BY application_type, current_status;
|
||||
|
||||
SELECT '=== 数据修复完成 ===' as info;
|
||||
@@ -0,0 +1,70 @@
|
||||
-- 奖学金申请数据检查脚本
|
||||
-- 创建时间: 2025-01-26 23:45:00
|
||||
-- 用途: 检查前台无法显示申请数据的原因
|
||||
|
||||
-- 1. 检查表中总数据量
|
||||
SELECT '总申请记录数:' as description, COUNT(*) as count FROM jcbt_scholarship_application;
|
||||
|
||||
-- 2. 检查deleted字段的分布
|
||||
SELECT '按删除状态分布:' as description, deleted, COUNT(*) as count
|
||||
FROM jcbt_scholarship_application
|
||||
GROUP BY deleted;
|
||||
|
||||
-- 3. 检查申请类型分布
|
||||
SELECT '按申请类型分布:' as description, application_type, COUNT(*) as count
|
||||
FROM jcbt_scholarship_application
|
||||
GROUP BY application_type;
|
||||
|
||||
-- 4. 检查申请状态分布
|
||||
SELECT '按申请状态分布:' as description, current_status, COUNT(*) as count
|
||||
FROM jcbt_scholarship_application
|
||||
GROUP BY current_status;
|
||||
|
||||
-- 5. 检查tenant_id分布(多租户)
|
||||
SELECT '按租户ID分布:' as description, tenant_id, COUNT(*) as count
|
||||
FROM jcbt_scholarship_application
|
||||
GROUP BY tenant_id;
|
||||
|
||||
-- 6. 检查最近的申请记录(前10条)
|
||||
SELECT '最近申请记录:' as description,
|
||||
id, student_name, application_type, current_status, deleted, tenant_id, create_time
|
||||
FROM jcbt_scholarship_application
|
||||
WHERE deleted = 0
|
||||
ORDER BY create_time DESC
|
||||
LIMIT 10;
|
||||
|
||||
-- 7. 检查是否有RECOMMEND类型的记录(应该被修复为TEACHER_RECOMMEND)
|
||||
SELECT '未修复的RECOMMEND记录:' as description, COUNT(*) as count
|
||||
FROM jcbt_scholarship_application
|
||||
WHERE application_type = 'RECOMMEND';
|
||||
|
||||
-- 8. 检查符合前台查询条件的记录(未删除+正确的申请类型)
|
||||
SELECT '符合前台查询条件的记录:' as description, COUNT(*) as count
|
||||
FROM jcbt_scholarship_application
|
||||
WHERE deleted = 0
|
||||
AND application_type IN ('TEACHER_RECOMMEND', 'STUDENT', 'AUTO', 'DIRECT');
|
||||
|
||||
-- 9. 详细查看符合条件的记录
|
||||
SELECT
|
||||
id,
|
||||
student_name,
|
||||
application_type,
|
||||
current_status,
|
||||
tenant_id,
|
||||
deleted,
|
||||
create_time,
|
||||
update_time
|
||||
FROM jcbt_scholarship_application
|
||||
WHERE deleted = 0
|
||||
AND application_type IN ('TEACHER_RECOMMEND', 'STUDENT', 'AUTO', 'DIRECT')
|
||||
ORDER BY create_time DESC
|
||||
LIMIT 5;
|
||||
|
||||
-- 10. 检查字段是否存在NULL值
|
||||
SELECT
|
||||
'字段NULL值检查:' as description,
|
||||
SUM(CASE WHEN student_name IS NULL THEN 1 ELSE 0 END) as null_student_name,
|
||||
SUM(CASE WHEN application_type IS NULL THEN 1 ELSE 0 END) as null_application_type,
|
||||
SUM(CASE WHEN current_status IS NULL THEN 1 ELSE 0 END) as null_current_status,
|
||||
SUM(CASE WHEN tenant_id IS NULL THEN 1 ELSE 0 END) as null_tenant_id
|
||||
FROM jcbt_scholarship_application;
|
||||
@@ -0,0 +1,423 @@
|
||||
-- ===============================================
|
||||
-- 奖学金申请管理模块 v2.0 数据库升级脚本 (修复版)
|
||||
-- 基于班主任代申请模式的数据结构调整
|
||||
-- ===============================================
|
||||
|
||||
USE hzdyjs_xg;
|
||||
|
||||
-- =====================================================
|
||||
-- 1. 申请记录表结构调整
|
||||
-- =====================================================
|
||||
|
||||
-- 1.1 添加申请人相关字段 (检查字段是否存在)
|
||||
SET @column_exists = (
|
||||
SELECT COUNT(*)
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
|
||||
AND TABLE_NAME = 'jcbt_scholarship_application'
|
||||
AND COLUMN_NAME = 'applicant_type'
|
||||
);
|
||||
|
||||
SET @sql = IF(@column_exists = 0,
|
||||
'ALTER TABLE jcbt_scholarship_application ADD COLUMN `applicant_type` VARCHAR(20) DEFAULT "TEACHER" COMMENT "申请人类型:STUDENT-学生申请,TEACHER-教师代申请"',
|
||||
'SELECT "applicant_type column already exists" as info'
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @column_exists = (
|
||||
SELECT COUNT(*)
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
|
||||
AND TABLE_NAME = 'jcbt_scholarship_application'
|
||||
AND COLUMN_NAME = 'applicant_id'
|
||||
);
|
||||
|
||||
SET @sql = IF(@column_exists = 0,
|
||||
'ALTER TABLE jcbt_scholarship_application ADD COLUMN `applicant_id` BIGINT(20) DEFAULT NULL COMMENT "申请人ID(班主任ID)"',
|
||||
'SELECT "applicant_id column already exists" as info'
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @column_exists = (
|
||||
SELECT COUNT(*)
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
|
||||
AND TABLE_NAME = 'jcbt_scholarship_application'
|
||||
AND COLUMN_NAME = 'applicant_name'
|
||||
);
|
||||
|
||||
SET @sql = IF(@column_exists = 0,
|
||||
'ALTER TABLE jcbt_scholarship_application ADD COLUMN `applicant_name` VARCHAR(100) DEFAULT NULL COMMENT "申请人姓名(班主任姓名)"',
|
||||
'SELECT "applicant_name column already exists" as info'
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 1.2 修改申请类型枚举值注释
|
||||
ALTER TABLE jcbt_scholarship_application
|
||||
MODIFY COLUMN `application_type` VARCHAR(20) NOT NULL
|
||||
COMMENT '申请类型:TEACHER_RECOMMEND-教师推荐,AUTO-自动评定,DIRECT-直接指定';
|
||||
|
||||
-- 1.3 添加班级和申请人相关索引 (检查索引是否存在)
|
||||
SET @index_exists = (
|
||||
SELECT COUNT(*)
|
||||
FROM INFORMATION_SCHEMA.STATISTICS
|
||||
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
|
||||
AND TABLE_NAME = 'jcbt_scholarship_application'
|
||||
AND INDEX_NAME = 'idx_class_batch'
|
||||
);
|
||||
|
||||
SET @sql = IF(@index_exists = 0,
|
||||
'CREATE INDEX idx_class_batch ON jcbt_scholarship_application(class_id, batch_id)',
|
||||
'SELECT "idx_class_batch index already exists" as info'
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @index_exists = (
|
||||
SELECT COUNT(*)
|
||||
FROM INFORMATION_SCHEMA.STATISTICS
|
||||
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
|
||||
AND TABLE_NAME = 'jcbt_scholarship_application'
|
||||
AND INDEX_NAME = 'idx_applicant_batch'
|
||||
);
|
||||
|
||||
SET @sql = IF(@index_exists = 0,
|
||||
'CREATE INDEX idx_applicant_batch ON jcbt_scholarship_application(applicant_id, batch_id)',
|
||||
'SELECT "idx_applicant_batch index already exists" as info'
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @index_exists = (
|
||||
SELECT COUNT(*)
|
||||
FROM INFORMATION_SCHEMA.STATISTICS
|
||||
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
|
||||
AND TABLE_NAME = 'jcbt_scholarship_application'
|
||||
AND INDEX_NAME = 'idx_applicant_type'
|
||||
);
|
||||
|
||||
SET @sql = IF(@index_exists = 0,
|
||||
'CREATE INDEX idx_applicant_type ON jcbt_scholarship_application(applicant_type, applicant_id)',
|
||||
'SELECT "idx_applicant_type index already exists" as info'
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- =====================================================
|
||||
-- 2. 班级名额分配表
|
||||
-- =====================================================
|
||||
|
||||
-- 2.1 创建班级名额分配表
|
||||
DROP TABLE IF EXISTS `jcbt_scholarship_class_quota`;
|
||||
CREATE TABLE jcbt_scholarship_class_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',
|
||||
dept_id BIGINT(20) NOT NULL COMMENT '学院ID',
|
||||
class_id BIGINT(20) NOT NULL COMMENT '班级ID',
|
||||
class_name VARCHAR(100) NOT NULL COMMENT '班级名称',
|
||||
total_quota INT DEFAULT 0 COMMENT '总名额',
|
||||
used_quota INT DEFAULT 0 COMMENT '已用名额',
|
||||
reserved_quota INT DEFAULT 0 COMMENT '预留名额',
|
||||
available_quota INT DEFAULT 0 COMMENT '可用名额',
|
||||
allocation_method VARCHAR(20) DEFAULT 'MANUAL' COMMENT '分配方式:MANUAL-手动分配,AUTO-自动分配',
|
||||
is_locked TINYINT(1) DEFAULT 0 COMMENT '是否锁定:0-否,1-是',
|
||||
status VARCHAR(20) DEFAULT 'ACTIVE' COMMENT '状态:ACTIVE-有效,INACTIVE-无效',
|
||||
remark VARCHAR(500) DEFAULT NULL COMMENT '备注',
|
||||
tenant_id VARCHAR(20) DEFAULT '000000' 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_class (batch_id, scholarship_type_id, class_id, deleted),
|
||||
INDEX idx_dept_class (dept_id, class_id),
|
||||
INDEX idx_batch_dept (batch_id, dept_id),
|
||||
INDEX idx_quota_status (total_quota, status),
|
||||
INDEX idx_tenant (tenant_id, deleted)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='班级名额分配表';
|
||||
|
||||
-- =====================================================
|
||||
-- 3. 申请材料表结构调整
|
||||
-- =====================================================
|
||||
|
||||
-- 3.1 添加上传者信息字段 (检查字段是否存在)
|
||||
SET @column_exists = (
|
||||
SELECT COUNT(*)
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
|
||||
AND TABLE_NAME = 'jcbt_scholarship_attachment'
|
||||
AND COLUMN_NAME = 'uploader_type'
|
||||
);
|
||||
|
||||
SET @sql = IF(@column_exists = 0,
|
||||
'ALTER TABLE jcbt_scholarship_attachment ADD COLUMN `uploader_type` VARCHAR(20) DEFAULT "TEACHER" COMMENT "上传者类型:STUDENT-学生,TEACHER-教师"',
|
||||
'SELECT "uploader_type column already exists" as info'
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @column_exists = (
|
||||
SELECT COUNT(*)
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
|
||||
AND TABLE_NAME = 'jcbt_scholarship_attachment'
|
||||
AND COLUMN_NAME = 'uploader_id'
|
||||
);
|
||||
|
||||
SET @sql = IF(@column_exists = 0,
|
||||
'ALTER TABLE jcbt_scholarship_attachment ADD COLUMN `uploader_id` BIGINT(20) DEFAULT NULL COMMENT "上传者ID"',
|
||||
'SELECT "uploader_id column already exists" as info'
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @column_exists = (
|
||||
SELECT COUNT(*)
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
|
||||
AND TABLE_NAME = 'jcbt_scholarship_attachment'
|
||||
AND COLUMN_NAME = 'uploader_name'
|
||||
);
|
||||
|
||||
SET @sql = IF(@column_exists = 0,
|
||||
'ALTER TABLE jcbt_scholarship_attachment ADD COLUMN `uploader_name` VARCHAR(100) DEFAULT NULL COMMENT "上传者姓名"',
|
||||
'SELECT "uploader_name column already exists" as info'
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 3.2 修改必需字段逻辑(新需求中材料非必填)
|
||||
SET @column_exists = (
|
||||
SELECT COUNT(*)
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
|
||||
AND TABLE_NAME = 'jcbt_scholarship_attachment'
|
||||
AND COLUMN_NAME = 'is_required'
|
||||
);
|
||||
|
||||
SET @sql = IF(@column_exists > 0,
|
||||
'ALTER TABLE jcbt_scholarship_attachment MODIFY COLUMN `is_required` TINYINT(1) DEFAULT 0 COMMENT "是否必需:0-否,1-是(新需求中材料非必填)"',
|
||||
'SELECT "is_required column does not exist" as info'
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 3.3 添加上传者相关索引
|
||||
SET @index_exists = (
|
||||
SELECT COUNT(*)
|
||||
FROM INFORMATION_SCHEMA.STATISTICS
|
||||
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
|
||||
AND TABLE_NAME = 'jcbt_scholarship_attachment'
|
||||
AND INDEX_NAME = 'idx_uploader'
|
||||
);
|
||||
|
||||
SET @sql = IF(@index_exists = 0,
|
||||
'CREATE INDEX idx_uploader ON jcbt_scholarship_attachment(uploader_type, uploader_id)',
|
||||
'SELECT "idx_uploader index already exists" as info'
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- =====================================================
|
||||
-- 4. 名额使用记录表
|
||||
-- =====================================================
|
||||
|
||||
-- 4.1 创建名额使用记录表
|
||||
DROP TABLE IF EXISTS `jcbt_scholarship_quota_usage`;
|
||||
CREATE TABLE jcbt_scholarship_quota_usage (
|
||||
id BIGINT(20) NOT NULL COMMENT '主键ID',
|
||||
batch_id BIGINT(20) NOT NULL COMMENT '批次ID',
|
||||
scholarship_type_id BIGINT(20) NOT NULL COMMENT '奖学金类型ID',
|
||||
quota_type VARCHAR(20) NOT NULL COMMENT '名额类型:CLASS-班级名额,DEPT-学院名额',
|
||||
target_id BIGINT(20) NOT NULL COMMENT '目标ID(班级ID或学院ID)',
|
||||
application_id BIGINT(20) NOT NULL COMMENT '申请ID',
|
||||
student_id BIGINT(20) NOT NULL COMMENT '学生ID',
|
||||
operation_type VARCHAR(20) NOT NULL COMMENT '操作类型:USE-使用,RELEASE-释放',
|
||||
operation_time DATETIME NOT NULL COMMENT '操作时间',
|
||||
operator_id BIGINT(20) NOT NULL COMMENT '操作人ID',
|
||||
operator_name VARCHAR(100) NOT NULL COMMENT '操作人姓名',
|
||||
remark VARCHAR(500) DEFAULT NULL COMMENT '备注',
|
||||
tenant_id VARCHAR(20) DEFAULT '000000' 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_batch_type_target (batch_id, scholarship_type_id, target_id),
|
||||
INDEX idx_application_student (application_id, student_id),
|
||||
INDEX idx_operation_time (operation_type, operation_time),
|
||||
INDEX idx_operator_time (operator_id, operation_time),
|
||||
INDEX idx_tenant (tenant_id, deleted)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='名额使用记录表';
|
||||
|
||||
-- =====================================================
|
||||
-- 5. 批次表增加申请时间字段(如果不存在)
|
||||
-- =====================================================
|
||||
|
||||
-- 5.1 检查并添加申请开始时间字段
|
||||
SET @column_exists = (
|
||||
SELECT COUNT(*)
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
|
||||
AND TABLE_NAME = 'jcbt_scholarship_batch'
|
||||
AND COLUMN_NAME = 'application_start_time'
|
||||
);
|
||||
|
||||
SET @sql = IF(@column_exists = 0,
|
||||
'ALTER TABLE jcbt_scholarship_batch ADD COLUMN application_start_time DATETIME DEFAULT NULL COMMENT "申请开始时间"',
|
||||
'SELECT "application_start_time column already exists" as info'
|
||||
);
|
||||
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 5.2 检查并添加申请结束时间字段
|
||||
SET @column_exists = (
|
||||
SELECT COUNT(*)
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
|
||||
AND TABLE_NAME = 'jcbt_scholarship_batch'
|
||||
AND COLUMN_NAME = 'application_end_time'
|
||||
);
|
||||
|
||||
SET @sql = IF(@column_exists = 0,
|
||||
'ALTER TABLE jcbt_scholarship_batch ADD COLUMN application_end_time DATETIME DEFAULT NULL COMMENT "申请结束时间"',
|
||||
'SELECT "application_end_time column already exists" as info'
|
||||
);
|
||||
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- =====================================================
|
||||
-- 6. 数据字典配置 (修复版)
|
||||
-- =====================================================
|
||||
|
||||
-- 6.1 申请人类型字典
|
||||
INSERT INTO sys_dict_type (dict_name, dict_type, tenant_id, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
VALUES ('申请人类型', 'applicant_type', '000000', NULL, 1, NOW(), 1, NOW(), '奖学金申请人类型')
|
||||
ON DUPLICATE KEY UPDATE update_time = NOW();
|
||||
|
||||
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, tenant_id, create_dept, create_by, create_time, update_by, update_time, remark) VALUES
|
||||
(1, '学生申请', 'STUDENT', 'applicant_type', '', 'primary', 'N', '000000', NULL, 1, NOW(), 1, NOW(), '学生自主申请'),
|
||||
(2, '教师代申请', 'TEACHER', 'applicant_type', '', 'success', 'Y', '000000', NULL, 1, NOW(), 1, NOW(), '班主任代学生申请')
|
||||
ON DUPLICATE KEY UPDATE update_time = NOW();
|
||||
|
||||
-- 6.2 申请类型字典更新
|
||||
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, tenant_id, create_dept, create_by, create_time, update_by, update_time, remark) VALUES
|
||||
(1, '教师推荐', 'TEACHER_RECOMMEND', 'application_type', '', 'success', 'Y', '000000', NULL, 1, NOW(), 1, NOW(), '班主任推荐申请'),
|
||||
(2, '自动评定', 'AUTO', 'application_type', '', 'info', 'N', '000000', NULL, 1, NOW(), 1, NOW(), '系统自动评定'),
|
||||
(3, '直接指定', 'DIRECT', 'application_type', '', 'warning', 'N', '000000', NULL, 1, NOW(), 1, NOW(), '管理员直接指定')
|
||||
ON DUPLICATE KEY UPDATE update_time = NOW();
|
||||
|
||||
-- 6.3 名额类型字典
|
||||
INSERT INTO sys_dict_type (dict_name, dict_type, tenant_id, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
VALUES ('名额类型', 'quota_type', '000000', NULL, 1, NOW(), 1, NOW(), '奖学金名额分配类型')
|
||||
ON DUPLICATE KEY UPDATE update_time = NOW();
|
||||
|
||||
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, tenant_id, create_dept, create_by, create_time, update_by, update_time, remark) VALUES
|
||||
(1, '班级名额', 'CLASS', 'quota_type', '', 'primary', 'Y', '000000', NULL, 1, NOW(), 1, NOW(), '班级级别名额'),
|
||||
(2, '学院名额', 'DEPT', 'quota_type', '', 'success', 'N', '000000', NULL, 1, NOW(), 1, NOW(), '学院级别名额'),
|
||||
(3, '全校名额', 'UNIVERSITY', 'quota_type', '', 'info', 'N', '000000', NULL, 1, NOW(), 1, NOW(), '全校级别名额')
|
||||
ON DUPLICATE KEY UPDATE update_time = NOW();
|
||||
|
||||
-- 6.4 操作类型字典
|
||||
INSERT INTO sys_dict_type (dict_name, dict_type, tenant_id, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
VALUES ('名额操作类型', 'quota_operation_type', '000000', NULL, 1, NOW(), 1, NOW(), '名额使用操作类型')
|
||||
ON DUPLICATE KEY UPDATE update_time = NOW();
|
||||
|
||||
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, tenant_id, create_dept, create_by, create_time, update_by, update_time, remark) VALUES
|
||||
(1, '使用名额', 'USE', 'quota_operation_type', '', 'success', 'Y', '000000', NULL, 1, NOW(), 1, NOW(), '申请时使用名额'),
|
||||
(2, '释放名额', 'RELEASE', 'quota_operation_type', '', 'warning', 'N', '000000', NULL, 1, NOW(), 1, NOW(), '撤回申请时释放名额')
|
||||
ON DUPLICATE KEY UPDATE update_time = NOW();
|
||||
|
||||
-- 6.5 上传者类型字典
|
||||
INSERT INTO sys_dict_type (dict_name, dict_type, tenant_id, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
VALUES ('材料上传者类型', 'uploader_type', '000000', NULL, 1, NOW(), 1, NOW(), '申请材料上传者类型')
|
||||
ON DUPLICATE KEY UPDATE update_time = NOW();
|
||||
|
||||
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, tenant_id, create_dept, create_by, create_time, update_by, update_time, remark) VALUES
|
||||
(1, '学生上传', 'STUDENT', 'uploader_type', '', 'primary', 'N', '000000', NULL, 1, NOW(), 1, NOW(), '学生自行上传'),
|
||||
(2, '教师上传', 'TEACHER', 'uploader_type', '', 'success', 'Y', '000000', NULL, 1, NOW(), 1, NOW(), '班主任代为上传')
|
||||
ON DUPLICATE KEY UPDATE update_time = NOW();
|
||||
|
||||
-- =====================================================
|
||||
-- 7. 创建测试数据
|
||||
-- =====================================================
|
||||
|
||||
-- 7.1 班级名额分配测试数据
|
||||
INSERT INTO jcbt_scholarship_class_quota (
|
||||
id, batch_id, scholarship_type_id, dept_id, class_id, class_name,
|
||||
total_quota, used_quota, reserved_quota, available_quota,
|
||||
allocation_method, is_locked, status, remark,
|
||||
tenant_id, create_dept, create_by, create_time, update_by, update_time, deleted
|
||||
) VALUES
|
||||
-- 计算机学院班级名额分配
|
||||
(2001, 1, 1, 103, 1001, '计算机2021-1班', 2, 0, 0, 2, 'MANUAL', 0, 'ACTIVE', '计算机学院国家奖学金班级分配', '000000', NULL, 1, NOW(), 1, NOW(), 0),
|
||||
(2002, 1, 1, 103, 1002, '计算机2021-2班', 1, 0, 0, 1, 'MANUAL', 0, 'ACTIVE', '计算机学院国家奖学金班级分配', '000000', NULL, 1, NOW(), 1, NOW(), 0),
|
||||
(2003, 1, 2, 103, 1001, '计算机2021-1班', 3, 0, 1, 2, 'MANUAL', 0, 'ACTIVE', '计算机学院励志奖学金班级分配', '000000', NULL, 1, NOW(), 1, NOW(), 0),
|
||||
(2004, 1, 2, 103, 1002, '计算机2021-2班', 2, 0, 0, 2, 'MANUAL', 0, 'ACTIVE', '计算机学院励志奖学金班级分配', '000000', NULL, 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 经济管理学院班级名额分配
|
||||
(2005, 1, 1, 104, 1003, '经管2021-1班', 3, 0, 1, 2, 'MANUAL', 0, 'ACTIVE', '经济管理学院国家奖学金班级分配', '000000', NULL, 1, NOW(), 1, NOW(), 0),
|
||||
(2006, 1, 1, 104, 1004, '经管2021-2班', 2, 0, 0, 2, 'MANUAL', 0, 'ACTIVE', '经济管理学院国家奖学金班级分配', '000000', NULL, 1, NOW(), 1, NOW(), 0),
|
||||
(2007, 1, 2, 104, 1003, '经管2021-1班', 4, 0, 1, 3, 'MANUAL', 0, 'ACTIVE', '经济管理学院励志奖学金班级分配', '000000', NULL, 1, NOW(), 1, NOW(), 0),
|
||||
(2008, 1, 2, 104, 1004, '经管2021-2班', 3, 0, 1, 2, 'MANUAL', 0, 'ACTIVE', '经济管理学院励志奖学金班级分配', '000000', NULL, 1, NOW(), 1, NOW(), 0);
|
||||
|
||||
-- 7.2 更新批次申请时间
|
||||
UPDATE jcbt_scholarship_batch SET
|
||||
application_start_time = '2024-03-01 00:00:00',
|
||||
application_end_time = '2024-03-31 23:59:59'
|
||||
WHERE id = 1;
|
||||
|
||||
-- =====================================================
|
||||
-- 8. 验证脚本执行结果
|
||||
-- =====================================================
|
||||
|
||||
SELECT '=== 申请记录表结构检查 ===' as info;
|
||||
DESCRIBE jcbt_scholarship_application;
|
||||
|
||||
SELECT '=== 班级名额分配表数据 ===' as info;
|
||||
SELECT id, batch_id, scholarship_type_id, class_name, total_quota, used_quota, available_quota, status
|
||||
FROM jcbt_scholarship_class_quota WHERE deleted = 0;
|
||||
|
||||
SELECT '=== 材料表结构检查 ===' as info;
|
||||
DESCRIBE jcbt_scholarship_attachment;
|
||||
|
||||
SELECT '=== 名额使用记录表结构 ===' as info;
|
||||
DESCRIBE jcbt_scholarship_quota_usage;
|
||||
|
||||
SELECT '=== 数据字典检查 ===' as info;
|
||||
SELECT dt.dict_name, dd.dict_label, dd.dict_value, dd.dict_type
|
||||
FROM sys_dict_type dt
|
||||
JOIN sys_dict_data dd ON dt.dict_type = dd.dict_type
|
||||
WHERE dt.dict_type IN ('applicant_type', 'quota_type', 'quota_operation_type', 'uploader_type')
|
||||
ORDER BY dt.dict_type, dd.dict_sort;
|
||||
|
||||
-- =====================================================
|
||||
-- 9. 升级完成标记
|
||||
-- =====================================================
|
||||
|
||||
SELECT '=== 数据库升级完成 ===' as info;
|
||||
SELECT 'v2.0升级成功,支持班主任代申请模式' as message;
|
||||
SELECT NOW() as upgrade_time;
|
||||
@@ -0,0 +1,273 @@
|
||||
-- ===============================================
|
||||
-- 奖学金申请管理模块 v2.0 数据库升级脚本
|
||||
-- 基于班主任代申请模式的数据结构调整
|
||||
-- ===============================================
|
||||
|
||||
USE hzdyjs_xg;
|
||||
|
||||
-- =====================================================
|
||||
-- 1. 申请记录表结构调整
|
||||
-- =====================================================
|
||||
|
||||
-- 1.1 添加申请人相关字段
|
||||
ALTER TABLE jcbt_scholarship_application
|
||||
ADD COLUMN `applicant_type` VARCHAR(20) DEFAULT 'TEACHER' COMMENT '申请人类型:STUDENT-学生申请,TEACHER-教师代申请';
|
||||
|
||||
ALTER TABLE jcbt_scholarship_application
|
||||
ADD COLUMN `applicant_id` BIGINT(20) DEFAULT NULL COMMENT '申请人ID(班主任ID)';
|
||||
|
||||
ALTER TABLE jcbt_scholarship_application
|
||||
ADD COLUMN `applicant_name` VARCHAR(100) DEFAULT NULL COMMENT '申请人姓名(班主任姓名)';
|
||||
|
||||
-- 1.2 修改申请类型枚举值
|
||||
ALTER TABLE jcbt_scholarship_application
|
||||
MODIFY COLUMN `application_type` VARCHAR(20) NOT NULL
|
||||
COMMENT '申请类型:TEACHER_RECOMMEND-教师推荐,AUTO-自动评定,DIRECT-直接指定';
|
||||
|
||||
-- 1.3 添加班级和申请人相关索引
|
||||
CREATE INDEX idx_class_batch ON jcbt_scholarship_application(class_id, batch_id);
|
||||
CREATE INDEX idx_applicant_batch ON jcbt_scholarship_application(applicant_id, batch_id);
|
||||
CREATE INDEX idx_applicant_type ON jcbt_scholarship_application(applicant_type, applicant_id);
|
||||
|
||||
-- =====================================================
|
||||
-- 2. 班级名额分配表
|
||||
-- =====================================================
|
||||
|
||||
-- 2.1 创建班级名额分配表
|
||||
DROP TABLE IF EXISTS `jcbt_scholarship_class_quota`;
|
||||
CREATE TABLE jcbt_scholarship_class_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',
|
||||
dept_id BIGINT(20) NOT NULL COMMENT '学院ID',
|
||||
class_id BIGINT(20) NOT NULL COMMENT '班级ID',
|
||||
class_name VARCHAR(100) NOT NULL COMMENT '班级名称',
|
||||
total_quota INT DEFAULT 0 COMMENT '总名额',
|
||||
used_quota INT DEFAULT 0 COMMENT '已用名额',
|
||||
reserved_quota INT DEFAULT 0 COMMENT '预留名额',
|
||||
available_quota INT DEFAULT 0 COMMENT '可用名额',
|
||||
allocation_method VARCHAR(20) DEFAULT 'MANUAL' COMMENT '分配方式:MANUAL-手动分配,AUTO-自动分配',
|
||||
is_locked TINYINT(1) DEFAULT 0 COMMENT '是否锁定:0-否,1-是',
|
||||
status VARCHAR(20) DEFAULT 'ACTIVE' COMMENT '状态:ACTIVE-有效,INACTIVE-无效',
|
||||
remark VARCHAR(500) DEFAULT NULL COMMENT '备注',
|
||||
tenant_id BIGINT(20) NOT NULL COMMENT '租户ID',
|
||||
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_class (batch_id, scholarship_type_id, class_id, deleted),
|
||||
INDEX idx_dept_class (dept_id, class_id),
|
||||
INDEX idx_batch_dept (batch_id, dept_id),
|
||||
INDEX idx_quota_status (total_quota, status),
|
||||
INDEX idx_tenant (tenant_id, deleted)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='班级名额分配表';
|
||||
|
||||
-- =====================================================
|
||||
-- 3. 申请材料表结构调整
|
||||
-- =====================================================
|
||||
|
||||
-- 3.1 添加上传者信息字段
|
||||
ALTER TABLE jcbt_scholarship_attachment
|
||||
ADD COLUMN `uploader_type` VARCHAR(20) DEFAULT 'TEACHER' COMMENT '上传者类型:STUDENT-学生,TEACHER-教师';
|
||||
|
||||
ALTER TABLE jcbt_scholarship_attachment
|
||||
ADD COLUMN `uploader_id` BIGINT(20) DEFAULT NULL COMMENT '上传者ID';
|
||||
|
||||
ALTER TABLE jcbt_scholarship_attachment
|
||||
ADD COLUMN `uploader_name` VARCHAR(100) DEFAULT NULL COMMENT '上传者姓名';
|
||||
|
||||
-- 3.2 修改必需字段逻辑(新需求中材料非必填)
|
||||
ALTER TABLE jcbt_scholarship_attachment
|
||||
MODIFY COLUMN `is_required` TINYINT(1) DEFAULT 0 COMMENT '是否必需:0-否,1-是(新需求中材料非必填)';
|
||||
|
||||
-- 3.3 添加上传者相关索引
|
||||
CREATE INDEX idx_uploader ON jcbt_scholarship_attachment(uploader_type, uploader_id);
|
||||
CREATE INDEX idx_uploader_time ON jcbt_scholarship_attachment(uploader_id, upload_time);
|
||||
|
||||
-- =====================================================
|
||||
-- 4. 名额使用记录表
|
||||
-- =====================================================
|
||||
|
||||
-- 4.1 创建名额使用记录表
|
||||
DROP TABLE IF EXISTS `jcbt_scholarship_quota_usage`;
|
||||
CREATE TABLE jcbt_scholarship_quota_usage (
|
||||
id BIGINT(20) NOT NULL COMMENT '主键ID',
|
||||
batch_id BIGINT(20) NOT NULL COMMENT '批次ID',
|
||||
scholarship_type_id BIGINT(20) NOT NULL COMMENT '奖学金类型ID',
|
||||
quota_type VARCHAR(20) NOT NULL COMMENT '名额类型:CLASS-班级名额,DEPT-学院名额',
|
||||
target_id BIGINT(20) NOT NULL COMMENT '目标ID(班级ID或学院ID)',
|
||||
application_id BIGINT(20) NOT NULL COMMENT '申请ID',
|
||||
student_id BIGINT(20) NOT NULL COMMENT '学生ID',
|
||||
operation_type VARCHAR(20) NOT NULL COMMENT '操作类型:USE-使用,RELEASE-释放',
|
||||
operation_time DATETIME NOT NULL COMMENT '操作时间',
|
||||
operator_id BIGINT(20) NOT NULL COMMENT '操作人ID',
|
||||
operator_name VARCHAR(100) NOT NULL COMMENT '操作人姓名',
|
||||
remark VARCHAR(500) DEFAULT NULL COMMENT '备注',
|
||||
tenant_id BIGINT(20) NOT NULL COMMENT '租户ID',
|
||||
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_batch_type_target (batch_id, scholarship_type_id, target_id),
|
||||
INDEX idx_application_student (application_id, student_id),
|
||||
INDEX idx_operation_time (operation_type, operation_time),
|
||||
INDEX idx_operator_time (operator_id, operation_time),
|
||||
INDEX idx_tenant (tenant_id, deleted)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='名额使用记录表';
|
||||
|
||||
-- =====================================================
|
||||
-- 5. 批次表增加申请时间字段(如果不存在)
|
||||
-- =====================================================
|
||||
|
||||
-- 5.1 检查并添加申请开始时间字段
|
||||
SET @column_exists = (
|
||||
SELECT COUNT(*)
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
|
||||
AND TABLE_NAME = 'jcbt_scholarship_batch'
|
||||
AND COLUMN_NAME = 'application_start_time'
|
||||
);
|
||||
|
||||
SET @sql = IF(@column_exists = 0,
|
||||
'ALTER TABLE jcbt_scholarship_batch ADD COLUMN application_start_time DATETIME DEFAULT NULL COMMENT "申请开始时间"',
|
||||
'SELECT "application_start_time column already exists" as info'
|
||||
);
|
||||
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 5.2 检查并添加申请结束时间字段
|
||||
SET @column_exists = (
|
||||
SELECT COUNT(*)
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
|
||||
AND TABLE_NAME = 'jcbt_scholarship_batch'
|
||||
AND COLUMN_NAME = 'application_end_time'
|
||||
);
|
||||
|
||||
SET @sql = IF(@column_exists = 0,
|
||||
'ALTER TABLE jcbt_scholarship_batch ADD COLUMN application_end_time DATETIME DEFAULT NULL COMMENT "申请结束时间"',
|
||||
'SELECT "application_end_time column already exists" as info'
|
||||
);
|
||||
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- =====================================================
|
||||
-- 6. 数据字典配置
|
||||
-- =====================================================
|
||||
|
||||
-- 6.1 申请人类型字典
|
||||
INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, update_by, update_time, remark)
|
||||
VALUES ('申请人类型', 'applicant_type', '0', 1, NOW(), 1, NOW(), '奖学金申请人类型')
|
||||
ON DUPLICATE KEY UPDATE update_time = NOW();
|
||||
|
||||
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, '学生申请', 'STUDENT', 'applicant_type', '', 'primary', 'N', '0', 1, NOW(), 1, NOW(), '学生自主申请'),
|
||||
(2, '教师代申请', 'TEACHER', 'applicant_type', '', 'success', 'Y', '0', 1, NOW(), 1, NOW(), '班主任代学生申请')
|
||||
ON DUPLICATE KEY UPDATE update_time = NOW();
|
||||
|
||||
-- 6.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, update_by, update_time, remark) VALUES
|
||||
(1, '教师推荐', 'TEACHER_RECOMMEND', 'application_type', '', 'success', 'Y', '0', 1, NOW(), 1, NOW(), '班主任推荐申请'),
|
||||
(2, '自动评定', 'AUTO', 'application_type', '', 'info', 'N', '0', 1, NOW(), 1, NOW(), '系统自动评定'),
|
||||
(3, '直接指定', 'DIRECT', 'application_type', '', 'warning', 'N', '0', 1, NOW(), 1, NOW(), '管理员直接指定')
|
||||
ON DUPLICATE KEY UPDATE update_time = NOW();
|
||||
|
||||
-- 6.3 名额类型字典
|
||||
INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, update_by, update_time, remark)
|
||||
VALUES ('名额类型', 'quota_type', '0', 1, NOW(), 1, NOW(), '奖学金名额分配类型')
|
||||
ON DUPLICATE KEY UPDATE update_time = NOW();
|
||||
|
||||
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, '班级名额', 'CLASS', 'quota_type', '', 'primary', 'Y', '0', 1, NOW(), 1, NOW(), '班级级别名额'),
|
||||
(2, '学院名额', 'DEPT', 'quota_type', '', 'success', 'N', '0', 1, NOW(), 1, NOW(), '学院级别名额'),
|
||||
(3, '全校名额', 'UNIVERSITY', 'quota_type', '', 'info', 'N', '0', 1, NOW(), 1, NOW(), '全校级别名额')
|
||||
ON DUPLICATE KEY UPDATE update_time = NOW();
|
||||
|
||||
-- 6.4 操作类型字典
|
||||
INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, update_by, update_time, remark)
|
||||
VALUES ('名额操作类型', 'quota_operation_type', '0', 1, NOW(), 1, NOW(), '名额使用操作类型')
|
||||
ON DUPLICATE KEY UPDATE update_time = NOW();
|
||||
|
||||
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, '使用名额', 'USE', 'quota_operation_type', '', 'success', 'Y', '0', 1, NOW(), 1, NOW(), '申请时使用名额'),
|
||||
(2, '释放名额', 'RELEASE', 'quota_operation_type', '', 'warning', 'N', '0', 1, NOW(), 1, NOW(), '撤回申请时释放名额')
|
||||
ON DUPLICATE KEY UPDATE update_time = NOW();
|
||||
|
||||
-- 6.5 上传者类型字典
|
||||
INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, update_by, update_time, remark)
|
||||
VALUES ('材料上传者类型', 'uploader_type', '0', 1, NOW(), 1, NOW(), '申请材料上传者类型')
|
||||
ON DUPLICATE KEY UPDATE update_time = NOW();
|
||||
|
||||
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, '学生上传', 'STUDENT', 'uploader_type', '', 'primary', 'N', '0', 1, NOW(), 1, NOW(), '学生自行上传'),
|
||||
(2, '教师上传', 'TEACHER', 'uploader_type', '', 'success', 'Y', '0', 1, NOW(), 1, NOW(), '班主任代为上传')
|
||||
ON DUPLICATE KEY UPDATE update_time = NOW();
|
||||
|
||||
-- =====================================================
|
||||
-- 7. 创建测试数据
|
||||
-- =====================================================
|
||||
|
||||
-- 7.1 班级名额分配测试数据
|
||||
INSERT INTO jcbt_scholarship_class_quota (
|
||||
id, batch_id, scholarship_type_id, dept_id, class_id, class_name,
|
||||
total_quota, used_quota, reserved_quota, available_quota,
|
||||
allocation_method, is_locked, status, remark,
|
||||
tenant_id, create_by, create_time, update_by, update_time, deleted
|
||||
) VALUES
|
||||
-- 计算机学院班级名额分配
|
||||
(2001, 1, 1, 103, 1001, '计算机2021-1班', 2, 0, 0, 2, 'MANUAL', 0, 'ACTIVE', '计算机学院国家奖学金班级分配', 1, 1, NOW(), 1, NOW(), 0),
|
||||
(2002, 1, 1, 103, 1002, '计算机2021-2班', 1, 0, 0, 1, 'MANUAL', 0, 'ACTIVE', '计算机学院国家奖学金班级分配', 1, 1, NOW(), 1, NOW(), 0),
|
||||
(2003, 1, 2, 103, 1001, '计算机2021-1班', 3, 0, 1, 2, 'MANUAL', 0, 'ACTIVE', '计算机学院励志奖学金班级分配', 1, 1, NOW(), 1, NOW(), 0),
|
||||
(2004, 1, 2, 103, 1002, '计算机2021-2班', 2, 0, 0, 2, 'MANUAL', 0, 'ACTIVE', '计算机学院励志奖学金班级分配', 1, 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 经济管理学院班级名额分配
|
||||
(2005, 1, 1, 104, 1003, '经管2021-1班', 3, 0, 1, 2, 'MANUAL', 0, 'ACTIVE', '经济管理学院国家奖学金班级分配', 1, 1, NOW(), 1, NOW(), 0),
|
||||
(2006, 1, 1, 104, 1004, '经管2021-2班', 2, 0, 0, 2, 'MANUAL', 0, 'ACTIVE', '经济管理学院国家奖学金班级分配', 1, 1, NOW(), 1, NOW(), 0),
|
||||
(2007, 1, 2, 104, 1003, '经管2021-1班', 4, 0, 1, 3, 'MANUAL', 0, 'ACTIVE', '经济管理学院励志奖学金班级分配', 1, 1, NOW(), 1, NOW(), 0),
|
||||
(2008, 1, 2, 104, 1004, '经管2021-2班', 3, 0, 1, 2, 'MANUAL', 0, 'ACTIVE', '经济管理学院励志奖学金班级分配', 1, 1, NOW(), 1, NOW(), 0);
|
||||
|
||||
-- 7.2 更新批次申请时间
|
||||
UPDATE jcbt_scholarship_batch SET
|
||||
application_start_time = '2024-03-01 00:00:00',
|
||||
application_end_time = '2024-03-31 23:59:59'
|
||||
WHERE id = 1;
|
||||
|
||||
-- =====================================================
|
||||
-- 8. 验证脚本执行结果
|
||||
-- =====================================================
|
||||
|
||||
SELECT '=== 申请记录表结构检查 ===' as info;
|
||||
DESCRIBE jcbt_scholarship_application;
|
||||
|
||||
SELECT '=== 班级名额分配表数据 ===' as info;
|
||||
SELECT id, batch_id, scholarship_type_id, class_name, total_quota, used_quota, available_quota, status
|
||||
FROM jcbt_scholarship_class_quota WHERE deleted = 0;
|
||||
|
||||
SELECT '=== 材料表结构检查 ===' as info;
|
||||
DESCRIBE jcbt_scholarship_attachment;
|
||||
|
||||
SELECT '=== 名额使用记录表结构 ===' as info;
|
||||
DESCRIBE jcbt_scholarship_quota_usage;
|
||||
|
||||
SELECT '=== 数据字典检查 ===' as info;
|
||||
SELECT dt.dict_name, dd.dict_label, dd.dict_value, dd.dict_type
|
||||
FROM sys_dict_type dt
|
||||
JOIN sys_dict_data dd ON dt.dict_type = dd.dict_type
|
||||
WHERE dt.dict_type IN ('applicant_type', 'quota_type', 'quota_operation_type', 'uploader_type')
|
||||
ORDER BY dt.dict_type, dd.dict_sort;
|
||||
|
||||
-- =====================================================
|
||||
-- 9. 升级完成标记
|
||||
-- =====================================================
|
||||
|
||||
SELECT '=== 数据库升级完成 ===' as info;
|
||||
SELECT 'v2.0升级成功,支持班主任代申请模式' as message;
|
||||
SELECT NOW() as upgrade_time;
|
||||
Reference in new issue
Block a user