增加校验上下班是否打卡逻辑
This commit is contained in:
parent
1ea24acf24
commit
f01ecb5e24
@ -6,15 +6,18 @@ import cn.hutool.core.io.FileUtil;
|
|||||||
import cn.hutool.core.io.resource.ResourceUtil;
|
import cn.hutool.core.io.resource.ResourceUtil;
|
||||||
import cn.hutool.core.text.csv.CsvReader;
|
import cn.hutool.core.text.csv.CsvReader;
|
||||||
import cn.hutool.core.text.csv.CsvUtil;
|
import cn.hutool.core.text.csv.CsvUtil;
|
||||||
|
import cn.hutool.core.text.csv.CsvWriter;
|
||||||
import cn.hutool.core.thread.ThreadUtil;
|
import cn.hutool.core.thread.ThreadUtil;
|
||||||
import cn.hutool.core.util.NumberUtil;
|
import cn.hutool.core.util.NumberUtil;
|
||||||
import cn.hutool.core.util.RandomUtil;
|
import cn.hutool.core.util.RandomUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.http.HttpRequest;
|
import cn.hutool.http.HttpRequest;
|
||||||
import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONObject;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.security.MessageDigest;
|
import java.security.MessageDigest;
|
||||||
@ -61,21 +64,38 @@ public class CheckLogin {
|
|||||||
int size = userList.size();
|
int size = userList.size();
|
||||||
log.info("共有 {} 个需打卡账号", size);
|
log.info("共有 {} 个需打卡账号", size);
|
||||||
userList.forEach(forEachWithIndex((user, index) -> {
|
userList.forEach(forEachWithIndex((user, index) -> {
|
||||||
|
boolean todaySign = user.isTodaySign(singMark);
|
||||||
|
if (todaySign) {
|
||||||
|
log.info("{} 账号已完成打卡", user.getUsername());
|
||||||
|
return;
|
||||||
|
}
|
||||||
boolean isSignSuccess = sign(user, singMark);
|
boolean isSignSuccess = sign(user, singMark);
|
||||||
if (isSignSuccess) {
|
if (isSignSuccess) {
|
||||||
log.info("{} 账号打卡成功", user.getUsername());
|
log.info("{} 账号打卡成功", user.getUsername());
|
||||||
} else {
|
} else {
|
||||||
log.error("{} 账号打卡失败", user.getUsername());
|
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) {
|
if (index + 1 == size) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 随机 1-5分钟之后执行下一个人的打卡
|
// 随机 1-3分钟之后执行下一个人的打卡
|
||||||
// 1 * 60 * 1000
|
// 1 * 60 * 1000
|
||||||
BigDecimal randomMinute = NumberUtil.round(RandomUtil.randomFloat(1, 6),2);
|
BigDecimal randomMinute = NumberUtil.round(RandomUtil.randomFloat(1, 3),2);
|
||||||
log.info("{}分钟后 执行下个人的打卡任务", randomMinute);
|
log.info("{}分钟后 执行下个人的打卡任务", randomMinute);
|
||||||
ThreadUtil.safeSleep(NumberUtil.mul(randomMinute, 60, 1000));
|
ThreadUtil.safeSleep(NumberUtil.mul(randomMinute, 60, 1000));
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
CsvWriter writer = CsvUtil.getWriter(new File(filePath), StandardCharsets.UTF_8);
|
||||||
|
writer.writeBeans(userList);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error(e);
|
log.error(e);
|
||||||
} finally {
|
} finally {
|
||||||
@ -98,27 +118,27 @@ public class CheckLogin {
|
|||||||
.form("loginType", "normal")
|
.form("loginType", "normal")
|
||||||
.form("code", "")
|
.form("code", "")
|
||||||
.execute().body();
|
.execute().body();
|
||||||
log.info("认证系统返回报文\t {}", body);
|
log.info("认证系统返回报文 {}", body);
|
||||||
JSONObject data = JSONUtil.parseObj(body).getJSONObject("data");
|
JSONObject data = JSONUtil.parseObj(body).getJSONObject("data");
|
||||||
if (data != null) {
|
if (data != null) {
|
||||||
String token = data.getStr("token");
|
String token = data.getStr("token");
|
||||||
log.info("认证系统返回token\t {}", token);
|
log.info("认证系统返回token {}", token);
|
||||||
String thirdBody = HttpRequest
|
String thirdBody = HttpRequest
|
||||||
.get("http://oms.oa.unionpay.com/prod-api/checkTokenThenLogin?personType=0&token=" + token)
|
.get("http://oms.oa.unionpay.com/prod-api/checkTokenThenLogin?personType=0&token=" + token)
|
||||||
.execute().body();
|
.execute().body();
|
||||||
JSONObject thirdBodyJson = JSONUtil.parseObj(thirdBody);
|
JSONObject thirdBodyJson = JSONUtil.parseObj(thirdBody);
|
||||||
log.info("签到系统返回报文\t {}", thirdBodyJson);
|
log.info("签到系统返回报文 {}", thirdBodyJson);
|
||||||
String thirdToken = thirdBodyJson.getStr("localToken");
|
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)
|
String resultBody = HttpRequest.post("http://oms.oa.unionpay.com/prod-api/atds/ds/" + signMark)
|
||||||
.header("Authorization", "Bearer " + thirdToken)
|
.header("Authorization", "Bearer " + thirdToken)
|
||||||
.execute().body();
|
.execute().body();
|
||||||
log.info("签到接口返回报文\t {}", resultBody);
|
log.info("签到接口返回报文 {}", resultBody);
|
||||||
JSONObject signJson = JSONUtil.parseObj(resultBody);
|
JSONObject signJson = JSONUtil.parseObj(resultBody);
|
||||||
if ("200".equals(signJson.getStr("code"))) {
|
if ("200".equals(signJson.getStr("code"))) {
|
||||||
String signDateTime = DateUtil.formatDateTime(signJson.getDate("data"));
|
String signDateTime = DateUtil.formatDateTime(signJson.getDate("data"));
|
||||||
result = true;
|
result = true;
|
||||||
log.info("{} 打卡时间\t {}", user.getUsername(), signDateTime);
|
log.info("{} 打卡时间 {}", user.getUsername(), signDateTime);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@ -2,12 +2,18 @@ package com.dx.union;
|
|||||||
|
|
||||||
|
|
||||||
import cn.hutool.core.annotation.Alias;
|
import cn.hutool.core.annotation.Alias;
|
||||||
|
import cn.hutool.core.date.DateTime;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
|
||||||
public class User {
|
public class User {
|
||||||
@Alias("用户名")
|
@Alias("用户名")
|
||||||
private String username;
|
private String username;
|
||||||
@Alias("密码")
|
@Alias("密码")
|
||||||
private String password;
|
private String password;
|
||||||
|
@Alias("上班卡")
|
||||||
|
private String isStartWorkSign;
|
||||||
|
@Alias("下班卡")
|
||||||
|
private String isEndWorkSign;
|
||||||
|
|
||||||
public String getUsername() {
|
public String getUsername() {
|
||||||
return username;
|
return username;
|
||||||
@ -25,11 +31,41 @@ public class User {
|
|||||||
this.password = password;
|
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
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "User{" +
|
return "User{" +
|
||||||
"username='" + username + '\'' +
|
"username='" + username + '\'' +
|
||||||
", password='" + password + '\'' +
|
", password='" + password + '\'' +
|
||||||
|
", isStartWorkSign='" + isStartWorkSign + '\'' +
|
||||||
|
", isEndWorkSign='" + isEndWorkSign + '\'' +
|
||||||
'}';
|
'}';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user