From f01ecb5e24acbeeac2ae278e4ad335cc40ddbbe8 Mon Sep 17 00:00:00 2001 From: xx572959496 Date: Thu, 5 Dec 2024 19:26:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=A0=A1=E9=AA=8C=E4=B8=8A?= =?UTF-8?q?=E4=B8=8B=E7=8F=AD=E6=98=AF=E5=90=A6=E6=89=93=E5=8D=A1=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/dx/union/CheckLogin.java | 36 +++++++++++++++++----- src/main/java/com/dx/union/User.java | 36 ++++++++++++++++++++++ 2 files changed, 64 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/dx/union/CheckLogin.java b/src/main/java/com/dx/union/CheckLogin.java index e8b09da..dabaa69 100644 --- a/src/main/java/com/dx/union/CheckLogin.java +++ b/src/main/java/com/dx/union/CheckLogin.java @@ -6,15 +6,18 @@ import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.resource.ResourceUtil; import cn.hutool.core.text.csv.CsvReader; import cn.hutool.core.text.csv.CsvUtil; +import cn.hutool.core.text.csv.CsvWriter; import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.RandomUtil; +import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpRequest; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import java.io.File; import java.math.BigDecimal; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; @@ -61,21 +64,38 @@ public class CheckLogin { int size = userList.size(); log.info("共有 {} 个需打卡账号", size); userList.forEach(forEachWithIndex((user, index) -> { + boolean todaySign = user.isTodaySign(singMark); + if (todaySign) { + log.info("{} 账号已完成打卡", user.getUsername()); + return; + } boolean isSignSuccess = sign(user, singMark); if (isSignSuccess) { log.info("{} 账号打卡成功", user.getUsername()); } else { log.error("{} 账号打卡失败", user.getUsername()); } + String sign_time = DateUtil.date().toString(); + if (isMorning) { + user.setIsStartWorkSign(sign_time); + } else { + if (StrUtil.isEmpty(user.getIsStartWorkSign())) { + user.setIsStartWorkSign(""); + } + user.setIsEndWorkSign(sign_time); + } if (index + 1 == size) { return; } - // 随机 1-5分钟之后执行下一个人的打卡 + // 随机 1-3分钟之后执行下一个人的打卡 // 1 * 60 * 1000 - BigDecimal randomMinute = NumberUtil.round(RandomUtil.randomFloat(1, 6),2); + BigDecimal randomMinute = NumberUtil.round(RandomUtil.randomFloat(1, 3),2); log.info("{}分钟后 执行下个人的打卡任务", randomMinute); ThreadUtil.safeSleep(NumberUtil.mul(randomMinute, 60, 1000)); })); + + CsvWriter writer = CsvUtil.getWriter(new File(filePath), StandardCharsets.UTF_8); + writer.writeBeans(userList); } catch (Exception e) { log.error(e); } finally { @@ -98,27 +118,27 @@ public class CheckLogin { .form("loginType", "normal") .form("code", "") .execute().body(); - log.info("认证系统返回报文\t {}", body); + log.info("认证系统返回报文 {}", body); JSONObject data = JSONUtil.parseObj(body).getJSONObject("data"); if (data != null) { String token = data.getStr("token"); - log.info("认证系统返回token\t {}", token); + log.info("认证系统返回token {}", token); String thirdBody = HttpRequest .get("http://oms.oa.unionpay.com/prod-api/checkTokenThenLogin?personType=0&token=" + token) .execute().body(); JSONObject thirdBodyJson = JSONUtil.parseObj(thirdBody); - log.info("签到系统返回报文\t {}", thirdBodyJson); + log.info("签到系统返回报文 {}", thirdBodyJson); String thirdToken = thirdBodyJson.getStr("localToken"); - log.info("签到系统返回token\t {}", thirdToken); + log.info("签到系统返回token {}", thirdToken); String resultBody = HttpRequest.post("http://oms.oa.unionpay.com/prod-api/atds/ds/" + signMark) .header("Authorization", "Bearer " + thirdToken) .execute().body(); - log.info("签到接口返回报文\t {}", resultBody); + log.info("签到接口返回报文 {}", resultBody); JSONObject signJson = JSONUtil.parseObj(resultBody); if ("200".equals(signJson.getStr("code"))) { String signDateTime = DateUtil.formatDateTime(signJson.getDate("data")); result = true; - log.info("{} 打卡时间\t {}", user.getUsername(), signDateTime); + log.info("{} 打卡时间 {}", user.getUsername(), signDateTime); } } } catch (Exception e) { diff --git a/src/main/java/com/dx/union/User.java b/src/main/java/com/dx/union/User.java index 366b991..3c74fb3 100644 --- a/src/main/java/com/dx/union/User.java +++ b/src/main/java/com/dx/union/User.java @@ -2,12 +2,18 @@ package com.dx.union; import cn.hutool.core.annotation.Alias; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; public class User { @Alias("用户名") private String username; @Alias("密码") private String password; + @Alias("上班卡") + private String isStartWorkSign; + @Alias("下班卡") + private String isEndWorkSign; public String getUsername() { return username; @@ -25,11 +31,41 @@ public class User { this.password = password; } + public String getIsStartWorkSign() { + return isStartWorkSign; + } + + public void setIsStartWorkSign(String isStartWorkSign) { + this.isStartWorkSign = isStartWorkSign; + } + + public String getIsEndWorkSign() { + return isEndWorkSign; + } + + public void setIsEndWorkSign(String isEndWorkSign) { + this.isEndWorkSign = isEndWorkSign; + } + + public boolean isTodaySign(int signMark) { + if (signMark == 0) { + // 校验上班的打卡逻辑 + DateTime dateTime = DateUtil.parse(this.getIsStartWorkSign(), "yyyy-MM-dd"); + return DateUtil.isSameDay(dateTime, DateUtil.date()); + } else if (signMark == 1) { + DateTime dateTime = DateUtil.parse(this.getIsEndWorkSign(), "yyyy-MM-dd"); + return DateUtil.isSameDay(dateTime, DateUtil.date()); + } + return false; + } + @Override public String toString() { return "User{" + "username='" + username + '\'' + ", password='" + password + '\'' + + ", isStartWorkSign='" + isStartWorkSign + '\'' + + ", isEndWorkSign='" + isEndWorkSign + '\'' + '}'; } }