1
0

修改用户状态-强制下线

This commit is contained in:
2025-07-31 15:29:37 +08:00
parent e07dbb01b7
commit 8ae15dcd9a
3 changed files with 109 additions and 96 deletions

View File

@ -5,6 +5,7 @@ import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fuyuanshen.common.core.domain.model.LoginUser; import com.fuyuanshen.common.core.domain.model.LoginUser;
import com.fuyuanshen.common.core.enums.UserType;
import com.fuyuanshen.common.core.utils.StringUtils; import com.fuyuanshen.common.core.utils.StringUtils;
import com.fuyuanshen.common.mybatis.core.page.TableDataInfo; import com.fuyuanshen.common.mybatis.core.page.TableDataInfo;
import com.fuyuanshen.common.satoken.utils.LoginHelper; import com.fuyuanshen.common.satoken.utils.LoginHelper;
@ -95,7 +96,7 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> i
customer.setUserLevel((byte) (loginUser.getUserLevel() + 1)); customer.setUserLevel((byte) (loginUser.getUserLevel() + 1));
customer.setPid(loginUser.getUserId()); customer.setPid(loginUser.getUserId());
customer.setStatus("0"); customer.setStatus("0");
customer.setUserType(UserType.SYS_USER.getUserType());
save(customer); save(customer);
// 新增用户与角色管理 // 新增用户与角色管理
@ -117,6 +118,9 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> i
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void updateCustomer(Customer customer) throws Exception { public void updateCustomer(Customer customer) throws Exception {
// 获取当前会话账号id, 如果未登录,则抛出异常:`NotLoginException`
Object loginId = StpUtil.getLoginId();
UserQueryCriteria userQueryCriteria = new UserQueryCriteria(); UserQueryCriteria userQueryCriteria = new UserQueryCriteria();
if (StringUtils.isNotEmpty(customer.getUserName())) { if (StringUtils.isNotEmpty(customer.getUserName())) {
userQueryCriteria.setCustomerName(customer.getUserName()); userQueryCriteria.setCustomerName(customer.getUserName());
@ -130,17 +134,19 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> i
customer.setStatus("0"); customer.setStatus("0");
} else { } else {
// 强制下线 // 强制下线
// StpUtil.logout(customer.getCustomerId()); // String tokenId = customer.getUserType() + ":" + customer.getCustomerId();
String tokenId = UserType.SYS_USER.getUserType() + ":" + customer.getCustomerId();
StpUtil.logout(tokenId);
// StpUtil.kickout(customer.getCustomerId()); // StpUtil.kickout(customer.getCustomerId());
customer.setStatus("1"); customer.setStatus("1");
// 检查目标用户是否有有效的登录状态 // 检查目标用户是否有有效的登录状态
if (StpUtil.isLogin(customer.getCustomerId())) { // if (StpUtil.isLogin(customer.getCustomerId())) {
// 用户已登录,可以执行踢出操作 // // 用户已登录,可以执行踢出操作
StpUtil.kickout(customer.getCustomerId()); // StpUtil.kickout(customer.getCustomerId());
} else { // } else {
// 用户未登录,无法踢出 // // 用户未登录,无法踢出
System.out.println("目标用户未登录,无法执行踢出操作"); // System.out.println("目标用户未登录,无法执行踢出操作");
} // }
} }
saveOrUpdate(customer); saveOrUpdate(customer);
} }

View File

@ -6,17 +6,13 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fuyuanshen.common.core.domain.PageResult;
import com.fuyuanshen.common.core.domain.model.LoginUser; import com.fuyuanshen.common.core.domain.model.LoginUser;
import com.fuyuanshen.common.core.utils.PageUtil;
import com.fuyuanshen.common.mybatis.core.page.TableDataInfo; import com.fuyuanshen.common.mybatis.core.page.TableDataInfo;
import com.fuyuanshen.common.satoken.utils.LoginHelper; import com.fuyuanshen.common.satoken.utils.LoginHelper;
import com.fuyuanshen.equipment.domain.Device; import com.fuyuanshen.equipment.domain.Device;
import com.fuyuanshen.equipment.domain.DeviceAssignments;
import com.fuyuanshen.equipment.domain.DeviceType; import com.fuyuanshen.equipment.domain.DeviceType;
import com.fuyuanshen.equipment.domain.DeviceTypeGrants; import com.fuyuanshen.equipment.domain.DeviceTypeGrants;
import com.fuyuanshen.equipment.domain.form.DeviceTypeForm; import com.fuyuanshen.equipment.domain.form.DeviceTypeForm;
import com.fuyuanshen.equipment.domain.query.DeviceQueryCriteria;
import com.fuyuanshen.equipment.domain.query.DeviceTypeQueryCriteria; import com.fuyuanshen.equipment.domain.query.DeviceTypeQueryCriteria;
import com.fuyuanshen.equipment.mapper.DeviceAssignmentsMapper; import com.fuyuanshen.equipment.mapper.DeviceAssignmentsMapper;
import com.fuyuanshen.equipment.mapper.DeviceMapper; import com.fuyuanshen.equipment.mapper.DeviceMapper;

View File

@ -1,5 +1,6 @@
package com.fuyuanshen.system.service.impl; package com.fuyuanshen.system.service.impl;
import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
@ -11,6 +12,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuyuanshen.common.core.enums.UserStatus;
import com.fuyuanshen.common.core.enums.UserType;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import com.fuyuanshen.common.core.constant.CacheNames; import com.fuyuanshen.common.core.constant.CacheNames;
@ -359,6 +362,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
insertUserRole(userId, roleIds, true); insertUserRole(userId, roleIds, true);
} }
/** /**
* 修改用户状态 * 修改用户状态
* *
@ -368,12 +372,19 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
*/ */
@Override @Override
public int updateUserStatus(Long userId, String status) { public int updateUserStatus(Long userId, String status) {
if (UserStatus.DISABLE.getCode().equals(status)) {
// 强制下线
String tokenId = UserType.SYS_USER.getUserType() + ":" + userId;
StpUtil.logout(tokenId);
}
return baseMapper.update(null, return baseMapper.update(null,
new LambdaUpdateWrapper<SysUser>() new LambdaUpdateWrapper<SysUser>()
.set(SysUser::getStatus, status) .set(SysUser::getStatus, status)
.eq(SysUser::getUserId, userId)); .eq(SysUser::getUserId, userId));
} }
/** /**
* 修改用户基本信息 * 修改用户基本信息
* *