This commit is contained in:
张良(004796)
2024-01-31 22:36:50 +08:00
parent 98458c32fa
commit b725191b1a
11 changed files with 101 additions and 37 deletions

View File

@@ -2,15 +2,13 @@ package com.ruoyi.web.controller.cai.admin;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.net.Ipv4Util; import cn.hutool.core.net.Ipv4Util;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.cai.domain.UserForbid; import com.ruoyi.cai.domain.UserForbid;
import com.ruoyi.cai.dto.admin.UserForbidDTO; import com.ruoyi.cai.dto.admin.UserForbidDTO;
import com.ruoyi.cai.dto.admin.query.forbid.UserForbidIpReq; import com.ruoyi.cai.dto.admin.query.forbid.UserForbidIpReq;
import com.ruoyi.cai.dto.admin.vo.UserForbidAdminVo; import com.ruoyi.cai.dto.admin.vo.UserForbidAdminVo;
import com.ruoyi.cai.dto.admin.vo.userforbid.UserForbidInfo; import com.ruoyi.cai.dto.admin.vo.userforbid.UserForbidInfo;
import com.ruoyi.cai.enums.ForbidTimeEnum; import com.ruoyi.cai.enums.forbid.ForbidTypeEnum;
import com.ruoyi.cai.enums.ForbidTypeEnum;
import com.ruoyi.cai.manager.UserForbidManager; import com.ruoyi.cai.manager.UserForbidManager;
import com.ruoyi.cai.service.UserForbidService; import com.ruoyi.cai.service.UserForbidService;
import com.ruoyi.cai.util.IpAddressUtil; import com.ruoyi.cai.util.IpAddressUtil;
@@ -20,18 +18,13 @@ import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.exception.ServiceException;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.Arrays;
/** /**
* 封号列表 * 封号列表

View File

@@ -10,6 +10,9 @@ public class UserForbidInfo {
private User user; private User user;
private UserInfo userInfo; private UserInfo userInfo;
private UserForbid userForbid; private UserForbid userForbid;
private String userForbidBetween;
private UserForbid ipUserForbid; private UserForbid ipUserForbid;
private String ipForbidBetween;
} }

View File

@@ -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;
}
}

View File

@@ -1,4 +1,4 @@
package com.ruoyi.cai.enums; package com.ruoyi.cai.enums.forbid;
import lombok.Getter; import lombok.Getter;

View File

@@ -1,4 +1,4 @@
package com.ruoyi.cai.enums; package com.ruoyi.cai.enums.forbid;
import lombok.Getter; import lombok.Getter;

View File

@@ -2,7 +2,7 @@ package com.ruoyi.cai.manager;
import com.ruoyi.cai.constant.RedisHttpConstant; import com.ruoyi.cai.constant.RedisHttpConstant;
import com.ruoyi.cai.domain.UserForbid; 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 com.ruoyi.common.utils.MapGetUtil;
import org.redisson.api.RMap; import org.redisson.api.RMap;
import org.redisson.api.RedissonClient; import org.redisson.api.RedissonClient;

View File

@@ -6,8 +6,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.cai.domain.*; import com.ruoyi.cai.domain.*;
import com.ruoyi.cai.dto.admin.UserForbidDTO; import com.ruoyi.cai.dto.admin.UserForbidDTO;
import com.ruoyi.cai.dto.admin.query.UserForbidReq; import com.ruoyi.cai.dto.admin.query.UserForbidReq;
import com.ruoyi.cai.enums.ForbidTimeEnum; import com.ruoyi.cai.enums.ForbidStatusEnum;
import com.ruoyi.cai.enums.ForbidTypeEnum; 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.AmqpProducer;
import com.ruoyi.cai.mq.CommonDelayTypeEnum; import com.ruoyi.cai.mq.CommonDelayTypeEnum;
import com.ruoyi.cai.mq.dto.CommonDelayDto; import com.ruoyi.cai.mq.dto.CommonDelayDto;
@@ -22,7 +23,6 @@ import org.springframework.transaction.annotation.Transactional;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -155,7 +155,7 @@ public class UserForbidManager {
UserForbid userForbid = userForbidService.getById(id); UserForbid userForbid = userForbidService.getById(id);
userForbidService.update(Wrappers.lambdaUpdate(UserForbid.class) userForbidService.update(Wrappers.lambdaUpdate(UserForbid.class)
.eq(UserForbid::getId,userForbid.getId()) .eq(UserForbid::getId,userForbid.getId())
.set(UserForbid::getForbidStatus,2)); .set(UserForbid::getForbidStatus, ForbidStatusEnum.NORMAL.getCode()));
if(ForbidTypeEnum.USER.getCode().equals(userForbid.getType())){ if(ForbidTypeEnum.USER.getCode().equals(userForbid.getType())){
User user = userService.getByUserCode(userForbid.getMember()); User user = userService.getByUserCode(userForbid.getMember());
userService.update(Wrappers.lambdaUpdate(User.class).eq(User::getId,user.getId()).set(User::getStatus,0)); userService.update(Wrappers.lambdaUpdate(User.class).eq(User::getId,user.getId()).set(User::getStatus,0));
@@ -178,7 +178,7 @@ public class UserForbidManager {
current++; current++;
page.setCurrent(current); page.setCurrent(current);
Page<UserForbid> res = userForbidService.page(page,Wrappers.lambdaQuery(UserForbid.class) 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(); List<UserForbid> records = res.getRecords();
if(records.isEmpty()){ if(records.isEmpty()){
break; break;
@@ -196,7 +196,7 @@ public class UserForbidManager {
} }
for (Long expireId : expireConsumer) { for (Long expireId : expireConsumer) {
UserForbid userForbid = userForbidService.getById(expireId); UserForbid userForbid = userForbidService.getById(expireId);
if(userForbid == null || userForbid.getForbidStatus() == 2){ if(userForbid == null || ForbidStatusEnum.NORMAL.getCode().equals(userForbid.getForbidStatus())){
return; return;
} }
// < 12小时 // < 12小时
@@ -215,7 +215,7 @@ public class UserForbidManager {
public void checkExpire(Long id){ public void checkExpire(Long id){
UserForbid userForbid = userForbidService.getById(id); UserForbid userForbid = userForbidService.getById(id);
if(userForbid == null || userForbid.getForbidStatus() == 2){ if(userForbid == null || ForbidStatusEnum.NORMAL.getCode().equals(userForbid.getForbidStatus())){
return; return;
} }
if(!userForbid.getEndTime().isAfter(LocalDateTime.now())){ if(!userForbid.getEndTime().isAfter(LocalDateTime.now())){

View File

@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.ForbidFilter; import com.ruoyi.cai.domain.ForbidFilter;
import com.ruoyi.cai.dto.admin.vo.ForbidFilterAdminVo; import com.ruoyi.cai.dto.admin.vo.ForbidFilterAdminVo;
import com.ruoyi.cai.enums.ForbidTypeEnum;
import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.PageQuery;
/** /**

View File

@@ -7,8 +7,8 @@ import com.ruoyi.cai.domain.UserErrorLog;
import com.ruoyi.cai.dto.admin.UserForbidDTO; import com.ruoyi.cai.dto.admin.UserForbidDTO;
import com.ruoyi.cai.dto.admin.vo.UserErrorLogAdminVo; import com.ruoyi.cai.dto.admin.vo.UserErrorLogAdminVo;
import com.ruoyi.cai.dto.app.query.push.PushErrorReq; import com.ruoyi.cai.dto.app.query.push.PushErrorReq;
import com.ruoyi.cai.enums.ForbidTimeEnum; import com.ruoyi.cai.enums.forbid.ForbidTimeEnum;
import com.ruoyi.cai.enums.ForbidTypeEnum; import com.ruoyi.cai.enums.forbid.ForbidTypeEnum;
import com.ruoyi.cai.enums.user.UserErrorLogHomeIndexEnum; import com.ruoyi.cai.enums.user.UserErrorLogHomeIndexEnum;
import com.ruoyi.cai.enums.user.UserErrorLogType; import com.ruoyi.cai.enums.user.UserErrorLogType;
import com.ruoyi.cai.manager.UserForbidManager; import com.ruoyi.cai.manager.UserForbidManager;

View File

@@ -5,12 +5,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.*; 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.UserForbidAdminVo;
import com.ruoyi.cai.dto.admin.vo.userforbid.UserForbidInfo; import com.ruoyi.cai.dto.admin.vo.userforbid.UserForbidInfo;
import com.ruoyi.cai.enums.ForbidTimeEnum; import com.ruoyi.cai.enums.ForbidStatusEnum;
import com.ruoyi.cai.enums.ForbidTypeEnum; import com.ruoyi.cai.enums.forbid.ForbidTimeEnum;
import com.ruoyi.cai.enums.forbid.ForbidTypeEnum;
import com.ruoyi.cai.manager.ForbidCache; import com.ruoyi.cai.manager.ForbidCache;
import com.ruoyi.cai.mapper.UserForbidMapper; import com.ruoyi.cai.mapper.UserForbidMapper;
import com.ruoyi.cai.mq.AmqpProducer; 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.service.UserService;
import com.ruoyi.cai.util.CaiDateUtil; import com.ruoyi.cai.util.CaiDateUtil;
import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.exception.ServiceException;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
/** /**
* 封号列表Service业务层处理 * 封号列表Service业务层处理
@@ -67,9 +64,9 @@ public class UserForbidServiceImpl extends ServiceImpl<UserForbidMapper, UserFor
one.setType(userForbidLog.getType()); one.setType(userForbidLog.getType());
one.setMember(userForbidLog.getMember()); one.setMember(userForbidLog.getMember());
one.setBeginTime(LocalDateTime.now()); one.setBeginTime(LocalDateTime.now());
} else if(one.getForbidStatus() == 2){ // 已解封 } else if(ForbidStatusEnum.NORMAL.getCode().equals(one.getForbidStatus())){ // 已解封
one.setBeginTime(LocalDateTime.now()); 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()); one.setBeginTime(LocalDateTime.now());
} }
LocalDateTime endTime = getEndTime(one.getBeginTime(), forbidTime); LocalDateTime endTime = getEndTime(one.getBeginTime(), forbidTime);
@@ -78,7 +75,7 @@ public class UserForbidServiceImpl extends ServiceImpl<UserForbidMapper, UserFor
} }
one.setEndTime(endTime); one.setEndTime(endTime);
one.setReason(userForbidLog.getReason()); one.setReason(userForbidLog.getReason());
one.setForbidStatus(1); one.setForbidStatus(ForbidStatusEnum.FORBID.getCode());
this.saveOrUpdate(one); this.saveOrUpdate(one);
if(user != null){ if(user != null){
userService.update(Wrappers.lambdaUpdate(User.class).eq(User::getId,user.getId()).set(User::getStatus,1)); 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; return null;
} }
UserForbidInfo userForbidInfo = new UserForbidInfo(); UserForbidInfo userForbidInfo = new UserForbidInfo();
userForbidInfo.setUser(user);
userForbidInfo.setUserInfo(userInfo);
UserForbid userForbid = this.getOne(Wrappers.lambdaQuery(UserForbid.class) UserForbid userForbid = this.getOne(Wrappers.lambdaQuery(UserForbid.class)
.eq(UserForbid::getType, ForbidTypeEnum.USER.getCode()).last("limit 1")); .eq(UserForbid::getMember, user.getUsercode())
if(userForbid != null && userForbid.getForbidStatus() == 1 && userForbid.getEndTime().isAfter(LocalDateTime.now())){ .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.setUserForbid(userForbid);
userForbidInfo.setUserForbidBetween(CaiDateUtil.betweenShowString(LocalDateTime.now(),userForbid.getEndTime()));
} }
UserForbid ipUserForbid = this.getOne(Wrappers.lambdaQuery(UserForbid.class) UserForbid ipUserForbid = this.getOne(Wrappers.lambdaQuery(UserForbid.class)
.eq(UserForbid::getMember, userInfo.getLastLoginIp())
.eq(UserForbid::getType, ForbidTypeEnum.IP.getCode()).last("limit 1")); .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.setIpUserForbid(ipUserForbid);
userForbidInfo.setIpForbidBetween(CaiDateUtil.betweenShowString(LocalDateTime.now(),ipUserForbid.getEndTime()));
} }
return userForbidInfo; return userForbidInfo;
} }

View File

@@ -3,9 +3,7 @@ package com.ruoyi.cai.util;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import java.time.DayOfWeek; import java.time.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalAdjusters; import java.time.temporal.TemporalAdjusters;
@@ -21,6 +19,56 @@ public class CaiDateUtil {
return ChronoUnit.SECONDS.between(after, before); 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){ public static LocalDate getLastWeekOne(LocalDate date){
@@ -42,6 +90,5 @@ public class CaiDateUtil {
public static String getCurrentTimeStr() { public static String getCurrentTimeStr() {
return localDateTimeToString(LocalDateTime.now()); return localDateTimeToString(LocalDateTime.now());
} }
} }