在线用户显示、定时删除日志

This commit is contained in:
lyd
2022-10-11 18:31:03 +08:00
parent a683ec765a
commit e942dbd4c5
6 changed files with 56 additions and 16 deletions

View File

@@ -36,4 +36,8 @@ public interface LogRepository extends JpaRepository<Log,Long>, JpaSpecification
@Modifying
@Query(value = "delete from sys_log where log_type = ?1", nativeQuery = true)
void deleteByLogType(String logType);
@Modifying
@Query(value = "delete from sys_log where log_type = ?1 and DATEDIFF(NOW(),create_time) >= 15", nativeQuery = true)
void delAfterDay(String logType);
}

View File

@@ -79,4 +79,14 @@ public interface LogService {
* 删除所有INFO日志
*/
void delAllByInfo();
/**
* 删除15天之前的错误日志
*/
void delAfterDay15ByError();
/**
* 删除15天之前的INFO日志
*/
void delAfterDay15ByInfo();
}

View File

@@ -155,4 +155,16 @@ public class LogServiceImpl implements LogService {
public void delAllByInfo() {
logRepository.deleteByLogType("INFO");
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delAfterDay15ByError() {
logRepository.delAfterDay("ERROR");
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delAfterDay15ByInfo() {
logRepository.delAfterDay("INFO");
}
}

View File

@@ -118,10 +118,11 @@ public class AuthorizationController {
put("user", jsonObject);
}};
// 使redis获取过期的token
redisUtils.set("my-satoken", StpUtil.getTokenValue(), StpUtil.getTokenTimeout());
// 保存在线信息
// onlineUserService.save(userDto, StpUtil.getTokenValue(), request);
onlineUserService.save(userDto, StpUtil.getTokenValue(), request);
return ResponseEntity.ok(authInfo);
}
@@ -159,7 +160,7 @@ public class AuthorizationController {
@ApiOperation("退出登录")
@DeleteMapping(value = "/logout")
public ResponseEntity<Object> logout(HttpServletRequest request) {
// onlineUserService.logout(StpUtil.getTokenValue());
onlineUserService.logout(StpUtil.getTokenValue());
StpUtil.logout();
return new ResponseEntity<>(HttpStatus.OK);
}

View File

@@ -15,6 +15,7 @@
*/
package org.nl.modules.security.service;
import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.util.StrUtil;
import lombok.extern.slf4j.Slf4j;
import org.nl.modules.common.utils.*;
@@ -61,7 +62,7 @@ public class OnlineUserService {
} catch (Exception e) {
log.error(e.getMessage(),e);
}
redisUtils.set(token, onlineUserDto, 60*60*1000);
redisUtils.set(token, onlineUserDto, StpUtil.getTokenTimeout());
}
/**
@@ -84,19 +85,22 @@ public class OnlineUserService {
* @return /
*/
public List<OnlineUserDto> getAll(String filter){
// List<String> keys = redisUtils.scan(properties.getOnlineKey() + "*");
// Collections.reverse(keys);
List<String> keys = redisUtils.scan("*");
Collections.reverse(keys);
List<OnlineUserDto> onlineUserDtos = new ArrayList<>();
// for (String key : keys) {
// OnlineUserDto onlineUserDto = (OnlineUserDto) redisUtils.get(key);
// if(StrUtil.isNotEmpty(filter)){
// if(onlineUserDto.toString().contains(filter)){
// onlineUserDtos.add(onlineUserDto);
// }
// } else {
// onlineUserDtos.add(onlineUserDto);
// }
// }
for (String key : keys) {
if (key.length() == 1511) {
OnlineUserDto onlineUserDto = (OnlineUserDto) redisUtils.get(key);
if(StrUtil.isNotEmpty(filter)){
if(onlineUserDto.toString().contains(filter)){
onlineUserDtos.add(onlineUserDto);
}
} else {
onlineUserDtos.add(onlineUserDto);
}
}
}
onlineUserDtos.sort((o1, o2) -> o2.getLoginTime().compareTo(o1.getLoginTime()));
return onlineUserDtos;
}

View File

@@ -1,6 +1,8 @@
package org.nl.wms.autotask;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.modules.logging.service.LogService;
import org.springframework.stereotype.Component;
/**
@@ -8,9 +10,16 @@ import org.springframework.stereotype.Component;
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class CleanLog {
private final LogService logService;
public void run(){
log.info("run 执行成功");
// 删除所有异常日志
logService.delAfterDay15ByError();
// 删除所有操作日志
logService.delAfterDay15ByInfo();
log.info("删除所有异常/操作日志 执行成功");
}
}