新增管理员重置普通用户密码并使其强制退出

main
gtl 2024-04-12 17:00:46 +08:00
parent 146ec18831
commit ecd5cb5a4c
4 changed files with 71 additions and 19 deletions

View File

@ -37,23 +37,7 @@ public class SysUserOnlineController extends BaseController {
@RequiresPermissions("monitor:online:list") @RequiresPermissions("monitor:online:list")
@GetMapping("/list") @GetMapping("/list")
public Result<TableDataInfo<SysUserOnline>> list (String ipaddr, String userName) { public Result<TableDataInfo<SysUserOnline>> list (String ipaddr, String userName) {
Collection<String> keys = redisService.keys(CacheConstants.LOGIN_TOKEN_KEY + "*"); return getDataTable(userOnlineService.getUserOneList(ipaddr,userName));
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);
} }
/** /**

View File

@ -3,6 +3,8 @@ package com.ruoyi.system.service;
import com.ruoyi.common.system.domain.LoginUser; import com.ruoyi.common.system.domain.LoginUser;
import com.ruoyi.system.domain.SysUserOnline; import com.ruoyi.system.domain.SysUserOnline;
import java.util.List;
/** /**
* 线 * 线
* *
@ -48,4 +50,12 @@ public interface SysUserOnlineService {
* @return 线 * @return 线
*/ */
public SysUserOnline loginUserToUserOnline (LoginUser user); public SysUserOnline loginUserToUserOnline (LoginUser user);
/**
* 线
* @param ipaddr
* @param userName
* @return 线
*/
List<SysUserOnline> getUserOneList(String ipaddr, String userName);
} }

View File

@ -1,11 +1,19 @@
package com.ruoyi.system.service.impl; package com.ruoyi.system.service.impl;
import com.ruoyi.common.core.constant.CacheConstants;
import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.common.system.domain.LoginUser; import com.ruoyi.common.system.domain.LoginUser;
import com.ruoyi.system.domain.SysUserOnline; import com.ruoyi.system.domain.SysUserOnline;
import com.ruoyi.system.service.SysUserOnlineService; import com.ruoyi.system.service.SysUserOnlineService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; 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 @Service
public class SysUserOnlineServiceImpl implements SysUserOnlineService { public class SysUserOnlineServiceImpl implements SysUserOnlineService {
@Autowired
private RedisService redisService;
/** /**
* *
* *
@ -81,4 +93,31 @@ public class SysUserOnlineServiceImpl implements SysUserOnlineService {
sysUserOnline.setLoginTime(user.getLoginTime()); sysUserOnline.setLoginTime(user.getLoginTime());
return sysUserOnline; 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;
}
} }

View File

@ -1,19 +1,23 @@
package com.ruoyi.system.service.impl; package com.ruoyi.system.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 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.constant.UserConstants;
import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.SpringUtils; import com.ruoyi.common.core.utils.SpringUtils;
import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.bean.BeanValidators; import com.ruoyi.common.core.utils.bean.BeanValidators;
import com.ruoyi.common.datascope.annotation.DataScope; 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.security.utils.SecurityUtils;
import com.ruoyi.common.system.domain.SysRole; import com.ruoyi.common.system.domain.SysRole;
import com.ruoyi.common.system.domain.SysUser; import com.ruoyi.common.system.domain.SysUser;
import com.ruoyi.system.domain.SysPost; import com.ruoyi.system.domain.SysPost;
import com.ruoyi.system.domain.SysUserOnline;
import com.ruoyi.system.domain.SysUserPost; import com.ruoyi.system.domain.SysUserPost;
import com.ruoyi.system.domain.SysUserRole; import com.ruoyi.system.domain.SysUserRole;
import com.ruoyi.system.mapper.*; import com.ruoyi.system.mapper.*;
import com.ruoyi.system.service.SysUserOnlineService;
import com.ruoyi.system.service.SysUserService; import com.ruoyi.system.service.SysUserService;
import com.ruoyi.system.service.SysConfigService; import com.ruoyi.system.service.SysConfigService;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -26,6 +30,7 @@ import org.springframework.util.CollectionUtils;
import javax.validation.Validator; import javax.validation.Validator;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -50,6 +55,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
private SysUserPostMapper userPostMapper; private SysUserPostMapper userPostMapper;
@Autowired @Autowired
private SysConfigService configService; 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 * @param user
* *
@ -338,11 +347,21 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
*/ */
@Override @Override
public int resetPwd (SysUser user) { 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); return userMapper.updateUser(user);
} }
/** /**
* *
* *
* @param userName * @param userName
* @param password * @param password