新增管理员重置普通用户密码并使其强制退出
parent
146ec18831
commit
ecd5cb5a4c
|
@ -37,23 +37,7 @@ public class SysUserOnlineController extends BaseController {
|
|||
@RequiresPermissions("monitor:online:list")
|
||||
@GetMapping("/list")
|
||||
public Result<TableDataInfo<SysUserOnline>> list (String ipaddr, String userName) {
|
||||
Collection<String> keys = redisService.keys(CacheConstants.LOGIN_TOKEN_KEY + "*");
|
||||
List<SysUserOnline> userOnlineList = new ArrayList<SysUserOnline>();
|
||||
for (String key : keys) {
|
||||
LoginUser user = redisService.getCacheObject(key);
|
||||
if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName)) {
|
||||
userOnlineList.add(userOnlineService.selectOnlineByInfo(ipaddr, userName, user));
|
||||
} else if (StringUtils.isNotEmpty(ipaddr)) {
|
||||
userOnlineList.add(userOnlineService.selectOnlineByIpaddr(ipaddr, user));
|
||||
} else if (StringUtils.isNotEmpty(userName)) {
|
||||
userOnlineList.add(userOnlineService.selectOnlineByUserName(userName, user));
|
||||
} else {
|
||||
userOnlineList.add(userOnlineService.loginUserToUserOnline(user));
|
||||
}
|
||||
}
|
||||
Collections.reverse(userOnlineList);
|
||||
userOnlineList.removeAll(Collections.singleton(null));
|
||||
return getDataTable(userOnlineList);
|
||||
return getDataTable(userOnlineService.getUserOneList(ipaddr,userName));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -3,6 +3,8 @@ package com.ruoyi.system.service;
|
|||
import com.ruoyi.common.system.domain.LoginUser;
|
||||
import com.ruoyi.system.domain.SysUserOnline;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 在线用户 服务层
|
||||
*
|
||||
|
@ -48,4 +50,12 @@ public interface SysUserOnlineService {
|
|||
* @return 在线用户
|
||||
*/
|
||||
public SysUserOnline loginUserToUserOnline (LoginUser user);
|
||||
|
||||
/**
|
||||
* 从缓存中获取在线用户信息集合
|
||||
* @param ipaddr 登录地址
|
||||
* @param userName 用户名称
|
||||
* @return 在线用户信息集合
|
||||
*/
|
||||
List<SysUserOnline> getUserOneList(String ipaddr, String userName);
|
||||
}
|
||||
|
|
|
@ -1,11 +1,19 @@
|
|||
package com.ruoyi.system.service.impl;
|
||||
|
||||
import com.ruoyi.common.core.constant.CacheConstants;
|
||||
import com.ruoyi.common.core.utils.StringUtils;
|
||||
import com.ruoyi.common.redis.service.RedisService;
|
||||
import com.ruoyi.common.system.domain.LoginUser;
|
||||
import com.ruoyi.system.domain.SysUserOnline;
|
||||
import com.ruoyi.system.service.SysUserOnlineService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 在线用户 服务层处理
|
||||
*
|
||||
|
@ -13,6 +21,10 @@ import org.springframework.stereotype.Service;
|
|||
*/
|
||||
@Service
|
||||
public class SysUserOnlineServiceImpl implements SysUserOnlineService {
|
||||
|
||||
@Autowired
|
||||
private RedisService redisService;
|
||||
|
||||
/**
|
||||
* 通过登录地址查询信息
|
||||
*
|
||||
|
@ -81,4 +93,31 @@ public class SysUserOnlineServiceImpl implements SysUserOnlineService {
|
|||
sysUserOnline.setLoginTime(user.getLoginTime());
|
||||
return sysUserOnline;
|
||||
}
|
||||
|
||||
/**
|
||||
* 从缓存中获取在线用户信息集合
|
||||
* @param ipaddr 登录地址
|
||||
* @param userName 用户名称
|
||||
* @return 在线用户信息集合
|
||||
*/
|
||||
@Override
|
||||
public List<SysUserOnline> getUserOneList(String ipaddr, String userName) {
|
||||
Collection<String> keys = redisService.keys(CacheConstants.LOGIN_TOKEN_KEY + "*");
|
||||
List<SysUserOnline> userOnlineList = new ArrayList<SysUserOnline>();
|
||||
for (String key : keys) {
|
||||
LoginUser user = redisService.getCacheObject(key);
|
||||
if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName)) {
|
||||
userOnlineList.add(this.selectOnlineByInfo(ipaddr, userName, user));
|
||||
} else if (StringUtils.isNotEmpty(ipaddr)) {
|
||||
userOnlineList.add(this.selectOnlineByIpaddr(ipaddr, user));
|
||||
} else if (StringUtils.isNotEmpty(userName)) {
|
||||
userOnlineList.add(this.selectOnlineByUserName(userName, user));
|
||||
} else {
|
||||
userOnlineList.add(this.loginUserToUserOnline(user));
|
||||
}
|
||||
}
|
||||
Collections.reverse(userOnlineList);
|
||||
userOnlineList.removeAll(Collections.singleton(null));
|
||||
return userOnlineList;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,19 +1,23 @@
|
|||
package com.ruoyi.system.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.ruoyi.common.core.constant.CacheConstants;
|
||||
import com.ruoyi.common.core.constant.UserConstants;
|
||||
import com.ruoyi.common.core.exception.ServiceException;
|
||||
import com.ruoyi.common.core.utils.SpringUtils;
|
||||
import com.ruoyi.common.core.utils.StringUtils;
|
||||
import com.ruoyi.common.core.utils.bean.BeanValidators;
|
||||
import com.ruoyi.common.datascope.annotation.DataScope;
|
||||
import com.ruoyi.common.redis.service.RedisService;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.common.system.domain.SysRole;
|
||||
import com.ruoyi.common.system.domain.SysUser;
|
||||
import com.ruoyi.system.domain.SysPost;
|
||||
import com.ruoyi.system.domain.SysUserOnline;
|
||||
import com.ruoyi.system.domain.SysUserPost;
|
||||
import com.ruoyi.system.domain.SysUserRole;
|
||||
import com.ruoyi.system.mapper.*;
|
||||
import com.ruoyi.system.service.SysUserOnlineService;
|
||||
import com.ruoyi.system.service.SysUserService;
|
||||
import com.ruoyi.system.service.SysConfigService;
|
||||
import org.slf4j.Logger;
|
||||
|
@ -26,6 +30,7 @@ import org.springframework.util.CollectionUtils;
|
|||
import javax.validation.Validator;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
|
@ -50,6 +55,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|||
private SysUserPostMapper userPostMapper;
|
||||
@Autowired
|
||||
private SysConfigService configService;
|
||||
@Autowired
|
||||
private RedisService redisService;
|
||||
@Autowired
|
||||
private SysUserOnlineService sysUserOnlineService;
|
||||
|
||||
/**
|
||||
* 根据条件分页查询用户列表
|
||||
|
@ -330,7 +339,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|||
}
|
||||
|
||||
/**
|
||||
* 重置用户密码
|
||||
* 用户管理界面重置用户密码
|
||||
*
|
||||
* @param user 用户信息
|
||||
*
|
||||
|
@ -338,11 +347,21 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|||
*/
|
||||
@Override
|
||||
public int resetPwd (SysUser user) {
|
||||
SysUser sysUser = userMapper.selectUserById(user.getUserId());
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
//管理员操作后强退
|
||||
if(!user.getUserId().equals(userId)&&SecurityUtils.isAdmin(userId)){
|
||||
List<SysUserOnline> userOneList = sysUserOnlineService.getUserOneList(null, null);
|
||||
userOneList.stream().filter(sysUserOnline -> sysUserOnline.getUserName().equals(sysUser.getUserName()))
|
||||
.findFirst().ifPresent(sysUserOnline->
|
||||
redisService.deleteObject(CacheConstants.LOGIN_TOKEN_KEY + sysUserOnline.getTokenId())
|
||||
);
|
||||
}
|
||||
return userMapper.updateUser(user);
|
||||
}
|
||||
|
||||
/**
|
||||
* 重置用户密码
|
||||
* 个人信息界面重置用户密码
|
||||
*
|
||||
* @param userName 用户名
|
||||
* @param password 密码
|
||||
|
|
Loading…
Reference in New Issue