模块名称: 奖学金申请管理
版本: v2.0
创建日期: 2025-01-01
最后更新: 2025-01-01
奖学金申请管理模块v2.0版本实现了从学生自主申请到班主任代申请的模式转换,支持班级名额分配、批量申请提交、审核流程等功能。
所有接口均需要Bearer Token认证,权限前缀:jcbt:scholarshipApplication:
/jcbt/scholarshipApplicationapplication/json;charset=utf-8Bearer {access_token}接口描述: 分页查询奖学金申请记录列表
GET /jcbt/scholarshipApplication/listjcbt: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": "查询成功"
}
接口描述: 根据ID查询申请记录详细信息
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"
}
}
接口描述: 创建新的奖学金申请记录
POST /jcbt/scholarshipApplicationjcbt: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
}
接口描述: 修改申请记录信息
PUT /jcbt/scholarshipApplicationjcbt:scholarshipApplication:edit请求体: 与新增接口相同,需包含id字段
接口描述: 批量删除申请记录
DELETE /jcbt/scholarshipApplication/{ids}jcbt:scholarshipApplication:remove路径参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ids | String | 是 | 申请记录ID串,用逗号分隔 |
接口描述: 查询班级可申请的奖学金类型列表(有可用名额)
GET /jcbt/scholarshipApplication/availablejcbt: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
}
]
}
接口描述: 查询班主任负责班级的申请记录
GET /jcbt/scholarshipApplication/myjcbt: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"
}
]
}
接口描述: 查询待审核的申请记录列表
GET /jcbt/scholarshipApplication/pendingjcbt: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
}
]
}
接口描述: 检查学生是否符合申请条件
GET /jcbt/scholarshipApplication/checkjcbt:scholarshipApplication:check请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| studentId | Long | 是 | 学生ID |
| batchId | Long | 是 | 批次ID |
| scholarshipTypeId | Long | 是 | 奖学金类型ID |
响应示例:
{
"code": 200,
"msg": "查询成功",
"data": {
"eligible": true,
"message": "学生符合申请条件",
"restrictions": []
}
}
接口描述: 批量审核申请记录
POST /jcbt/scholarshipApplication/approvejcbt:scholarshipApplication:approve请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| status | String | 是 | 审核状态(APPROVED/REJECTED) |
| reviewerId | Long | 是 | 审核人ID |
| reviewerName | String | 是 | 审核人姓名 |
| reviewComment | String | 否 | 审核意见 |
请求体:
[1, 2, 3, 4]
响应示例:
{
"code": 200,
"msg": "操作成功",
"data": null
}
接口描述: 导出申请记录列表为Excel文件
POST /jcbt/scholarshipApplication/exportjcbt:scholarshipApplication:export请求体: 查询条件参数(与列表查询相同)
响应: Excel文件下载
接口描述: 从Excel文件导入申请记录
POST /jcbt/scholarshipApplication/importjcbt:scholarshipApplication:importmultipart/form-data请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| file | File | 是 | Excel文件 |
接口描述: 获取申请相关的统计信息
GET /jcbt/scholarshipApplication/statisticsjcbt: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
}
}
接口描述: 班主任为学生批量提交申请(v2.0核心功能)
POST /jcbt/scholarshipApplication/batchjcbt: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
}
接口描述: 将草稿状态的申请提交审核
POST /jcbt/scholarshipApplication/{id}/submitjcbt:scholarshipApplication:submit路径参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Long | 是 | 申请记录ID |
接口描述: 撤回已提交的申请
POST /jcbt/scholarshipApplication/{id}/withdrawjcbt:scholarshipApplication:withdraw路径参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Long | 是 | 申请记录ID |
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| reason | String | 否 | 撤回原因 |
接口描述: 查询班级的名额分配和使用情况
GET /jcbt/scholarshipApplication/quotajcbt: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
}
}
| 状态值 | 说明 | 描述 |
|---|---|---|
| DRAFT | 草稿 | 申请记录已创建但未提交 |
| SUBMITTED | 已提交 | 申请已提交,等待审核 |
| REVIEWING | 审核中 | 申请正在审核过程中 |
| APPROVED | 已通过 | 申请审核通过 |
| REJECTED | 已拒绝 | 申请审核被拒绝 |
| WITHDRAWN | 已撤回 | 申请人主动撤回申请 |
| 类型值 | 说明 | 描述 |
|---|---|---|
| STUDENT | 学生申请 | 学生自主申请(v1.0模式) |
| TEACHER | 教师代申请 | 班主任代学生申请(v2.0模式) |
| 类型值 | 说明 | 描述 |
|---|---|---|
| RECOMMEND | 教师推荐 | 班主任推荐学生申请 |
| AUTO | 自动评定 | 系统根据成绩自动评定 |
| DIRECT | 直接指定 | 学院直接指定学生 |
| 状态值 | 说明 | 描述 |
|---|---|---|
| PENDING | 待上传 | 材料尚未上传 |
| PARTIAL | 部分上传 | 部分材料已上传 |
| COMPLETE | 完整上传 | 所有材料已上传完整 |
| 错误码 | 说明 | 解决方案 |
|---|---|---|
| 400 | 请求参数错误 | 检查请求参数格式和必填项 |
| 401 | 认证失败 | 检查Token是否有效 |
| 403 | 权限不足 | 联系管理员分配相应权限 |
| 404 | 资源不存在 | 检查资源ID是否正确 |
| 500 | 服务器内部错误 | 联系技术支持 |
| 错误信息 | 说明 | 解决方案 |
|---|---|---|
| "该学生在此批次中已有申请记录" | 学生重复申请 | 检查申请记录,避免重复提交 |
| "班级可用名额不足" | 名额不够 | 等待名额释放或调整名额分配 |
| "只有草稿状态的申请才能提交" | 状态错误 | 检查申请状态 |
| "已审核的申请不能撤回" | 撤回限制 | 已审核申请无法撤回 |
| "申请时间窗口未开放" | 时间限制 | 等待申请时间窗口开放 |
// 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
}
])
});
// 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