123
This commit is contained in:
@@ -2,12 +2,14 @@ package com.ruoyi.cai.manager;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.rabbitmq.client.LongString;
|
||||
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.mq.AmqpProducer;
|
||||
import com.ruoyi.cai.mq.CommonDelayDto;
|
||||
import com.ruoyi.cai.service.*;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import lombok.Data;
|
||||
@@ -17,6 +19,9 @@ import org.springframework.stereotype.Component;
|
||||
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;
|
||||
|
||||
@Component
|
||||
@@ -159,6 +164,63 @@ public class UserForbidManager {
|
||||
forbidCache.unForbid(type,member);
|
||||
}
|
||||
|
||||
public void checkAll(){
|
||||
List<Long> expireIds = new ArrayList<>();
|
||||
List<Long> expireConsumer = new ArrayList<>();
|
||||
Page<UserForbid> page = new Page<>();
|
||||
page.setSize(100L);
|
||||
long current = 0;
|
||||
while (true){
|
||||
current++;
|
||||
page.setCurrent(current);
|
||||
Page<UserForbid> res = userForbidService.page(page,Wrappers.lambdaQuery(UserForbid.class)
|
||||
.eq(UserForbid::getForbidStatus,1));
|
||||
List<UserForbid> records = res.getRecords();
|
||||
if(records.isEmpty()){
|
||||
break;
|
||||
}
|
||||
for (UserForbid record : records) {
|
||||
if(record.getEndTime().isAfter(LocalDateTime.now())){
|
||||
expireIds.add(record.getId());
|
||||
}else if(record.getEndTime().plusHours(12).isAfter(LocalDateTime.now())){ // 还有12小时过期
|
||||
expireConsumer.add(record.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
for (Long expireId : expireIds) {
|
||||
checkExpire(expireId);
|
||||
}
|
||||
for (Long expireId : expireConsumer) {
|
||||
UserForbid userForbid = userForbidService.getById(expireId);
|
||||
if(userForbid == null || userForbid.getForbidStatus() == 2){
|
||||
return;
|
||||
}
|
||||
// 后者 - 前者 < 12小时
|
||||
long between = ChronoUnit.SECONDS.between(LocalDateTime.now(), userForbid.getEndTime());
|
||||
if(between > 0 && between < 60*60*12){
|
||||
CommonDelayDto dto = new CommonDelayDto();
|
||||
dto.setForbidId(expireId);
|
||||
dto.setType(2);
|
||||
amqpProducer.sendCommonDelayMq(dto,(int)between+5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Autowired
|
||||
private AmqpProducer amqpProducer;
|
||||
|
||||
public void checkExpire(Long id){
|
||||
UserForbid userForbid = userForbidService.getById(id);
|
||||
if(userForbid == null || userForbid.getForbidStatus() == 2){
|
||||
return;
|
||||
}
|
||||
if(!userForbid.getEndTime().isAfter(LocalDateTime.now())){
|
||||
return;
|
||||
}
|
||||
this.unForbidByForbidId(id);
|
||||
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class CheckForbid implements Serializable {
|
||||
// 是否已经被封禁
|
||||
|
||||
Reference in New Issue
Block a user