111
tjx
4 天以前 9d0ce1368fc71660a8b9873af8f275e7689b7394
111
已修改2个文件
32 ■■■■ 文件已修改
src/main/java/com/gs/dingtalk/service/WorkWXService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/test/java/com/gs/dingtalk/DeviceReceivingApplicationTests.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/gs/dingtalk/service/WorkWXService.java
@@ -226,11 +226,10 @@
                continue;
            }
            QwStaff existingStaff = qwStaffMapper.selectOne(
            qwStaffMapper.delete(
                new LambdaQueryWrapper<QwStaff>().eq(QwStaff::getAccount, user.getUserid())
            );
            if (existingStaff == null) {
                QwStaff qwStaff = new QwStaff();
                qwStaff.setName(user.getName());
                qwStaff.setAccount(user.getUserid());
@@ -239,9 +238,8 @@
                qwStaffMapper.insert(qwStaff);
                insertCount++;
            }
        }
        log.info("同步用户到QW_STAFF表完成,新增用户数: {}", insertCount);
        log.info("同步用户到QW_STAFF表完成,同步用户数: {}", insertCount);
        return insertCount;
    }
src/test/java/com/gs/dingtalk/DeviceReceivingApplicationTests.java
@@ -62,15 +62,41 @@
    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);