Files
hzdyjs/docs/变更管理/code-adjust-record-2025-01-27-approve-student-msg-api.md
T
2025-07-28 01:26:18 +08:00

6.7 KiB

学生信息审核通过API接口开发记录

变更基本信息

  • 变更时间: 2025-01-27 20:15:30
  • 变更人员: cursor
  • 变更类型: 新增功能
  • 影响范围: 后端API接口

需求描述

在XgStudentMsgBatchController.java中增加一个API接口/studentMsgBatch/studentMsgBatch/approveStudentMsg,用于审核通过学生完善的个人信息。

接口设计

API路径

POST /studentMsgBatch/studentMsgBatch/approveStudentMsg

请求参数

  • batchId (Long): 批次ID,必填
  • userId (Long): 用户ID,必填
  • remark (String): 审核备注,可选

业务逻辑

  1. 第0步: 查询并验证要审核的学生信息批次数据
  2. 校验逻辑: 参考XgStudentMsgController.edit方法
    • 验证学号作为用户名的唯一性
    • 验证手机号唯一性(如果提供)
    • 验证邮箱唯一性(如果提供)
  3. 第一步: 更新xg_student_msg_batch表
    • remark = 入参的remark
    • info_status = '5' (已审核通过)
    • update_time = 当前时间
    • update_by = 当前登录人ID
  4. 第二步: 将xg_student_msg_batch的数据更新到xg_student_msg表
  5. 第三步: 自动更新sys_user表(通过xgStudentMsgService.updateByBo方法)

技术实现

1. Controller层修改

文件: backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgStudentMsgBatchController.java

/**
 * 审核通过学生信息提交
 *
 * @param batchId 批次ID
 * @param userId  用户ID
 * @param remark  审核备注
 */
@SaCheckPermission("studentMsgBatch:studentMsgBatch:edit")
@Log(title = "审核通过学生信息提交", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PostMapping("/approveStudentMsg")
public R<Void> approveStudentMsg(@RequestParam @NotNull(message = "批次ID不能为空") Long batchId,
        @RequestParam @NotNull(message = "用户ID不能为空") Long userId,
        @RequestParam(required = false) String remark) {
    return toAjax(xgStudentMsgBatchService.approveStudentMsg(batchId, userId, remark));
}

2. Service接口层修改

文件: backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/IXgStudentMsgBatchService.java

/**
 * 审核通过学生信息提交
 *
 * @param batchId 批次ID
 * @param userId  用户ID
 * @param remark  审核备注
 * @return 是否审核通过成功
 */
Boolean approveStudentMsg(Long batchId, Long userId, String remark);

3. Service实现层修改

文件: backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgStudentMsgBatchServiceImpl.java

  • 新增依赖注入: ISysUserService、IXgStudentMsgService
  • 实现完整的approveStudentMsg方法
  • 包含事务管理、数据校验、异常处理

4. Mapper层修改

文件: backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgStudentMsgBatchMapper.java

/**
 * 审核通过学生信息提交
 * 更新 xg_student_msg_batch 表中指定批次和用户的记录
 *
 * @param batchId       批次ID
 * @param userId        用户ID
 * @param remark        审核备注
 * @param currentUserId 当前登录人ID
 * @return 更新记录数
 */
int approveStudentMsgByBatchIdAndUserId(@Param("batchId") Long batchId,
        @Param("userId") Long userId,
        @Param("remark") String remark,
        @Param("currentUserId") Long currentUserId);

5. SQL实现

文件: backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/studentMsgBatch/XgStudentMsgBatchMapper.xml

<!-- 审核通过学生信息提交 -->
<update id="approveStudentMsgByBatchIdAndUserId">
    UPDATE xg_student_msg_batch
    SET remark = #{remark},
        info_status = '5',
        update_by = #{currentUserId},
        update_time = NOW()
    WHERE batch_id = #{batchId}
      AND id = #{userId}
      AND deleted = 0
</update>

功能特性

安全性

  • 权限控制: @SaCheckPermission("studentMsgBatch:studentMsgBatch:edit")
  • 防重复提交: @RepeatSubmit()
  • 参数验证: 必填参数验证

可靠性

  • 事务管理: @Transactional(rollbackFor = Exception.class)
  • 数据完整性: 查询验证 → 更新批次表 → 更新学生表 → 更新用户表
  • 异常处理: 完整的try-catch和异常抛出

可维护性

  • 详细日志: 记录操作过程和异常信息
  • 操作记录: @Log(title = "审核通过学生信息提交", businessType = BusinessType.UPDATE)

数据库影响

表结构变更

无新增表结构,使用现有表:

  • xg_student_msg_batch: 更新审核状态和备注
  • xg_student_msg: 同步学生信息数据
  • sys_user: 同步用户信息数据

数据状态变更

  • info_status: '3'(审核中) → '5'(已审核通过)

测试建议

功能测试

  1. 正常流程: 提供有效的batchId和userId,验证审核通过成功
  2. 参数验证: 测试必填参数为空的情况
  3. 数据验证: 测试学号、手机号、邮箱重复的情况
  4. 权限验证: 测试无权限用户访问的情况

异常测试

  1. 数据不存在: 提供不存在的batchId或userId
  2. 并发测试: 多用户同时审核同一条记录
  3. 事务回滚: 模拟第二步或第三步失败的情况

相关文档

API文档更新

需要在以下文档中补充新接口说明:

  • docs/开发文档/API/学生信息批次收集API.md
  • docs/开发文档/API/API文档总览.md

相关接口

  • 驳回接口: POST /studentMsgBatch/studentMsgBatch/rejectStudentMsg
  • 查询接口: GET /studentMsgBatch/studentMsgBatch/history/{batchId}/{userId}

验收标准

接口调用成功标准

  1. 返回状态码200
  2. 返回数据格式: {"code": 200, "msg": "操作成功"}
  3. 数据库xg_student_msg_batch表info_status更新为'5'
  4. xg_student_msg表数据同步成功
  5. sys_user表数据同步成功

日志记录标准

  1. 成功日志: "成功审核通过学生信息提交,批次ID: {}, 用户ID: {}, 操作人: {}, 审核备注: {}"
  2. 异常日志: "审核通过学生信息提交时发生异常,批次ID: {}, 用户ID: {}, 异常信息: {}"

总结

成功实现了学生信息审核通过API接口,包含完整的业务逻辑、数据校验、事务管理和异常处理。该接口与现有的驳回接口形成完整的审核流程,为学生信息管理系统提供了完善的审核功能。

关键改进点:

  1. 参考现有edit方法的校验逻辑,确保数据一致性
  2. 使用事务管理,确保数据操作的原子性
  3. 完整的日志记录,便于问题排查和操作审计
  4. 统一的异常处理和返回格式

下一步工作:

  1. 补充API文档说明
  2. 编写接口测试用例
  3. 前端页面集成测试