123
This commit is contained in:
@@ -10,6 +10,9 @@ public class UserForbidInfo {
|
||||
private User user;
|
||||
private UserInfo userInfo;
|
||||
private UserForbid userForbid;
|
||||
private String userForbidBetween;
|
||||
private UserForbid ipUserForbid;
|
||||
|
||||
private String ipForbidBetween;
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.ruoyi.cai.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
public enum ForbidStatusEnum {
|
||||
// 1-封禁中 2-已解封
|
||||
FORBID(1,"封禁中"),
|
||||
NORMAL(2,"已解封"),
|
||||
;
|
||||
private final Integer code;
|
||||
private final String text;
|
||||
|
||||
ForbidStatusEnum(Integer code, String text) {
|
||||
this.code = code;
|
||||
this.text = text;
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.ruoyi.cai.enums;
|
||||
package com.ruoyi.cai.enums.forbid;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.ruoyi.cai.enums;
|
||||
package com.ruoyi.cai.enums.forbid;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
@@ -2,7 +2,7 @@ package com.ruoyi.cai.manager;
|
||||
|
||||
import com.ruoyi.cai.constant.RedisHttpConstant;
|
||||
import com.ruoyi.cai.domain.UserForbid;
|
||||
import com.ruoyi.cai.enums.ForbidTypeEnum;
|
||||
import com.ruoyi.cai.enums.forbid.ForbidTypeEnum;
|
||||
import com.ruoyi.common.utils.MapGetUtil;
|
||||
import org.redisson.api.RMap;
|
||||
import org.redisson.api.RedissonClient;
|
||||
|
||||
@@ -6,8 +6,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.ruoyi.cai.domain.*;
|
||||
import com.ruoyi.cai.dto.admin.UserForbidDTO;
|
||||
import com.ruoyi.cai.dto.admin.query.UserForbidReq;
|
||||
import com.ruoyi.cai.enums.ForbidTimeEnum;
|
||||
import com.ruoyi.cai.enums.ForbidTypeEnum;
|
||||
import com.ruoyi.cai.enums.ForbidStatusEnum;
|
||||
import com.ruoyi.cai.enums.forbid.ForbidTimeEnum;
|
||||
import com.ruoyi.cai.enums.forbid.ForbidTypeEnum;
|
||||
import com.ruoyi.cai.mq.AmqpProducer;
|
||||
import com.ruoyi.cai.mq.CommonDelayTypeEnum;
|
||||
import com.ruoyi.cai.mq.dto.CommonDelayDto;
|
||||
@@ -22,7 +23,6 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@@ -155,7 +155,7 @@ public class UserForbidManager {
|
||||
UserForbid userForbid = userForbidService.getById(id);
|
||||
userForbidService.update(Wrappers.lambdaUpdate(UserForbid.class)
|
||||
.eq(UserForbid::getId,userForbid.getId())
|
||||
.set(UserForbid::getForbidStatus,2));
|
||||
.set(UserForbid::getForbidStatus, ForbidStatusEnum.NORMAL.getCode()));
|
||||
if(ForbidTypeEnum.USER.getCode().equals(userForbid.getType())){
|
||||
User user = userService.getByUserCode(userForbid.getMember());
|
||||
userService.update(Wrappers.lambdaUpdate(User.class).eq(User::getId,user.getId()).set(User::getStatus,0));
|
||||
@@ -178,7 +178,7 @@ public class UserForbidManager {
|
||||
current++;
|
||||
page.setCurrent(current);
|
||||
Page<UserForbid> res = userForbidService.page(page,Wrappers.lambdaQuery(UserForbid.class)
|
||||
.eq(UserForbid::getForbidStatus,1));
|
||||
.eq(UserForbid::getForbidStatus,ForbidStatusEnum.FORBID.getCode()));
|
||||
List<UserForbid> records = res.getRecords();
|
||||
if(records.isEmpty()){
|
||||
break;
|
||||
@@ -196,7 +196,7 @@ public class UserForbidManager {
|
||||
}
|
||||
for (Long expireId : expireConsumer) {
|
||||
UserForbid userForbid = userForbidService.getById(expireId);
|
||||
if(userForbid == null || userForbid.getForbidStatus() == 2){
|
||||
if(userForbid == null || ForbidStatusEnum.NORMAL.getCode().equals(userForbid.getForbidStatus())){
|
||||
return;
|
||||
}
|
||||
// < 12小时
|
||||
@@ -215,7 +215,7 @@ public class UserForbidManager {
|
||||
|
||||
public void checkExpire(Long id){
|
||||
UserForbid userForbid = userForbidService.getById(id);
|
||||
if(userForbid == null || userForbid.getForbidStatus() == 2){
|
||||
if(userForbid == null || ForbidStatusEnum.NORMAL.getCode().equals(userForbid.getForbidStatus())){
|
||||
return;
|
||||
}
|
||||
if(!userForbid.getEndTime().isAfter(LocalDateTime.now())){
|
||||
|
||||
@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.ruoyi.cai.domain.ForbidFilter;
|
||||
import com.ruoyi.cai.dto.admin.vo.ForbidFilterAdminVo;
|
||||
import com.ruoyi.cai.enums.ForbidTypeEnum;
|
||||
import com.ruoyi.common.core.domain.PageQuery;
|
||||
|
||||
/**
|
||||
|
||||
@@ -7,8 +7,8 @@ import com.ruoyi.cai.domain.UserErrorLog;
|
||||
import com.ruoyi.cai.dto.admin.UserForbidDTO;
|
||||
import com.ruoyi.cai.dto.admin.vo.UserErrorLogAdminVo;
|
||||
import com.ruoyi.cai.dto.app.query.push.PushErrorReq;
|
||||
import com.ruoyi.cai.enums.ForbidTimeEnum;
|
||||
import com.ruoyi.cai.enums.ForbidTypeEnum;
|
||||
import com.ruoyi.cai.enums.forbid.ForbidTimeEnum;
|
||||
import com.ruoyi.cai.enums.forbid.ForbidTypeEnum;
|
||||
import com.ruoyi.cai.enums.user.UserErrorLogHomeIndexEnum;
|
||||
import com.ruoyi.cai.enums.user.UserErrorLogType;
|
||||
import com.ruoyi.cai.manager.UserForbidManager;
|
||||
|
||||
@@ -5,12 +5,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.ruoyi.cai.domain.*;
|
||||
import com.ruoyi.cai.dto.admin.UserForbidDTO;
|
||||
import com.ruoyi.cai.dto.admin.query.forbid.UserForbidIpReq;
|
||||
import com.ruoyi.cai.dto.admin.vo.UserForbidAdminVo;
|
||||
import com.ruoyi.cai.dto.admin.vo.userforbid.UserForbidInfo;
|
||||
import com.ruoyi.cai.enums.ForbidTimeEnum;
|
||||
import com.ruoyi.cai.enums.ForbidTypeEnum;
|
||||
import com.ruoyi.cai.enums.ForbidStatusEnum;
|
||||
import com.ruoyi.cai.enums.forbid.ForbidTimeEnum;
|
||||
import com.ruoyi.cai.enums.forbid.ForbidTypeEnum;
|
||||
import com.ruoyi.cai.manager.ForbidCache;
|
||||
import com.ruoyi.cai.mapper.UserForbidMapper;
|
||||
import com.ruoyi.cai.mq.AmqpProducer;
|
||||
@@ -22,13 +21,11 @@ import com.ruoyi.cai.service.UserInfoService;
|
||||
import com.ruoyi.cai.service.UserService;
|
||||
import com.ruoyi.cai.util.CaiDateUtil;
|
||||
import com.ruoyi.common.core.domain.PageQuery;
|
||||
import com.ruoyi.common.exception.ServiceException;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
|
||||
/**
|
||||
* 封号列表Service业务层处理
|
||||
@@ -67,9 +64,9 @@ public class UserForbidServiceImpl extends ServiceImpl<UserForbidMapper, UserFor
|
||||
one.setType(userForbidLog.getType());
|
||||
one.setMember(userForbidLog.getMember());
|
||||
one.setBeginTime(LocalDateTime.now());
|
||||
} else if(one.getForbidStatus() == 2){ // 已解封
|
||||
} else if(ForbidStatusEnum.NORMAL.getCode().equals(one.getForbidStatus())){ // 已解封
|
||||
one.setBeginTime(LocalDateTime.now());
|
||||
} else if(one.getForbidStatus() == 1 && one.getEndTime().isBefore(LocalDateTime.now())){
|
||||
} else if(ForbidStatusEnum.FORBID.getCode().equals(one.getForbidStatus()) && one.getEndTime().isBefore(LocalDateTime.now())){
|
||||
one.setBeginTime(LocalDateTime.now());
|
||||
}
|
||||
LocalDateTime endTime = getEndTime(one.getBeginTime(), forbidTime);
|
||||
@@ -78,7 +75,7 @@ public class UserForbidServiceImpl extends ServiceImpl<UserForbidMapper, UserFor
|
||||
}
|
||||
one.setEndTime(endTime);
|
||||
one.setReason(userForbidLog.getReason());
|
||||
one.setForbidStatus(1);
|
||||
one.setForbidStatus(ForbidStatusEnum.FORBID.getCode());
|
||||
this.saveOrUpdate(one);
|
||||
if(user != null){
|
||||
userService.update(Wrappers.lambdaUpdate(User.class).eq(User::getId,user.getId()).set(User::getStatus,1));
|
||||
@@ -111,15 +108,22 @@ public class UserForbidServiceImpl extends ServiceImpl<UserForbidMapper, UserFor
|
||||
return null;
|
||||
}
|
||||
UserForbidInfo userForbidInfo = new UserForbidInfo();
|
||||
userForbidInfo.setUser(user);
|
||||
userForbidInfo.setUserInfo(userInfo);
|
||||
UserForbid userForbid = this.getOne(Wrappers.lambdaQuery(UserForbid.class)
|
||||
.eq(UserForbid::getType, ForbidTypeEnum.USER.getCode()).last("limit 1"));
|
||||
if(userForbid != null && userForbid.getForbidStatus() == 1 && userForbid.getEndTime().isAfter(LocalDateTime.now())){
|
||||
.eq(UserForbid::getMember, user.getUsercode())
|
||||
.eq(UserForbid::getType, ForbidTypeEnum.USER.getCode())
|
||||
.last("limit 1"));
|
||||
if(userForbid != null && ForbidStatusEnum.FORBID.getCode().equals(userForbid.getForbidStatus()) && userForbid.getEndTime().isAfter(LocalDateTime.now())){
|
||||
userForbidInfo.setUserForbid(userForbid);
|
||||
userForbidInfo.setUserForbidBetween(CaiDateUtil.betweenShowString(LocalDateTime.now(),userForbid.getEndTime()));
|
||||
}
|
||||
UserForbid ipUserForbid = this.getOne(Wrappers.lambdaQuery(UserForbid.class)
|
||||
.eq(UserForbid::getMember, userInfo.getLastLoginIp())
|
||||
.eq(UserForbid::getType, ForbidTypeEnum.IP.getCode()).last("limit 1"));
|
||||
if(userForbid != null && userForbid.getForbidStatus() == 1 && userForbid.getEndTime().isAfter(LocalDateTime.now())){
|
||||
if(ipUserForbid != null && ForbidStatusEnum.FORBID.getCode().equals(ipUserForbid.getForbidStatus()) && ipUserForbid.getEndTime().isAfter(LocalDateTime.now())){
|
||||
userForbidInfo.setIpUserForbid(ipUserForbid);
|
||||
userForbidInfo.setIpForbidBetween(CaiDateUtil.betweenShowString(LocalDateTime.now(),ipUserForbid.getEndTime()));
|
||||
}
|
||||
return userForbidInfo;
|
||||
}
|
||||
|
||||
@@ -3,9 +3,7 @@ package com.ruoyi.cai.util;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
|
||||
import java.time.DayOfWeek;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.*;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.time.temporal.TemporalAdjusters;
|
||||
@@ -21,6 +19,56 @@ public class CaiDateUtil {
|
||||
return ChronoUnit.SECONDS.between(after, before);
|
||||
}
|
||||
|
||||
public static String betweenShowString(LocalDateTime minTime,LocalDateTime maxTime){
|
||||
Duration duration = Duration.between(minTime, maxTime);
|
||||
long seconds = duration.getSeconds();
|
||||
long absSeconds = Math.abs(seconds);
|
||||
long days = absSeconds / (60 * 60 * 24);
|
||||
long hours = (absSeconds % (60 * 60 * 24)) / (60 * 60);
|
||||
long minutes = (absSeconds % (60 * 60)) / 60;
|
||||
if(days < 30){
|
||||
return days+"天"+hours+"小时"+minutes+"分钟";
|
||||
}
|
||||
Period period = Period.between(minTime.toLocalDate(), maxTime.toLocalDate());
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
if(period.getYears() != 0){
|
||||
stringBuilder.append(period.getYears()).append("天");
|
||||
}
|
||||
if(period.getMonths() != 0){
|
||||
stringBuilder.append(period.getMonths()).append("天");
|
||||
}
|
||||
if(period.getDays() != 0){
|
||||
stringBuilder.append(period.getDays()).append("天");
|
||||
}
|
||||
return stringBuilder.toString();
|
||||
}
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
// 两个时间点
|
||||
LocalDateTime dateTime1 = LocalDateTime.of(2020, 5, 20, 12, 0, 0);
|
||||
LocalDateTime dateTime2 = LocalDateTime.of(2024, 1, 15, 11, 30, 0);
|
||||
|
||||
// 计算日期间隔
|
||||
Period period = Period.between(dateTime1.toLocalDate(), dateTime2.toLocalDate());
|
||||
|
||||
// 输出年、月、日间隔
|
||||
System.out.println("间隔: " + period.getYears() + " 年 " + period.getMonths() + " 个月 " + period.getDays() + " 天");
|
||||
|
||||
// 计算时间间隔
|
||||
Duration duration = Duration.between(dateTime1, dateTime2);
|
||||
|
||||
// 输出时、分、秒间隔
|
||||
long seconds = duration.getSeconds();
|
||||
long absSeconds = Math.abs(seconds);
|
||||
long days = absSeconds / (60 * 60 * 24);
|
||||
long hours = (absSeconds % (60 * 60 * 24)) / (60 * 60);
|
||||
long minutes = (absSeconds % (60 * 60)) / 60;
|
||||
long secs = absSeconds % 60;
|
||||
|
||||
System.out.println("时间间隔: " + days + " 天 " + hours + " 小时 " + minutes + " 分钟 " + secs + " 秒");
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static LocalDate getLastWeekOne(LocalDate date){
|
||||
@@ -42,6 +90,5 @@ public class CaiDateUtil {
|
||||
|
||||
public static String getCurrentTimeStr() {
|
||||
return localDateTimeToString(LocalDateTime.now());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user