|
|
@ -49,11 +49,12 @@ public class OnlineUserService {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 保存在线用户信息
|
|
|
|
* 保存在线用户信息
|
|
|
|
|
|
|
|
*
|
|
|
|
* @param jwtUserDto /
|
|
|
|
* @param jwtUserDto /
|
|
|
|
* @param token /
|
|
|
|
* @param token /
|
|
|
|
* @param request /
|
|
|
|
* @param request /
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public void save(JwtUserDto jwtUserDto, String token, HttpServletRequest request){
|
|
|
|
public void save(JwtUserDto jwtUserDto, String token, HttpServletRequest request) {
|
|
|
|
String ip = StringUtils.getIp(request);
|
|
|
|
String ip = StringUtils.getIp(request);
|
|
|
|
String browser = StringUtils.getBrowser(request);
|
|
|
|
String browser = StringUtils.getBrowser(request);
|
|
|
|
String address = StringUtils.getCityInfo(ip);
|
|
|
|
String address = StringUtils.getCityInfo(ip);
|
|
|
@ -61,39 +62,41 @@ public class OnlineUserService {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
onlineUserDto = new OnlineUserDto(jwtUserDto.getUsername(), jwtUserDto.getUser().getNickName(), "", browser, ip, address, EncryptUtils.desEncrypt(token), new Date());
|
|
|
|
onlineUserDto = new OnlineUserDto(jwtUserDto.getUsername(), jwtUserDto.getUser().getNickName(), "", browser, ip, address, EncryptUtils.desEncrypt(token), new Date());
|
|
|
|
} catch (Exception e) {
|
|
|
|
} catch (Exception e) {
|
|
|
|
log.error(e.getMessage(),e);
|
|
|
|
log.error(e.getMessage(), e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
redisUtils.set(properties.getOnlineKey() + token, onlineUserDto, properties.getTokenValidityInSeconds()/1000);
|
|
|
|
redisUtils.set(properties.getOnlineKey() + token, onlineUserDto, properties.getTokenValidityInSeconds() / 1000);
|
|
|
|
redisUtils.set(token, jwtUserDto.getUser().getId(), properties.getTokenValidityInSeconds()/1000);
|
|
|
|
redisUtils.set(token, jwtUserDto.getUser().getId(), properties.getTokenValidityInSeconds() / 1000);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 查询全部数据
|
|
|
|
* 查询全部数据
|
|
|
|
* @param filter /
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param filter /
|
|
|
|
* @param pageable /
|
|
|
|
* @param pageable /
|
|
|
|
* @return /
|
|
|
|
* @return /
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public Map<String,Object> getAll(String filter, Pageable pageable){
|
|
|
|
public Map<String, Object> getAll(String filter, Pageable pageable) {
|
|
|
|
List<OnlineUserDto> onlineUserDtos = getAll(filter);
|
|
|
|
List<OnlineUserDto> onlineUserDtos = getAll(filter);
|
|
|
|
return PageUtil.toPage(
|
|
|
|
return PageUtil.toPage(
|
|
|
|
PageUtil.toPage(pageable.getPageNumber(),pageable.getPageSize(), onlineUserDtos),
|
|
|
|
PageUtil.toPage(pageable.getPageNumber(), pageable.getPageSize(), onlineUserDtos),
|
|
|
|
onlineUserDtos.size()
|
|
|
|
onlineUserDtos.size()
|
|
|
|
);
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 查询全部数据,不分页
|
|
|
|
* 查询全部数据,不分页
|
|
|
|
|
|
|
|
*
|
|
|
|
* @param filter /
|
|
|
|
* @param filter /
|
|
|
|
* @return /
|
|
|
|
* @return /
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public List<OnlineUserDto> getAll(String filter){
|
|
|
|
public List<OnlineUserDto> getAll(String filter) {
|
|
|
|
List<String> keys = redisUtils.scan(properties.getOnlineKey() + "*");
|
|
|
|
List<String> keys = redisUtils.scan(properties.getOnlineKey() + "*");
|
|
|
|
Collections.reverse(keys);
|
|
|
|
Collections.reverse(keys);
|
|
|
|
List<OnlineUserDto> onlineUserDtos = new ArrayList<>();
|
|
|
|
List<OnlineUserDto> onlineUserDtos = new ArrayList<>();
|
|
|
|
for (String key : keys) {
|
|
|
|
for (String key : keys) {
|
|
|
|
OnlineUserDto onlineUserDto = (OnlineUserDto) redisUtils.get(key);
|
|
|
|
OnlineUserDto onlineUserDto = (OnlineUserDto) redisUtils.get(key);
|
|
|
|
if(StringUtils.isNotBlank(filter)){
|
|
|
|
if (StringUtils.isNotBlank(filter)) {
|
|
|
|
if(onlineUserDto.toString().contains(filter)){
|
|
|
|
if (onlineUserDto.toString().contains(filter)) {
|
|
|
|
onlineUserDtos.add(onlineUserDto);
|
|
|
|
onlineUserDtos.add(onlineUserDto);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
@ -106,15 +109,17 @@ public class OnlineUserService {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 踢出用户
|
|
|
|
* 踢出用户
|
|
|
|
|
|
|
|
*
|
|
|
|
* @param key /
|
|
|
|
* @param key /
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public void kickOut(String key){
|
|
|
|
public void kickOut(String key) {
|
|
|
|
key = properties.getOnlineKey() + key;
|
|
|
|
key = properties.getOnlineKey() + key;
|
|
|
|
redisUtils.del(key);
|
|
|
|
redisUtils.del(key);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 退出登录
|
|
|
|
* 退出登录
|
|
|
|
|
|
|
|
*
|
|
|
|
* @param token /
|
|
|
|
* @param token /
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public void logout(String token) {
|
|
|
|
public void logout(String token) {
|
|
|
@ -124,14 +129,15 @@ public class OnlineUserService {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 导出
|
|
|
|
* 导出
|
|
|
|
* @param all /
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param all /
|
|
|
|
* @param response /
|
|
|
|
* @param response /
|
|
|
|
* @throws IOException /
|
|
|
|
* @throws IOException /
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public void download(List<OnlineUserDto> all, HttpServletResponse response) throws IOException {
|
|
|
|
public void download(List<OnlineUserDto> all, HttpServletResponse response) throws IOException {
|
|
|
|
List<Map<String, Object>> list = new ArrayList<>();
|
|
|
|
List<Map<String, Object>> list = new ArrayList<>();
|
|
|
|
for (OnlineUserDto user : all) {
|
|
|
|
for (OnlineUserDto user : all) {
|
|
|
|
Map<String,Object> map = new LinkedHashMap<>();
|
|
|
|
Map<String, Object> map = new LinkedHashMap<>();
|
|
|
|
map.put("用户名", user.getUserName());
|
|
|
|
map.put("用户名", user.getUserName());
|
|
|
|
map.put("部门", user.getDept());
|
|
|
|
map.put("部门", user.getDept());
|
|
|
|
map.put("登录IP", user.getIp());
|
|
|
|
map.put("登录IP", user.getIp());
|
|
|
@ -145,6 +151,7 @@ public class OnlineUserService {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 查询用户
|
|
|
|
* 查询用户
|
|
|
|
|
|
|
|
*
|
|
|
|
* @param key /
|
|
|
|
* @param key /
|
|
|
|
* @return /
|
|
|
|
* @return /
|
|
|
|
*/
|
|
|
|
*/
|
|
|
@ -154,24 +161,25 @@ public class OnlineUserService {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 检测用户是否在之前已经登录,已经登录踢下线
|
|
|
|
* 检测用户是否在之前已经登录,已经登录踢下线
|
|
|
|
|
|
|
|
*
|
|
|
|
* @param userName 用户名
|
|
|
|
* @param userName 用户名
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public void checkLoginOnUser(String userName, String igoreToken){
|
|
|
|
public void checkLoginOnUser(String userName, String igoreToken) {
|
|
|
|
List<OnlineUserDto> onlineUserDtos = getAll(userName);
|
|
|
|
List<OnlineUserDto> onlineUserDtos = getAll(userName);
|
|
|
|
if(onlineUserDtos ==null || onlineUserDtos.isEmpty()){
|
|
|
|
if (onlineUserDtos == null || onlineUserDtos.isEmpty()) {
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for(OnlineUserDto onlineUserDto : onlineUserDtos){
|
|
|
|
for (OnlineUserDto onlineUserDto : onlineUserDtos) {
|
|
|
|
if(onlineUserDto.getUserName().equals(userName)){
|
|
|
|
if (onlineUserDto.getUserName().equals(userName)) {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
String token =EncryptUtils.desDecrypt(onlineUserDto.getKey());
|
|
|
|
String token = EncryptUtils.desDecrypt(onlineUserDto.getKey());
|
|
|
|
if(StringUtils.isNotBlank(igoreToken)&&!igoreToken.equals(token)){
|
|
|
|
if (StringUtils.isNotBlank(igoreToken) && !igoreToken.equals(token)) {
|
|
|
|
this.kickOut(token);
|
|
|
|
this.kickOut(token);
|
|
|
|
}else if(StringUtils.isBlank(igoreToken)){
|
|
|
|
} else if (StringUtils.isBlank(igoreToken)) {
|
|
|
|
this.kickOut(token);
|
|
|
|
this.kickOut(token);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
|
|
} catch (Exception e) {
|
|
|
|
log.error("checkUser is error",e);
|
|
|
|
log.error("checkUser is error", e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -179,6 +187,7 @@ public class OnlineUserService {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 根据用户名强退用户
|
|
|
|
* 根据用户名强退用户
|
|
|
|
|
|
|
|
*
|
|
|
|
* @param username /
|
|
|
|
* @param username /
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
@Async
|
|
|
|
@Async
|
|
|
@ -186,7 +195,7 @@ public class OnlineUserService {
|
|
|
|
List<OnlineUserDto> onlineUsers = getAll(username);
|
|
|
|
List<OnlineUserDto> onlineUsers = getAll(username);
|
|
|
|
for (OnlineUserDto onlineUser : onlineUsers) {
|
|
|
|
for (OnlineUserDto onlineUser : onlineUsers) {
|
|
|
|
if (onlineUser.getUserName().equals(username)) {
|
|
|
|
if (onlineUser.getUserName().equals(username)) {
|
|
|
|
String token =EncryptUtils.desDecrypt(onlineUser.getKey());
|
|
|
|
String token = EncryptUtils.desDecrypt(onlineUser.getKey());
|
|
|
|
kickOut(token);
|
|
|
|
kickOut(token);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|