|
@@ -522,6 +522,7 @@ public class WmUserSignServiceImpl extends ServiceImpl<WmUserSignMapper, WmUserS
|
|
|
|
|
|
// 本月未有打卡记录
|
|
|
if (CollUtil.isEmpty(signs)) {
|
|
|
+ log.info("当前用户本月不存在打卡任务,放行");
|
|
|
return;
|
|
|
}
|
|
|
|
|
@@ -531,16 +532,20 @@ public class WmUserSignServiceImpl extends ServiceImpl<WmUserSignMapper, WmUserS
|
|
|
if (CollUtil.isNotEmpty(wmUserSigns)) {
|
|
|
|
|
|
int currCount = wmUserSigns.size();
|
|
|
+ log.info("当前用户同一地点本月已完成次数:[{}]", currCount);
|
|
|
Integer monthLimit = eachLimitMap.get("MONTH");
|
|
|
+ log.info("同一个人,对同一拜访对象打卡每月限制:[{}]", monthLimit);
|
|
|
if (monthLimit != null && monthLimit <= currCount) {
|
|
|
log.warn("超过同一个人,对同一拜访对象打卡每月限制:{} {}", wmUserSign.getSignUserid(), wmUserSign.getSignEntName());
|
|
|
throw new BizException("超过同一个人,对同一拜访对象打卡每月限制");
|
|
|
}
|
|
|
|
|
|
Integer dailyLimit = eachLimitMap.get("DAY");
|
|
|
+ log.info("同一个人,对同一拜访对象打卡每日限制:[{}]", dailyLimit);
|
|
|
if (dailyLimit != null) {
|
|
|
LocalDateTime todayStart = LocalDateTime.of(now.toLocalDate(), LocalTime.MIN);
|
|
|
long dailyCount = wmUserSigns.stream().filter(sign -> sign.getSignDate().isAfter(todayStart)).count();
|
|
|
+ log.info("当前用户同一地点本日已完成次数:[{}]", dailyCount);
|
|
|
if (dailyLimit <= dailyCount) {
|
|
|
log.warn("超过同一个人,对同一拜访对象打卡每日限制:{} {}", wmUserSign.getSignUserid(), wmUserSign.getSignEntName());
|
|
|
throw new BizException("超过同一个人,对同一拜访对象打卡每日限制");
|
|
@@ -548,31 +553,38 @@ public class WmUserSignServiceImpl extends ServiceImpl<WmUserSignMapper, WmUserS
|
|
|
}
|
|
|
|
|
|
Integer hourLimit = eachLimitMap.get("HOUR");
|
|
|
+ log.info("同一个人,对同一拜访对象打卡每小时限制:[{}]", hourLimit);
|
|
|
if (hourLimit != null) {
|
|
|
LocalDateTime hourStart = now.minusHours(1L);
|
|
|
long hourCount = wmUserSigns.stream().filter(sign -> sign.getSignDate().isAfter(hourStart)).count();
|
|
|
+ log.info("当前用户同一地点本小时已完成次数:[{}]", hourCount);
|
|
|
if (hourLimit <= hourCount) {
|
|
|
log.warn("超过同一个人,对同一拜访对象打卡每小时限制:{} {}", wmUserSign.getSignUserid(), wmUserSign.getSignEntName());
|
|
|
throw new BizException("超过同一个人,对同一拜访对象打卡每小时限制");
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
+ log.info("当前用户本月不存在关于该企业的打卡任务,放行");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
|
|
|
// 校验当日的拜访限制
|
|
|
int currCount = signs.size();
|
|
|
+ log.info("当前用户本月已完成打卡次数:[{}]", currCount);
|
|
|
Integer monthLimit = totalLimitMap.get("MONTH");
|
|
|
+ log.info("拜访次数上限打卡每月限制:[{}]", monthLimit);
|
|
|
if (monthLimit != null && monthLimit <= currCount) {
|
|
|
log.warn("超过拜访次数上限打卡每月限制:{} {}", wmUserSign.getSignUserid(), wmUserSign.getSignEntName());
|
|
|
throw new BizException("超过拜访次数上限打卡每月限制");
|
|
|
}
|
|
|
|
|
|
Integer dailyLimit = totalLimitMap.get("DAY");
|
|
|
+ log.info("拜访次数上限打卡每天限制:[{}]", dailyLimit);
|
|
|
if (dailyLimit != null) {
|
|
|
LocalDateTime todayStart = LocalDateTime.of(now.toLocalDate(), LocalTime.MIN);
|
|
|
long dailyCount = signs.stream().filter(sign -> sign.getSignDate().isAfter(todayStart)).count();
|
|
|
+ log.info("当前用户本日已完成打卡次数:[{}]", dailyCount);
|
|
|
if (dailyLimit <= dailyCount) {
|
|
|
log.warn("超过拜访次数上限打卡每日限制:{} {}", wmUserSign.getSignUserid(), wmUserSign.getSignEntName());
|
|
|
throw new BizException("超过拜访次数上限打卡每日限制");
|
|
@@ -580,9 +592,11 @@ public class WmUserSignServiceImpl extends ServiceImpl<WmUserSignMapper, WmUserS
|
|
|
}
|
|
|
|
|
|
Integer hourLimit = totalLimitMap.get("HOUR");
|
|
|
+ log.info("拜访次数上限打卡每小时限制:[{}]", hourLimit);
|
|
|
if (hourLimit != null) {
|
|
|
LocalDateTime hourStart = now.minusHours(1L);
|
|
|
long hourCount = signs.stream().filter(sign -> sign.getSignDate().isAfter(hourStart)).count();
|
|
|
+ log.info("当前用户本小时已完成打卡次数:[{}]", hourCount);
|
|
|
if (hourLimit <= hourCount) {
|
|
|
log.warn("超过拜访次数上限打卡每小时限制:{} {}", wmUserSign.getSignUserid(), wmUserSign.getSignEntName());
|
|
|
throw new BizException("超过拜访次数上限打卡每小时限制");
|