| | |
| | | void testGetCheckinDataByQwStaff() { |
| | | System.out.println("=== 开始测试通过QW_STAFF表获取打卡数据 ==="); |
| | | |
| | | // 企业微信打卡接口限制: |
| | | // 1. 获取记录时间跨度不超过30天 |
| | | // 2. 用户列表不超过100个。若用户超过100个,请分批获取(已在Service层实现自动分批) |
| | | // 3. 接口返回最多3000条打卡数据 |
| | | // 4. 标准打卡时间只对于固定排班和自定义排班两种类型有效 |
| | | // 5. 接口调用频率限制为600次/分钟(已在Service层实现批次间延迟) |
| | | |
| | | try { |
| | | long currentTime = System.currentTimeMillis() / 1000; |
| | | long oneDaySeconds = 86400; |
| | | long thirtyDaysSeconds = 30 * oneDaySeconds; |
| | | |
| | | long endTime = (currentTime / oneDaySeconds) * oneDaySeconds - 1; |
| | | long startTime = endTime - oneDaySeconds + 1; |
| | | |
| | | // 验证时间跨度不超过30天 |
| | | long timeSpan = endTime - startTime; |
| | | if (timeSpan > thirtyDaysSeconds) { |
| | | System.out.println("✗ 时间跨度超过30天限制: " + (timeSpan / oneDaySeconds) + "天"); |
| | | return; |
| | | } |
| | | |
| | | System.out.println(" - 开始时间: " + new java.util.Date(startTime * 1000)); |
| | | System.out.println(" - 结束时间: " + new java.util.Date(endTime * 1000)); |
| | | System.out.println(" - 时间跨度: " + (timeSpan / oneDaySeconds) + "天 (限制: ≤30天)"); |
| | | |
| | | // 获取用户总数 |
| | | long totalUsers = qwStaffMapper.selectCount(new LambdaQueryWrapper<QwStaff>() |
| | | .isNotNull(QwStaff::getAccount) |
| | | .ne(QwStaff::getAccount, "")); |
| | | System.out.println(" - QW_STAFF表用户总数: " + totalUsers); |
| | | if (totalUsers > 100) { |
| | | int batchCount = (int) ((totalUsers + 99) / 100); |
| | | System.out.println(" - 将自动分批处理: " + batchCount + "批 (每批≤100用户)"); |
| | | } |
| | | |
| | | List<WorkWXService.CheckinData> checkinDataList = workWXService.getCheckinDataByQwStaff(startTime, endTime); |
| | | |