Files
hzdyjs/docs/开发文档/宿舍卫生检查API-根据学生ID查询-使用说明.md
2025-08-17 23:05:57 +08:00

6.8 KiB

宿舍卫生检查API - 根据学生ID查询使用说明

概述

本文档提供了宿舍卫生检查模块中新增的"根据学生ID查询卫生检查信息"API接口的详细使用说明。

API接口信息

基本信息

  • 接口地址: GET /dormHygieneCheck/dormHygieneCheck/student/{studentId}
  • 接口描述: 根据学生ID查询该学生宿舍的所有卫生检查记录
  • 请求方式: GET
  • 权限要求: dormHygieneCheck:dormHygieneCheck:query

请求参数

参数名 类型 必填 位置 说明
studentId Long 是 Path 学生ID,关联xg_student_msg.id

使用示例

1. 前端Vue调用示例

// 在Vue组件中调用API
import { getHygieneChecksByStudentId } from '@/api/xg/xgss/dormHygieneCheck/dormHygieneCheck'

export default {
  data() {
    return {
      studentId: 12345,
      hygieneChecks: []
    }
  },
  methods: {
    async loadStudentHygieneChecks() {
      try {
        const response = await getHygieneChecksByStudentId(this.studentId)
        if (response.code === 200) {
          this.hygieneChecks = response.data
          console.log('获取到卫生检查记录:', this.hygieneChecks)
        } else {
          this.$message.error(response.msg || '获取数据失败')
        }
      } catch (error) {
        console.error('API调用失败:', error)
        this.$message.error('网络请求失败')
      }
    }
  },
  mounted() {
    this.loadStudentHygieneChecks()
  }
}

2. 移动端uni-app调用示例

// 在uni-app页面中调用API
export default {
  data() {
    return {
      studentId: 12345,
      hygieneChecks: []
    }
  },
  methods: {
    async getStudentHygieneChecks() {
      try {
        const response = await uni.request({
          url: `${this.baseUrl}/dormHygieneCheck/dormHygieneCheck/student/${this.studentId}`,
          method: 'GET',
          header: {
            'Authorization': `Bearer ${this.token}`,
            'Content-Type': 'application/json'
          }
        })
        
        if (response.data.code === 200) {
          this.hygieneChecks = response.data.data
          console.log('获取到卫生检查记录:', this.hygieneChecks)
        } else {
          uni.showToast({
            title: response.data.msg || '获取数据失败',
            icon: 'none'
          })
        }
      } catch (error) {
        console.error('API调用失败:', error)
        uni.showToast({
          title: '网络请求失败',
          icon: 'none'
        })
      }
    }
  },
  onLoad() {
    this.getStudentHygieneChecks()
  }
}

3. 后端Java调用示例

// 在Service层中调用
@Service
public class StudentHygieneService {
    
    @Autowired
    private IXgDormHygieneCheckService hygieneCheckService;
    
    /**
     * 获取学生的卫生检查记录
     */
    public List<XgDormHygieneCheckVo> getStudentHygieneChecks(Long studentId) {
        if (studentId == null) {
            throw new IllegalArgumentException("学生ID不能为空");
        }
        
        List<XgDormHygieneCheckVo> checks = hygieneCheckService.queryByStudentId(studentId);
        
        // 可以在这里添加额外的业务逻辑
        // 比如数据转换、权限验证等
        
        return checks;
    }
}

4. Python测试脚本示例

import requests
import json

def test_student_hygiene_checks():
    # 配置信息
    base_url = "http://localhost:8080"
    student_id = 12345
    
    # 登录获取token(简化示例)
    login_data = {
        "username": "admin",
        "password": "admin123",
        "code": "1234",
        "uuid": "test-uuid"
    }
    
    # 登录
    login_response = requests.post(f"{base_url}/auth/login", json=login_data)
    if login_response.status_code != 200:
        print("登录失败")
        return
    
    token = login_response.json().get('data', {}).get('access_token')
    if not token:
        print("未获取到token")
        return
    
    # 调用API
    headers = {
        'Authorization': f'Bearer {token}',
        'Content-Type': 'application/json'
    }
    
    response = requests.get(
        f"{base_url}/dormHygieneCheck/dormHygieneCheck/student/{student_id}",
        headers=headers
    )
    
    if response.status_code == 200:
        result = response.json()
        if result.get('code') == 200:
            data = result.get('data', [])
            print(f"获取到 {len(data)} 条卫生检查记录")
            for check in data:
                print(f"- {check.get('checkTitle')} ({check.get('checkDate')})")
        else:
            print(f"API返回错误: {result.get('msg')}")
    else:
        print(f"请求失败: {response.status_code}")

if __name__ == "__main__":
    test_student_hygiene_checks()

响应数据处理

1. 成功响应示例

{
  "code": 200,
  "msg": "操作成功",
  "data": [
    {
      "id": 1,
      "checkTitle": "2024年春季宿舍卫生检查",
      "checkDate": "2024-03-15",
      "checkerName": "张老师",
      "roomCode": "1-101",
      "roomName": "1号楼101室",
      "totalScore": 85.5,
      "hygieneGrade": "B",
      "checkSummary": "整体卫生情况良好",
      "createTime": "2024-03-15 10:00:00"
    }
  ]
}

2. 空数据响应示例

{
  "code": 200,
  "msg": "操作成功",
  "data": []
}

3. 错误响应示例

{
  "code": 400,
  "msg": "学生ID不能为空"
}

业务场景应用

1. 学生个人中心

  • 学生登录后查看自己宿舍的卫生检查历史
  • 展示检查结果、评分、改进建议等信息

2. 辅导员管理

  • 辅导员查看所管理学生的宿舍卫生情况
  • 统计分析学生的卫生检查趋势

3. 移动端应用

  • 在手机APP中展示学生的卫生检查记录
  • 推送卫生检查通知和结果

4. 数据统计

  • 统计某个学生的卫生检查合格率
  • 分析学生的卫生习惯改善情况

注意事项

1. 权限控制

  • 确保调用方具有 dormHygieneCheck:dormHygieneCheck:query 权限
  • 建议增加学生身份验证,确保只能查询自己的数据

2. 性能优化

  • 对于大量数据的查询,建议添加分页功能
  • 可以考虑添加缓存机制,减少数据库查询

3. 数据安全

  • 验证学生ID的有效性
  • 防止SQL注入等安全问题

4. 错误处理

  • 妥善处理网络异常、权限不足等错误情况
  • 提供友好的错误提示信息

相关文档

更新记录

日期 版本 更新内容 更新人
2025-01-03 1.0 创建使用说明文档 zlwu