提交代码修改

This commit is contained in:
zlwu committed 2025-07-27 10:05:56 +08:00
1 parent 6a88159417
commit 6a0eeec01e
29 files changed
+3334

No files matched your search

@@ -0,0 +1,173 @@
# 学生信息收集批次收集范围功能完善记录
**日期**: 2025-01-17
**开发者**: Cursor AI
**变更类型**: 功能完善
**影响范围**: 前端页面、后端API接口
## 📋 变更概述
完善了学生信息收集批次管理页面中的收集范围功能,实现了前后端完整的API调用,包括设置收集范围和获取收集范围。
## 🔧 具体变更
### 1. 后端API接口完善
#### 新增获取收集范围接口
**文件**: `backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgStuColBatchClassController.java`
- 添加了 `getScope` API接口
- 接口路径: `GET /stuColBatchClass/stuColBatchClass/getScope/{batchId}`
- 返回指定批次的班级ID列表
- 权限标识: `stuColBatchClass:stuColBatchClass:query`
#### Mapper层完善
**文件**: `backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgStuColBatchClassMapper.java`
- 新增 `selectClassIdsByBatchId` 方法
- 根据批次ID查询班级ID列表
#### XML映射文件完善
**文件**: `backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/stuColBatchClass/XgStuColBatchClassMapper.xml`
- 添加了 `selectClassIdsByBatchId` 的SQL实现
- 查询条件: `batch_id = #{batchId} AND deleted = 0`
### 2. 前端API接口完善
#### 新增API方法
**文件**: `web/src/api/stuColBatchClass/stuColBatchClass/index.ts`
- 添加了 `setScope` API方法(设置收集范围)
- 添加了 `getScope` API方法(获取收集范围)
- 使用标准的request请求格式
### 3. 前端页面功能完善
#### 导入API方法
**文件**: `web/src/views/XgStuColBatch/stuColBatch/index.vue`
- 导入了 `setScope` 和 `getScope` API方法
- 完善了API调用逻辑
#### 完善submitScope方法
- 移除了临时的console.log代码
- 实现了完整的API调用逻辑
- 添加了成功和失败的消息提示
- 根据API响应显示相应的消息
#### 完善loadCurrentScope方法
- 实现了获取当前批次收集范围的API调用
- 将获取到的班级ID列表设置为已选中状态
- 添加了错误处理机制
## 🎯 技术特性
### 数据一致性保证
- ✅ 使用事务确保设置收集范围的数据一致性
- ✅ 先清理历史数据,再插入新数据
- ✅ 异常时自动回滚
### 用户体验优化
- ✅ 打开弹窗时自动加载已设置的收集范围
- ✅ 设置成功后显示详细的操作结果信息
- ✅ 完整的错误处理和用户提示
### 权限控制
- ✅ 使用 `@SaCheckPermission` 进行权限验证
- ✅ 查询权限: `stuColBatchClass:stuColBatchClass:query`
- ✅ 设置权限: `stuColBatchClass:stuColBatchClass:setScope`
### 操作日志
- ✅ 使用 `@Log` 记录设置操作日志
- ✅ 业务类型: `BusinessType.UPDATE`
### 防重复提交
- ✅ 使用 `@RepeatSubmit` 防止重复提交
## 📊 API接口详情
### 获取收集范围接口
- **方法**: GET
- **路径**: `/stuColBatchClass/stuColBatchClass/getScope/{batchId}`
- **响应格式**:
```json
{
"code": 200,
"msg": "操作成功",
"data": [1, 2, 3] // 班级ID列表
}
```
### 设置收集范围接口
- **方法**: POST
- **路径**: `/stuColBatchClass/stuColBatchClass/setScope`
- **请求参数**:
- `batchId`: 批次ID
- `deptIds`: 班级ID列表
- **响应格式**:
```json
{
"code": 200,
"msg": "权限设置成功,共设置 X 个班级权限",
"data": null
}
```
## 🔍 业务逻辑
### 获取收集范围流程
1. 前端调用 `getScope` API
2. 后端查询 `xg_stu_col_batch_class` 表
3. 返回该批次下的所有班级ID列表
4. 前端将班级ID设置为树形控件的选中状态
### 设置收集范围流程
1. 前端获取树形控件选中的节点
2. 调用 `setScope` API传递批次ID和班级ID列表
3. 后端清理历史权限数据
4. 插入新的权限数据
5. 返回操作结果
## ✅ 质量保证
### 代码规范
- ✅ 遵循项目开发规范
- ✅ 使用统一的响应格式
- ✅ 完整的异常处理机制
- ✅ 详细的注释说明
### 数据库规范
- ✅ 使用逻辑删除,不物理删除数据
- ✅ 包含完整的基础字段
- ✅ 正确的索引设计
### 前端规范
- ✅ 使用标准的API调用方式
- ✅ 完整的错误处理
- ✅ 良好的用户体验
## 🚀 功能验证
### 测试场景
1. **获取收集范围**: 打开收集范围弹窗时,正确显示已设置的班级
2. **设置收集范围**: 选择班级后提交,成功保存并显示结果
3. **错误处理**: 网络异常或服务器错误时的用户提示
4. **权限验证**: 无权限用户无法访问相关功能
### 预期结果
- ✅ 收集范围功能完整可用
- ✅ 前后端数据交互正常
- ✅ 用户体验良好
- ✅ 错误处理完善
## 📝 后续优化建议
1. **性能优化**: 考虑对大量班级数据的加载进行分页处理
2. **缓存机制**: 对部门树数据进行缓存,提高加载速度
3. **批量操作**: 支持批量设置多个批次的收集范围
4. **权限细化**: 根据用户角色显示不同的班级选项
---
**🎯 目标**: 通过完善前后端API调用,实现了学生信息收集批次收集范围功能的完整可用性,提供了良好的用户体验和稳定的数据操作。
@@ -0,0 +1,173 @@
# 学生信息收集批次查看详细功能权限范围展示开发记录
**日期**: 2025-01-17
**开发者**: Cursor AI
**变更类型**: 功能增强
**影响范围**: 前端页面、后端API接口
## 📋 变更概述
在学生信息收集批次管理页面的查看详细功能中,新增了权限范围展示功能,用户可以查看批次配置的学院名称、专业名称、班级名称等详细信息。
## 🔧 具体变更
### 1. 后端API接口新增
#### 新增获取权限范围详细信息接口
**文件**: `backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgStuColBatchClassController.java`
- 添加了 `getScopeDetail` API接口
- 接口路径: `GET /stuColBatchClass/stuColBatchClass/getScopeDetail/{batchId}`
- 返回指定批次的权限范围详细信息列表
- 权限标识: `stuColBatchClass:stuColBatchClass:query`
#### Mapper层新增方法
**文件**: `backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgStuColBatchClassMapper.java`
- 新增 `selectScopeDetailByBatchId` 方法
- 根据批次ID查询权限范围详细信息
#### XML映射文件新增SQL
**文件**: `backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/stuColBatchClass/XgStuColBatchClassMapper.xml`
- 添加了 `selectScopeDetailByBatchId` 的SQL实现
- 查询条件: `batch_id = #{batchId} AND deleted = 0`
- 排序规则: 按学院名称、专业名称、班级名称排序
- 返回字段: 包含完整的权限范围信息(学院、专业、班级、配置时间等)
### 2. 前端API接口新增
#### 新增API方法
**文件**: `web/src/api/stuColBatchClass/stuColBatchClass/index.ts`
- 添加了 `getScopeDetail` API方法(获取权限范围详细信息)
- 使用标准的request请求格式
### 3. 前端页面功能增强
#### 查看详细对话框优化
**文件**: `web/src/views/XgStuColBatch/stuColBatch/index.vue`
- 将对话框宽度从600px增加到800px,适应更多内容
- 使用 `el-tabs` 组件实现标签页切换
- 新增"基本信息"和"权限范围"两个标签页
#### 权限范围展示功能
- **基本信息标签页**: 展示批次的基本信息(ID、名称、描述、时间、状态等)
- **权限范围标签页**: 展示配置的权限范围详细信息
- 使用 `el-alert` 组件显示权限范围说明
- 使用 `el-table` 组件展示权限范围列表
- 包含序号、学院名称、专业名称、班级名称、配置时间等字段
- 支持空数据状态展示
#### 响应式数据管理
- 新增 `viewActiveTab` 响应式引用控制当前激活的标签页
- 新增 `scopeDetailList` 响应式引用存储权限范围数据
- 新增 `loadScopeDetail` 方法加载权限范围详细信息
#### 方法优化
- 优化 `handleView` 方法,同时加载基本信息和权限范围数据
- 优化 `cancelView` 方法,清空所有相关数据并重置标签页
#### 样式优化
- 添加了 `.scope-detail-content`、`.no-data`、`.mb-3` 等样式类
- 优化了权限范围展示的视觉效果
## 🎯 技术特性
### 数据展示
- ✅ 使用标签页分离基本信息和权限范围
- ✅ 表格形式展示权限范围详细信息
- ✅ 支持空数据状态友好提示
- ✅ 时间字段格式化显示
### 用户体验
- ✅ 权限范围说明清晰明了
- ✅ 数据加载状态处理完善
- ✅ 界面布局美观合理
- ✅ 响应式设计适配不同屏幕
### 数据完整性
- ✅ 包含学院名称、专业名称、班级名称
- ✅ 包含配置时间信息
- ✅ 按逻辑顺序排序展示
## 📊 API接口详情
### 请求信息
- **方法**: GET
- **路径**: `/stuColBatchClass/stuColBatchClass/getScopeDetail/{batchId}`
- **参数**: batchId (路径参数,批次ID)
### 响应格式
```json
{
"code": 200,
"msg": "操作成功",
"data": [
{
"id": 1,
"batchId": 123,
"classId": 456,
"className": "计算机科学与技术2024级1班",
"majorId": 789,
"majorName": "计算机科学与技术",
"collegeId": 101,
"collegeName": "信息工程学院",
"createTime": "2025-01-17 10:30:00",
"updateTime": "2025-01-17 10:30:00"
}
]
}
```
## 🔍 业务逻辑
### 数据查询逻辑
- 从 `xg_stu_col_batch_class` 表查询指定批次的权限范围
- 过滤条件: `batch_id = #{batchId} AND deleted = 0`
- 排序规则: `ORDER BY college_name, major_name, class_name`
- 返回完整的权限范围信息
### 前端展示逻辑
- 点击"查看详细"按钮时,同时加载基本信息和权限范围
- 默认显示"基本信息"标签页
- 用户可切换到"权限范围"标签页查看详细信息
- 权限范围为空时显示友好的空状态提示
## ✅ 质量保证
### 代码规范
- ✅ 遵循项目开发规范
- ✅ 使用统一的响应格式
- ✅ 完整的异常处理机制
- ✅ 详细的注释说明
### 用户体验
- ✅ 界面美观,布局合理
- ✅ 数据展示清晰,信息完整
- ✅ 交互友好,操作简单
- ✅ 空状态处理完善
### 性能优化
- ✅ 按需加载权限范围数据
- ✅ 合理的数据缓存策略
- ✅ 优化的SQL查询语句
## 🎨 界面效果
### 查看详细对话框
- **基本信息标签页**: 展示批次的所有基本信息
- **权限范围标签页**: 展示配置的权限范围列表
- 权限范围说明提示
- 权限范围统计信息
- 详细的权限范围表格
### 数据展示
- 学院名称、专业名称、班级名称清晰展示
- 配置时间格式化显示
- 序号自动生成,便于查看
---
**📝 总结**: 成功实现了学生信息收集批次查看详细功能的权限范围展示,提供了完整的学院、专业、班级信息查看能力,大大提升了用户的使用体验和数据透明度。
@@ -0,0 +1,151 @@
# 学生信息收集批次班级权限设置API开发记录
**日期**: 2025-01-17
**开发者**: Cursor AI
**变更类型**: 新增功能
**影响范围**: 后端API接口
## 📋 变更概述
在 `XgStuColBatchClassController.java` 中新增了 `setScope` API接口,用于设置学生信息收集批次的班级权限。
## 🔧 具体变更
### 1. Controller层变更
**文件**: `backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgStuColBatchClassController.java`
#### 新增内容
- 添加了 `setScope` API接口
- 接口路径: `POST /stuColBatchClass/stuColBatchClass/setScope`
- 入参: `batchId` (批次ID)、`deptIds` (授权的班级ID列表)
- 添加了事务注解 `@Transactional(rollbackFor = Exception.class)`
- 直接注入 `XgStuColBatchClassMapper` 用于数据库操作
#### 实现逻辑
1. **第一步**: 遍历deptIds,通过SQL查询班级信息
2. **第二步**: 清理历史权限数据(逻辑删除)
3. **第三步**: 插入新的权限数据
### 2. Mapper层变更
**文件**: `backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgStuColBatchClassMapper.java`
#### 新增方法
- `clearHistoryPermissions(Long batchId)`: 清理历史权限数据
- `selectClassInfoByDeptIds(List<Long> deptIds)`: 根据部门ID查询班级信息
### 3. XML映射文件变更
**文件**: `backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/stuColBatchClass/XgStuColBatchClassMapper.xml`
#### 新增内容
- 添加了 `XgStuColBatchClassVoResult` ResultMap
- 实现了 `clearHistoryPermissions` 的SQL更新语句
- 实现了 `selectClassInfoByDeptIds` 的SQL查询语句
- 查询条件: `deleted = 0 AND class_status = '1'`
### 4. VO类规范修复
**文件**: `backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/vo/XgStuColBatchClassVo.java`
#### 修复内容
- 添加了基础字段: `createBy`、`createTime`、`updateBy`、`updateTime`
- 添加了 `@JsonFormat` 注解进行时间格式化
- 符合项目VO类基础字段规范要求
## 🎯 技术特性
### 数据一致性保证
- ✅ 使用 `@Transactional` 注解确保事务一致性
- ✅ 先清理历史数据,再插入新数据
- ✅ 异常时自动回滚
### 参数验证
- ✅ 使用 `@NotNull` 和 `@NotEmpty` 进行参数校验
- ✅ 批次ID和班级ID列表均为必填项
### 权限控制
- ✅ 使用 `@SaCheckPermission` 进行权限验证
- ✅ 权限标识: `stuColBatchClass:stuColBatchClass:setScope`
### 操作日志
- ✅ 使用 `@Log` 记录操作日志
- ✅ 业务类型: `BusinessType.UPDATE`
### 防重复提交
- ✅ 使用 `@RepeatSubmit` 防止重复提交
## 📊 API接口详情
### 请求信息
- **方法**: POST
- **路径**: `/stuColBatchClass/stuColBatchClass/setScope`
- **Content-Type**: application/x-www-form-urlencoded
### 请求参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| batchId | Long | 是 | 批次ID |
| deptIds | List<Long> | 是 | 授权的班级ID列表 |
### 响应格式
```json
{
"code": 200,
"msg": "权限设置成功,共设置 X 个班级权限",
"data": null
}
```
## 🔍 业务逻辑
### 第一步:查询班级信息
- 通过 `dept_id` 关联 `xg_class_msg` 表的 `id` 字段
- 查询条件: `deleted = 0 AND class_status = '1'`
- 获取字段: `college_id`, `college_name`, `major_id`, `major_name`, `id`, `class_name`
### 第二步:清理历史权限
- SQL: `UPDATE xg_stu_col_batch_class SET deleted = 1 WHERE batch_id = #{batchId}`
- 逻辑删除,保留历史数据
### 第三步:插入新权限
- 遍历查询到的班级信息
- 构建 `XgStuColBatchClass` 实体对象
- 批量插入到 `xg_stu_col_batch_class` 表
## ✅ 质量保证
### 代码规范
- ✅ 遵循项目开发规范
- ✅ 使用统一的响应格式 `R<Void>`
- ✅ 完整的异常处理机制
- ✅ 详细的注释说明
### 数据库规范
- ✅ 使用逻辑删除,不物理删除数据
- ✅ 包含完整的基础字段
- ✅ 事务一致性保证
### 安全性
- ✅ 参数验证防止非法输入
- ✅ 权限控制确保访问安全
- ✅ 防重复提交保护
## 🚀 后续优化建议
1. **性能优化**: 可考虑使用批量插入提高性能
2. **日志完善**: 可添加更详细的操作日志记录
3. **缓存机制**: 可考虑添加缓存减少数据库查询
4. **异步处理**: 对于大量数据可考虑异步处理
## 📝 测试建议
1. **单元测试**: 测试各个步骤的逻辑正确性
2. **集成测试**: 测试完整的API调用流程
3. **异常测试**: 测试各种异常情况的处理
4. **性能测试**: 测试大量数据的处理性能
---
**备注**: 本次开发严格按照项目规范进行,确保了代码质量和数据一致性。
@@ -0,0 +1,149 @@
# 学生信息收集批次管理页面收集范围功能修复
**修改时间**: 2025-01-27 15:30:00
**修改人**: wuzilong
**修改文件**: `web/src/views/XgStuColBatch/stuColBatch/index.vue`
## 问题描述
在学生信息收集批次管理页面的收集范围功能中,存在以下问题:
1. **现象**: 第一次配置收集范围后(如配置11个权限),第二次配置时去掉其中一个勾选,第三次打开收集范围弹窗时,发现之前去掉勾选的权限又重新被勾选了
2. **后台数据**: 从后台API接口看,数据只返回了10条(正确的),但前端显示仍然包含已取消的权限
3. **根本原因**: 树形组件的勾选状态管理存在问题,历史勾选状态没有正确清空
## 解决方案
### 核心修改思路
每次打开收集范围弹窗界面时,首先清空部门树的勾选项目,然后再将选择的内容回显。
### 具体修改内容
#### 1. 修改 `handleScope` 方法
```javascript
/** 收集范围按钮操作 */
const handleScope = async (row: StuColBatchVO) => {
currentBatch.value = row;
// 先清空勾选状态
checkedDeptIds.value = [];
await loadDeptTree();
await loadCurrentScope(row.id);
scopeDialog.visible = true;
// 使用nextTick确保DOM更新完成后再设置勾选状态
await nextTick();
if (scopeTreeRef.value && checkedDeptIds.value.length > 0) {
scopeTreeRef.value.setCheckedKeys(checkedDeptIds.value);
}
};
```
#### 2. 移除树形组件的 `:default-checked-keys` 属性
```vue
<!-- 修改前 -->
<el-tree
ref="scopeTreeRef"
:data="deptTreeData"
show-checkbox
default-expand-all
node-key="id"
:default-checked-keys="checkedDeptIds"
:props="{ children: 'children', label: 'label' }"
:check-strictly="false"
/>
<!-- 修改后 -->
<el-tree
ref="scopeTreeRef"
:data="deptTreeData"
show-checkbox
default-expand-all
node-key="id"
:props="{ children: 'children', label: 'label' }"
:check-strictly="false"
/>
```
#### 3. 添加弹窗关闭事件处理
```vue
<el-dialog title="设置收集范围" v-model="scopeDialog.visible" width="500px" append-to-body @close="handleScopeDialogClose">
```
#### 4. 新增 `handleScopeDialogClose` 方法
```javascript
/** 处理收集范围弹窗关闭 */
const handleScopeDialogClose = () => {
// 清空相关状态
currentBatch.value = null;
checkedDeptIds.value = [];
// 清空树形组件的勾选状态
if (scopeTreeRef.value) {
scopeTreeRef.value.setCheckedKeys([]);
}
};
```
#### 5. 修改 `cancelScope` 方法
```javascript
/** 取消收集范围设置 */
const cancelScope = () => {
scopeDialog.visible = false;
currentBatch.value = null;
checkedDeptIds.value = [];
// 清空树形组件的勾选状态
if (scopeTreeRef.value) {
scopeTreeRef.value.setCheckedKeys([]);
}
};
```
#### 6. 修改 `submitScope` 方法
```javascript
if (response && response.code === 200) {
ElMessage.success(response.msg || '收集范围设置成功');
scopeDialog.visible = false;
// 提交成功后清空状态
handleScopeDialogClose();
} else {
ElMessage.error(response?.msg || '设置收集范围失败');
}
```
## 技术要点
### 1. 状态管理优化
- **问题**: 使用 `:default-checked-keys` 只在组件初始化时生效
- **解决**: 改为手动调用 `setCheckedKeys()` 方法控制勾选状态
### 2. 时序控制
- **问题**: DOM更新和状态设置的时序问题
- **解决**: 使用 `nextTick()` 确保DOM更新完成后再设置勾选状态
### 3. 状态清理
- **问题**: 弹窗关闭时状态没有完全清理
- **解决**: 在弹窗关闭、取消、提交成功时都进行状态清理
## 测试验证
### 测试场景
1. **首次配置**: 配置11个权限,保存成功
2. **修改配置**: 去掉1个权限,保存成功
3. **再次打开**: 验证只显示10个勾选,不包含已取消的权限
4. **多次操作**: 重复上述操作,确保状态正确
### 预期结果
- 每次打开弹窗时,勾选状态与后台数据完全一致
- 历史勾选状态不会影响当前显示
- 弹窗关闭后状态完全清理
## 影响范围
- **功能影响**: 仅影响收集范围功能的显示逻辑,不影响数据保存
- **用户体验**: 修复了勾选状态显示错误的问题,提升用户体验
- **代码质量**: 优化了状态管理逻辑,提高了代码的健壮性
## 相关文档
- 前端开发规范: `.cursor/cursorrules-frontend.md`
- 学生信息收集批次管理API文档: `docs/开发文档/API/学生信息收集批次管理API.md`
@@ -0,0 +1,46 @@
/*
Navicat Premium Dump SQL
Source Server : 47.99.164.66 hn02le.34lkdLKD
Source Server Type : MySQL
Source Server Version : 50736 (5.7.36)
Source Host : 47.99.164.66:3306
Source Schema : hzdyjs_xg
Target Server Type : MySQL
Target Server Version : 50736 (5.7.36)
File Encoding : 65001
Date: 26/07/2025 23:24:40
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for xg_student_manager
-- ----------------------------
DROP TABLE IF EXISTS `xg_student_manager`;
CREATE TABLE `xg_student_manager` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`manager_name` varchar(100) NOT NULL COMMENT '管理员姓名',
`manager_type` char(1) NOT NULL COMMENT '管理员类型(1 全校管理员 2 自定义管理员 3 班主任)',
`manager_level` int(11) DEFAULT '1' COMMENT '管理级别(1-3,1为最高)',
`user_id` bigint(20) DEFAULT NULL COMMENT '关联用户ID',
`phone` varchar(20) DEFAULT NULL COMMENT '联系电话',
`gender` char(1) DEFAULT '0' COMMENT '性别(0男 1女 2未知)',
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
`tenant_id` bigint(20) DEFAULT '0' COMMENT '租户编号',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`),
KEY `idx_user_id` (`user_id`),
KEY `idx_manager_type` (`manager_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生管理员信息表';
SET FOREIGN_KEY_CHECKS = 1;
@@ -0,0 +1,44 @@
/*
Navicat Premium Dump SQL
Source Server : 47.99.164.66 hn02le.34lkdLKD
Source Server Type : MySQL
Source Server Version : 50736 (5.7.36)
Source Host : 47.99.164.66:3306
Source Schema : hzdyjs_xg
Target Server Type : MySQL
Target Server Version : 50736 (5.7.36)
File Encoding : 65001
Date: 26/07/2025 23:24:33
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for xg_student_manager_source
-- ----------------------------
DROP TABLE IF EXISTS `xg_student_manager_source`;
CREATE TABLE `xg_student_manager_source` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`manager_id` bigint(20) NOT NULL COMMENT '管理员ID',
`permission_type` char(1) DEFAULT '1' COMMENT '权限类型(1查看 2编辑 3完全管理)',
`auth_type` char(1) NOT NULL COMMENT '授权类型(1全校级 2自定义 3班主任)',
`auth_source` bigint(20) DEFAULT NULL COMMENT '授权来源ID(对应班级id)',
`status` char(1) DEFAULT '0' COMMENT '状态(0有效 1已撤销)',
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
`tenant_id` bigint(20) DEFAULT '0' COMMENT '租户编号',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`),
KEY `idx_manager_id` (`manager_id`),
KEY `idx_auth_source` (`auth_source`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生管理员授权关系表';
SET FOREIGN_KEY_CHECKS = 1;
@@ -0,0 +1,150 @@
/*
Navicat Premium Dump SQL
Source Server : 47.99.164.66 hn02le.34lkdLKD
Source Server Type : MySQL
Source Server Version : 50736 (5.7.36)
Source Host : 47.99.164.66:3306
Source Schema : hzdyjs_xg
Target Server Type : MySQL
Target Server Version : 50736 (5.7.36)
File Encoding : 65001
Date: 26/07/2025 23:24:16
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for xg_student_msg
-- ----------------------------
DROP TABLE IF EXISTS `xg_student_msg`;
CREATE TABLE `xg_student_msg` (
`id` bigint(20) NOT NULL COMMENT '主键ID(雪花ID)',
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
`create_dept` bigint(20) DEFAULT NULL 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 '更新时间',
`deleted` tinyint(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
`student_no` varchar(32) NOT NULL COMMENT '学号',
`id_card` varchar(18) DEFAULT NULL COMMENT '身份证号',
`name` varchar(50) NOT NULL COMMENT '姓名',
`name_english` varchar(100) DEFAULT NULL COMMENT '英文姓名',
`former_name` varchar(50) DEFAULT NULL COMMENT '曾用名',
`gender` char(1) NOT NULL COMMENT '性别:0-男,1-女',
`birth_date` date DEFAULT NULL COMMENT '出生日期',
`nationality` varchar(20) DEFAULT NULL COMMENT '民族 ',
`native_place` varchar(20) DEFAULT NULL COMMENT '籍贯',
`political_status` varchar(20) DEFAULT NULL COMMENT '政治面貌',
`hukou_location` varchar(1000) DEFAULT NULL COMMENT '户籍所在地',
`home_address` varchar(1000) DEFAULT NULL COMMENT '家庭地址',
`current_address` varchar(1000) DEFAULT NULL COMMENT '现住址',
`postal_code` varchar(10) DEFAULT NULL COMMENT '邮政编码',
`photo_url` varchar(500) DEFAULT NULL COMMENT '照片URL',
`photo_path` varchar(500) DEFAULT NULL COMMENT '学生照片存储路径',
`phone` varchar(20) DEFAULT NULL COMMENT '手机号码',
`is_boarder` tinyint(1) DEFAULT '0' COMMENT '是否住校:0-否,1-是',
`education_level` varchar(20) DEFAULT NULL COMMENT '文化程度',
`household_register_type` varchar(20) DEFAULT NULL COMMENT '户口类型:农业、非农业',
`religion` varchar(200) DEFAULT NULL COMMENT '宗教信仰',
`source_region` varchar(100) DEFAULT NULL COMMENT '生源地区(省市县)',
`graduate_school` varchar(100) DEFAULT NULL COMMENT '毕业院校',
`email` varchar(100) DEFAULT NULL COMMENT '电子邮箱',
`qq` varchar(20) DEFAULT NULL COMMENT 'QQ号码',
`wechat` varchar(50) DEFAULT NULL COMMENT '微信号',
`marital_status` varchar(10) DEFAULT NULL COMMENT '婚姻状况:1 未婚、2 已婚、3 离异、4 丧偶 ',
`emergency_contact_name` varchar(50) DEFAULT NULL COMMENT '紧急联系人姓名',
`emergency_contact_phone` varchar(20) DEFAULT NULL COMMENT '紧急联系人电话',
`emergency_contact_relation` varchar(100) DEFAULT NULL COMMENT '紧急联系人关系',
`is_poor_student` tinyint(1) DEFAULT '0' COMMENT '是否贫困生:0-否,1-是',
`is_minority` tinyint(1) DEFAULT '0' COMMENT '是否少数民族:0-否,1-是',
`is_disabled` tinyint(1) DEFAULT '0' COMMENT '是否残疾:0-否,1-是',
`is_orphan` tinyint(1) DEFAULT '0' COMMENT '是否孤儿:0-否,1-是',
`is_left_behind_child` tinyint(1) DEFAULT '0' COMMENT '是否留守儿童:0-否,1-是',
`is_single_child` tinyint(1) DEFAULT '0' COMMENT '是否独生子女:0-否,1-是',
`is_low_income` tinyint(1) DEFAULT '0' COMMENT '是否低保:0-否,1-是',
`has_loan` tinyint(1) DEFAULT '0' COMMENT '是否有助学贷款:0-否,1-是',
`loan_amount` decimal(10,2) DEFAULT NULL COMMENT '助学贷款金额',
`specialties` text COMMENT '特长爱好',
`awards` text COMMENT '获奖情况',
`violations` text COMMENT '违纪记录',
`social_activities` text COMMENT '社会活动',
`father_name` varchar(50) DEFAULT NULL COMMENT '父亲姓名',
`father_phone` varchar(20) DEFAULT NULL COMMENT '父亲电话',
`father_work_unit` varchar(1000) DEFAULT NULL COMMENT '父亲工作单位',
`mother_name` varchar(50) DEFAULT NULL COMMENT '母亲姓名',
`mother_phone` varchar(20) DEFAULT NULL COMMENT '母亲电话',
`mother_work_unit` varchar(1000) DEFAULT NULL COMMENT '母亲工作单位',
`guardian_name` varchar(50) DEFAULT NULL COMMENT '监护人姓名',
`guardian_phone` varchar(20) DEFAULT NULL COMMENT '监护人电话',
`guardian_relation` varchar(20) DEFAULT NULL COMMENT '监护人关系',
`family_income` decimal(12,2) DEFAULT NULL COMMENT '家庭年收入',
`per_capita_income` decimal(12,2) DEFAULT NULL COMMENT '人均收入',
`income_source` varchar(100) DEFAULT NULL COMMENT '收入来源',
`family_economic_status` varchar(20) DEFAULT NULL COMMENT '家庭经济状况:富裕、一般、困难、特困',
`family_members` tinyint(2) DEFAULT NULL COMMENT '家庭成员数量',
`height` decimal(10,2) DEFAULT NULL COMMENT '身高(cm)',
`weight` decimal(10,2) DEFAULT NULL COMMENT '体重(kg)',
`blood_type` varchar(10) DEFAULT NULL COMMENT '血型',
`health_status` varchar(1000) DEFAULT NULL COMMENT '健康状况',
`special_condition` varchar(1000) DEFAULT NULL COMMENT '特殊体质或疾病',
`medical_history` varchar(1000) DEFAULT NULL COMMENT '病史',
`allergies` varchar(1000) DEFAULT NULL COMMENT '过敏史',
`disability_type` varchar(50) DEFAULT NULL COMMENT '残疾类型 1 - 视力残疾 2 - 听力残疾 3 - 智力残疾 9 - 其他残疾',
`disability_level` varchar(20) DEFAULT NULL COMMENT '残疾等级',
`admission_category` varchar(20) DEFAULT NULL COMMENT '录取类别:统招、自主招生、专项计划等',
`student_status` char(1) DEFAULT '1' COMMENT '学籍状态:1-在籍,2-休学,3-复学,4-退学,5-毕业',
`enrollment_year` int(4) DEFAULT NULL COMMENT '入学年份',
`enrollment_date` date DEFAULT NULL COMMENT '入学日期',
`bank_card_no` varchar(30) DEFAULT NULL COMMENT '银行卡号',
`bank_name` varchar(100) DEFAULT NULL COMMENT '开户银行',
`bank_branch` varchar(100) DEFAULT NULL COMMENT '开户支行',
`card_holder_name` varchar(50) DEFAULT NULL COMMENT '持卡人姓名',
`info_status` char(1) DEFAULT '1' COMMENT '信息状态:1-正常,2-待审核,3-审核中,4-已驳回,5-已锁定',
`data_source` varchar(20) DEFAULT 'manual' COMMENT '数据来源:manual-手工录入,import-批量导入,sync-系统同步',
`last_batch_id` bigint(20) DEFAULT NULL COMMENT '最后修改批次ID',
`last_audit_time` datetime DEFAULT NULL COMMENT '最后审核时间',
`is_complete` tinyint(1) DEFAULT '0' COMMENT '信息是否完整:0-不完整,1-完整',
`completion_rate` decimal(10,2) DEFAULT '0.00' COMMENT '完整度百分比',
`school_system` int(2) DEFAULT '4' COMMENT '学制(年)- 预留,数据从班级表关联',
`academic_level` varchar(20) DEFAULT NULL COMMENT '学历层次 - 预留,数据从班级表关联',
`training_type` varchar(20) DEFAULT NULL COMMENT '培养方式:全日制、在职、函授、夜大等 - 预留,数据从班级表关联',
`major_id` varchar(100) DEFAULT NULL COMMENT '专业id - 预留,数据从班级表关联',
`major_name` varchar(100) DEFAULT NULL COMMENT '专业名称 - 预留,数据从班级表关联',
`class_id` varchar(100) DEFAULT NULL COMMENT '班级id - 预留,数据从班级表关联',
`class_name` varchar(100) DEFAULT NULL COMMENT '班级名称 - 预留,数据从班级表关联',
`grade` varchar(10) DEFAULT NULL COMMENT '年级 - 预留,数据从班级表关联',
`college_id` varchar(100) DEFAULT NULL COMMENT '学院id - 预留,数据从班级表关联',
`college_name` varchar(100) DEFAULT NULL COMMENT '学院名称 - 预留,数据从班级表关联',
`counselor_id` bigint(20) DEFAULT NULL COMMENT '辅导员ID - 预留,数据从班级表关联',
`counselor_name` varchar(50) DEFAULT NULL COMMENT '辅导员姓名 - 预留,数据从班级表关联',
`class_teacher_id` bigint(20) DEFAULT NULL COMMENT '班主任ID - 预留,数据从班级表关联',
`class_teacher_name` varchar(50) DEFAULT NULL COMMENT '班主任姓名 - 预留,数据从班级表关联',
`dormitory_building` varchar(100) DEFAULT NULL COMMENT '宿舍楼栋 - 预留,数据从班级表关联',
`dormitory_room` varchar(100) DEFAULT NULL COMMENT '宿舍房间号 - 预留,数据从班级表关联',
`ext_field1` varchar(200) DEFAULT NULL COMMENT '扩展字段1',
`ext_field2` varchar(200) DEFAULT NULL COMMENT '扩展字段2',
`ext_field3` varchar(200) DEFAULT NULL COMMENT '扩展字段3',
`ext_field4` varchar(200) DEFAULT NULL COMMENT '扩展字段4',
`ext_field5` varchar(500) DEFAULT NULL COMMENT '扩展字段5',
`remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_student_no_tenant` (`student_no`,`tenant_id`),
UNIQUE KEY `uk_id_card_tenant` (`id_card`,`tenant_id`),
KEY `idx_tenant_id` (`tenant_id`),
KEY `idx_deleted` (`deleted`),
KEY `idx_name` (`name`),
KEY `idx_student_status` (`student_status`),
KEY `idx_info_status` (`info_status`),
KEY `idx_enrollment_year` (`enrollment_year`),
KEY `idx_last_batch_id` (`last_batch_id`),
KEY `idx_phone` (`phone`),
KEY `idx_create_time` (`create_time`),
KEY `idx_status_filter` (`tenant_id`,`student_status`,`info_status`,`deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生信息表';
SET FOREIGN_KEY_CHECKS = 1;
@@ -0,0 +1,61 @@
-- =============================================
-- 学生信息收集批次管理表设计
-- 创建时间: 2025-01-27
-- 说明: 用于管理学生信息收集的批次信息和班级权限
-- =============================================
-- 1. 学生信息收集批次表
DROP TABLE IF EXISTS `xg_stu_col_batch`;
CREATE TABLE `xg_stu_col_batch` (
`id` bigint(20) NOT NULL COMMENT '批次ID',
`batch_name` varchar(100) NOT NULL COMMENT '批次名称',
`description` text COMMENT '批次描述',
`start_time` datetime NOT NULL COMMENT '开始时间',
`end_time` datetime NOT NULL COMMENT '结束时间',
`status` char(1) NOT NULL DEFAULT '0' COMMENT '状态(0正常 1停用)',
`collection_type` varchar(50) NOT NULL COMMENT '收集类型 1 - 新学期收集 2 - 其他',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
-- 基础字段
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
`create_dept` bigint(20) DEFAULT NULL 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 '更新时间',
`deleted` tinyint(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
PRIMARY KEY (`id`),
KEY `idx_status` (`status`),
KEY `idx_start_time` (`start_time`),
KEY `idx_end_time` (`end_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='学生信息收集批次表';
-- 2. 批次班级权限表
DROP TABLE IF EXISTS `xg_stu_col_batch_class`;
CREATE TABLE `xg_stu_col_batch_class` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`batch_id` bigint(20) NOT NULL COMMENT '批次ID',
`class_id` bigint(20) NOT NULL COMMENT '班级ID',
`class_name` varchar(100) NOT NULL COMMENT '班级名称',
`major_id` bigint(20) DEFAULT NULL COMMENT '专业ID',
`major_name` varchar(50) DEFAULT NULL COMMENT '专业名称',
`college_id` bigint(20) DEFAULT NULL COMMENT '院系ID',
`college_name` varchar(100) DEFAULT NULL COMMENT '院系名称',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
-- 基础字段
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
`create_dept` bigint(20) DEFAULT NULL 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 '更新时间',
`deleted` tinyint(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_batch_class` (`batch_id`, `class_id`),
KEY `idx_batch_id` (`batch_id`),
KEY `idx_class_id` (`class_id`),
KEY `idx_grade_id` (`major_id`),
KEY `idx_department_id` (`college_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='学生信息收集批次班级权限表';