19 KiB
19 KiB
奖学金申请管理API文档
模块名称: 奖学金申请管理
版本: v2.0
创建日期: 2025-01-01
最后更新: 2025-01-01
📋 目录
1. 概述
1.1 模块介绍
奖学金申请管理模块v2.0版本实现了从学生自主申请到班主任代申请的模式转换,支持班级名额分配、批量申请提交、审核流程等功能。
1.2 主要特性
- ✅ 班主任代申请: 支持班主任为学生批量提交申请
- ✅ 名额控制: 班级级别的名额分配和使用管理
- ✅ 时间窗口控制: 支持申请时间窗口管理
- ✅ 审核流程: 完整的申请审核和状态管理
- ✅ 材料管理: 支持申请材料上传和审核
- ✅ 统计分析: 提供详细的申请统计数据
1.3 权限说明
所有接口均需要Bearer Token认证,权限前缀:jcbt:scholarshipApplication:
1.4 接口基础信息
- Base URL:
/jcbt/scholarshipApplication - Content-Type:
application/json;charset=utf-8 - Authorization:
Bearer {access_token}
2. 基础管理接口
2.1 查询申请记录列表
接口描述: 分页查询奖学金申请记录列表
- URL:
GET /jcbt/scholarshipApplication/list - 权限:
jcbt:scholarshipApplication:list
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| pageNum | Integer | 否 | 页码,默认1 |
| pageSize | Integer | 否 | 每页条数,默认10 |
| batchId | Long | 否 | 批次ID |
| scholarshipTypeId | Long | 否 | 奖学金类型ID |
| studentCode | String | 否 | 学生学号 |
| studentName | String | 否 | 学生姓名(模糊查询) |
| deptId | Long | 否 | 学院ID |
| classId | Long | 否 | 班级ID |
| applicantType | String | 否 | 申请人类型 |
| status | String | 否 | 申请状态 |
| beginCreateTime | String | 否 | 创建开始时间 |
| endCreateTime | String | 否 | 创建结束时间 |
响应示例:
{
"total": 100,
"rows": [
{
"id": 1,
"batchId": 1,
"batchName": "2024-2025学年奖学金",
"scholarshipTypeId": 1,
"scholarshipTypeName": "国家奖学金",
"studentCode": "2021001001",
"studentName": "张三",
"studentId": 1001,
"deptId": 103,
"deptName": "计算机学院",
"classId": 1001,
"className": "计算机2021-1班",
"applicantType": "TEACHER",
"applicantId": 2001,
"applicantName": "李老师",
"applicationType": "RECOMMEND",
"comprehensiveScore": 95.5,
"academicScore": 96.0,
"moralScore": 95.0,
"physicalScore": 94.0,
"status": "SUBMITTED",
"submitTime": "2024-03-15 10:30:00",
"requireMaterials": 1,
"materialStatus": "PENDING",
"createTime": "2024-03-15 10:30:00"
}
],
"code": 200,
"msg": "查询成功"
}
2.2 获取申请记录详情
接口描述: 根据ID查询申请记录详细信息
- URL:
GET /jcbt/scholarshipApplication/{id} - 权限:
jcbt:scholarshipApplication:query
路径参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Long | 是 | 申请记录ID |
响应示例:
{
"code": 200,
"msg": "操作成功",
"data": {
"id": 1,
"batchId": 1,
"batchName": "2024-2025学年奖学金",
"scholarshipTypeId": 1,
"scholarshipTypeName": "国家奖学金",
"studentCode": "2021001001",
"studentName": "张三",
"studentId": 1001,
"deptId": 103,
"deptName": "计算机学院",
"classId": 1001,
"className": "计算机2021-1班",
"applicantType": "TEACHER",
"applicantId": 2001,
"applicantName": "李老师",
"applicationType": "RECOMMEND",
"applicationReason": "该学生综合成绩优秀,品学兼优",
"applicationDescription": "详细申请说明...",
"comprehensiveScore": 95.5,
"academicScore": 96.0,
"moralScore": 95.0,
"physicalScore": 94.0,
"aestheticScore": 93.0,
"laborScore": 94.0,
"awards": "国家级竞赛一等奖",
"socialPractice": "暑期社会实践活动",
"familyEconomicStatus": "家庭经济困难",
"status": "SUBMITTED",
"submitTime": "2024-03-15 10:30:00",
"requireMaterials": 1,
"materialStatus": "PENDING",
"createTime": "2024-03-15 10:30:00",
"updateTime": "2024-03-15 10:35:00"
}
}
2.3 新增申请记录
接口描述: 创建新的奖学金申请记录
- URL:
POST /jcbt/scholarshipApplication - 权限:
jcbt:scholarshipApplication:add
请求体:
{
"batchId": 1,
"scholarshipTypeId": 1,
"studentCode": "2021001001",
"studentName": "张三",
"studentId": 1001,
"deptId": 103,
"deptName": "计算机学院",
"classId": 1001,
"className": "计算机2021-1班",
"applicantType": "TEACHER",
"applicantId": 2001,
"applicantName": "李老师",
"applicationType": "RECOMMEND",
"applicationReason": "该学生综合成绩优秀,品学兼优",
"applicationDescription": "详细申请说明...",
"comprehensiveScore": 95.5,
"academicScore": 96.0,
"moralScore": 95.0,
"physicalScore": 94.0,
"aestheticScore": 93.0,
"laborScore": 94.0,
"awards": "国家级竞赛一等奖",
"socialPractice": "暑期社会实践活动",
"familyEconomicStatus": "家庭经济困难",
"requireMaterials": 1,
"remark": "备注信息"
}
响应示例:
{
"code": 200,
"msg": "操作成功",
"data": null
}
2.4 修改申请记录
接口描述: 修改申请记录信息
- URL:
PUT /jcbt/scholarshipApplication - 权限:
jcbt:scholarshipApplication:edit
请求体: 与新增接口相同,需包含id字段
2.5 删除申请记录
接口描述: 批量删除申请记录
- URL:
DELETE /jcbt/scholarshipApplication/{ids} - 权限:
jcbt:scholarshipApplication:remove
路径参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ids | String | 是 | 申请记录ID串,用逗号分隔 |
2.6 获取可申请奖学金类型
接口描述: 查询班级可申请的奖学金类型列表(有可用名额)
- URL:
GET /jcbt/scholarshipApplication/available - 权限:
jcbt:scholarshipApplication:available
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| classId | Long | 是 | 班级ID |
| batchId | Long | 是 | 批次ID |
响应示例:
{
"code": 200,
"msg": "查询成功",
"data": [
{
"scholarshipTypeId": 1,
"scholarshipTypeName": "国家奖学金",
"availableQuota": 2,
"totalQuota": 3
},
{
"scholarshipTypeId": 2,
"scholarshipTypeName": "国家励志奖学金",
"availableQuota": 5,
"totalQuota": 8
}
]
}
3. 业务功能接口
3.1 查询我的申请记录
接口描述: 查询班主任负责班级的申请记录
- URL:
GET /jcbt/scholarshipApplication/my - 权限:
jcbt:scholarshipApplication:my
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| applicantId | Long | 是 | 申请人ID(班主任ID) |
| batchId | Long | 否 | 批次ID |
响应示例:
{
"code": 200,
"msg": "查询成功",
"data": [
{
"id": 1,
"batchName": "2024-2025学年奖学金",
"scholarshipTypeName": "国家奖学金",
"studentCode": "2021001001",
"studentName": "张三",
"className": "计算机2021-1班",
"status": "SUBMITTED",
"submitTime": "2024-03-15 10:30:00"
}
]
}
3.2 查询待审核申请
接口描述: 查询待审核的申请记录列表
- URL:
GET /jcbt/scholarshipApplication/pending - 权限:
jcbt:scholarshipApplication:pending
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| reviewerId | Long | 否 | 审核人ID |
| status | String | 否 | 申请状态 |
响应示例:
{
"code": 200,
"msg": "查询成功",
"data": [
{
"id": 1,
"batchName": "2024-2025学年奖学金",
"scholarshipTypeName": "国家奖学金",
"studentCode": "2021001001",
"studentName": "张三",
"deptName": "计算机学院",
"className": "计算机2021-1班",
"status": "REVIEWING",
"submitTime": "2024-03-15 10:30:00",
"comprehensiveScore": 95.5
}
]
}
3.3 检查学生申请资格
接口描述: 检查学生是否符合申请条件
- URL:
GET /jcbt/scholarshipApplication/check - 权限:
jcbt:scholarshipApplication:check
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| studentId | Long | 是 | 学生ID |
| batchId | Long | 是 | 批次ID |
| scholarshipTypeId | Long | 是 | 奖学金类型ID |
响应示例:
{
"code": 200,
"msg": "查询成功",
"data": {
"eligible": true,
"message": "学生符合申请条件",
"restrictions": []
}
}
3.4 批量审核申请
接口描述: 批量审核申请记录
- URL:
POST /jcbt/scholarshipApplication/approve - 权限:
jcbt:scholarshipApplication:approve
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| status | String | 是 | 审核状态(APPROVED/REJECTED) |
| reviewerId | Long | 是 | 审核人ID |
| reviewerName | String | 是 | 审核人姓名 |
| reviewComment | String | 否 | 审核意见 |
请求体:
[1, 2, 3, 4]
响应示例:
{
"code": 200,
"msg": "操作成功",
"data": null
}
4. 辅助功能接口
4.1 导出申请记录
接口描述: 导出申请记录列表为Excel文件
- URL:
POST /jcbt/scholarshipApplication/export - 权限:
jcbt:scholarshipApplication:export
请求体: 查询条件参数(与列表查询相同)
响应: Excel文件下载
4.2 导入申请记录
接口描述: 从Excel文件导入申请记录
- URL:
POST /jcbt/scholarshipApplication/import - 权限:
jcbt:scholarshipApplication:import - Content-Type:
multipart/form-data
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| file | File | 是 | Excel文件 |
4.3 获取申请统计数据
接口描述: 获取申请相关的统计信息
- URL:
GET /jcbt/scholarshipApplication/statistics - 权限:
jcbt:scholarshipApplication:statistics
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| batchId | Long | 否 | 批次ID |
| deptId | Long | 否 | 学院ID |
响应示例:
{
"code": 200,
"msg": "查询成功",
"data": {
"statistics": [
{
"scholarshipTypeName": "国家奖学金",
"status": "SUBMITTED",
"count": 25,
"deptName": "计算机学院"
},
{
"scholarshipTypeName": "国家励志奖学金",
"status": "APPROVED",
"count": 15,
"deptName": "计算机学院"
}
],
"total": 40
}
}
4.4 班主任批量申请提交
接口描述: 班主任为学生批量提交申请(v2.0核心功能)
- URL:
POST /jcbt/scholarshipApplication/batch - 权限:
jcbt:scholarshipApplication:batch
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| batchId | Long | 是 | 批次ID |
| scholarshipTypeId | Long | 是 | 奖学金类型ID |
| classId | Long | 是 | 班级ID |
请求体:
[
{
"studentCode": "2021001001",
"studentName": "张三",
"studentId": 1001,
"deptId": 103,
"deptName": "计算机学院",
"className": "计算机2021-1班",
"applicantId": 2001,
"applicantName": "李老师",
"applicationType": "RECOMMEND",
"applicationReason": "综合成绩优秀",
"comprehensiveScore": 95.5,
"academicScore": 96.0,
"moralScore": 95.0,
"physicalScore": 94.0,
"aestheticScore": 93.0,
"laborScore": 94.0
},
{
"studentCode": "2021001002",
"studentName": "李四",
"studentId": 1002,
"deptId": 103,
"deptName": "计算机学院",
"className": "计算机2021-1班",
"applicantId": 2001,
"applicantName": "李老师",
"applicationType": "RECOMMEND",
"applicationReason": "学习态度端正",
"comprehensiveScore": 92.0,
"academicScore": 93.0,
"moralScore": 91.0,
"physicalScore": 92.0,
"aestheticScore": 90.0,
"laborScore": 93.0
}
]
响应示例:
{
"code": 200,
"msg": "操作成功",
"data": null
}
4.5 提交申请
接口描述: 将草稿状态的申请提交审核
- URL:
POST /jcbt/scholarshipApplication/{id}/submit - 权限:
jcbt:scholarshipApplication:submit
路径参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Long | 是 | 申请记录ID |
4.6 撤回申请
接口描述: 撤回已提交的申请
- URL:
POST /jcbt/scholarshipApplication/{id}/withdraw - 权限:
jcbt:scholarshipApplication:withdraw
路径参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Long | 是 | 申请记录ID |
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| reason | String | 否 | 撤回原因 |
4.7 获取班级名额使用情况
接口描述: 查询班级的名额分配和使用情况
- URL:
GET /jcbt/scholarshipApplication/quota - 权限:
jcbt:scholarshipApplication:quota
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| classId | Long | 是 | 班级ID |
| batchId | Long | 是 | 批次ID |
响应示例:
{
"code": 200,
"msg": "查询成功",
"data": {
"quotas": [
{
"scholarshipTypeId": 1,
"scholarshipTypeName": "国家奖学金",
"totalQuota": 3,
"usedQuota": 1,
"availableQuota": 2,
"status": "ACTIVE"
},
{
"scholarshipTypeId": 2,
"scholarshipTypeName": "国家励志奖学金",
"totalQuota": 8,
"usedQuota": 3,
"availableQuota": 5,
"status": "ACTIVE"
}
],
"totalQuota": 11,
"usedQuota": 4,
"availableQuota": 7
}
}
5. 数据模型
5.1 申请状态枚举
| 状态值 | 说明 | 描述 |
|---|---|---|
| DRAFT | 草稿 | 申请记录已创建但未提交 |
| SUBMITTED | 已提交 | 申请已提交,等待审核 |
| REVIEWING | 审核中 | 申请正在审核过程中 |
| APPROVED | 已通过 | 申请审核通过 |
| REJECTED | 已拒绝 | 申请审核被拒绝 |
| WITHDRAWN | 已撤回 | 申请人主动撤回申请 |
5.2 申请人类型枚举
| 类型值 | 说明 | 描述 |
|---|---|---|
| STUDENT | 学生申请 | 学生自主申请(v1.0模式) |
| TEACHER | 教师代申请 | 班主任代学生申请(v2.0模式) |
5.3 申请类型枚举
| 类型值 | 说明 | 描述 |
|---|---|---|
| RECOMMEND | 教师推荐 | 班主任推荐学生申请 |
| AUTO | 自动评定 | 系统根据成绩自动评定 |
| DIRECT | 直接指定 | 学院直接指定学生 |
5.4 材料状态枚举
| 状态值 | 说明 | 描述 |
|---|---|---|
| PENDING | 待上传 | 材料尚未上传 |
| PARTIAL | 部分上传 | 部分材料已上传 |
| COMPLETE | 完整上传 | 所有材料已上传完整 |
6. 错误码说明
6.1 通用错误码
| 错误码 | 说明 | 解决方案 |
|---|---|---|
| 400 | 请求参数错误 | 检查请求参数格式和必填项 |
| 401 | 认证失败 | 检查Token是否有效 |
| 403 | 权限不足 | 联系管理员分配相应权限 |
| 404 | 资源不存在 | 检查资源ID是否正确 |
| 500 | 服务器内部错误 | 联系技术支持 |
6.2 业务错误码
| 错误信息 | 说明 | 解决方案 |
|---|---|---|
| "该学生在此批次中已有申请记录" | 学生重复申请 | 检查申请记录,避免重复提交 |
| "班级可用名额不足" | 名额不够 | 等待名额释放或调整名额分配 |
| "只有草稿状态的申请才能提交" | 状态错误 | 检查申请状态 |
| "已审核的申请不能撤回" | 撤回限制 | 已审核申请无法撤回 |
| "申请时间窗口未开放" | 时间限制 | 等待申请时间窗口开放 |
7. 使用示例
7.1 班主任批量申请流程
// 1. 查询可申请的奖学金类型
const availableTypes = await fetch('/jcbt/scholarshipApplication/available?classId=1001&batchId=1', {
headers: {
'Authorization': 'Bearer ' + token,
'Content-Type': 'application/json'
}
});
// 2. 检查班级名额使用情况
const quotaUsage = await fetch('/jcbt/scholarshipApplication/quota?classId=1001&batchId=1', {
headers: {
'Authorization': 'Bearer ' + token,
'Content-Type': 'application/json'
}
});
// 3. 批量提交申请
const batchSubmit = await fetch('/jcbt/scholarshipApplication/batch?batchId=1&scholarshipTypeId=1&classId=1001', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + token,
'Content-Type': 'application/json'
},
body: JSON.stringify([
{
"studentCode": "2021001001",
"studentName": "张三",
"studentId": 1001,
"deptId": 103,
"deptName": "计算机学院",
"className": "计算机2021-1班",
"applicantId": 2001,
"applicantName": "李老师",
"applicationType": "RECOMMEND",
"applicationReason": "综合成绩优秀",
"comprehensiveScore": 95.5,
"academicScore": 96.0
}
])
});
7.2 审核申请流程
// 1. 查询待审核申请
const pendingApplications = await fetch('/jcbt/scholarshipApplication/pending?status=SUBMITTED', {
headers: {
'Authorization': 'Bearer ' + token,
'Content-Type': 'application/json'
}
});
// 2. 批量审核
const batchApprove = await fetch('/jcbt/scholarshipApplication/approve?status=APPROVED&reviewerId=3001&reviewerName=王老师&reviewComment=审核通过', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + token,
'Content-Type': 'application/json'
},
body: JSON.stringify([1, 2, 3])
});
文档维护: 技术团队
联系方式: tech@example.com
最后更新: 2025-01-01