1.修改AI退出登录后的逻辑
This commit is contained in:
@@ -10,6 +10,7 @@ import com.yupi.springbootinit.model.enums.CommonStatusEnum;
|
|||||||
import com.yupi.springbootinit.model.enums.LoginSceneEnum;
|
import com.yupi.springbootinit.model.enums.LoginSceneEnum;
|
||||||
import com.yupi.springbootinit.model.vo.user.SystemUsersVO;
|
import com.yupi.springbootinit.model.vo.user.SystemUsersVO;
|
||||||
import com.yupi.springbootinit.service.SystemUsersService;
|
import com.yupi.springbootinit.service.SystemUsersService;
|
||||||
|
import com.yupi.springbootinit.utils.RedisUtils;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.amqp.core.*;
|
import org.springframework.amqp.core.*;
|
||||||
@@ -37,11 +38,14 @@ public class LoginService {
|
|||||||
@Resource
|
@Resource
|
||||||
private RabbitAdmin rabbitAdmin;
|
private RabbitAdmin rabbitAdmin;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private RedisUtils redisUtils;
|
||||||
|
|
||||||
public SystemUsersVO login(LoginSceneEnum scene, SystemUsersDTO dto) {
|
public SystemUsersVO login(LoginSceneEnum scene, SystemUsersDTO dto) {
|
||||||
SystemUsers user = validateUser(dto); // 校验用户名、密码、状态、租户过期
|
SystemUsers user = validateUser(dto); // 校验用户名、密码、状态、租户过期
|
||||||
checkRole(scene, user.getId()); // 按场景做角色校验
|
checkRole(scene, user.getId()); // 按场景做角色校验
|
||||||
if (scene.equals(LoginSceneEnum.AI_CHAT)) {
|
if (scene.equals(LoginSceneEnum.AI_CHAT)) {
|
||||||
redisTemplate.opsForValue().set("ai_login:"+user.getTenantId() ,true);
|
redisTemplate.opsForValue().set("ai_login:"+user.getTenantId()+":"+user.getId(),true);
|
||||||
String queueName = "q.tenant." + user.getTenantId();
|
String queueName = "q.tenant." + user.getTenantId();
|
||||||
if (created.add(String.valueOf(user.getTenantId()))) {
|
if (created.add(String.valueOf(user.getTenantId()))) {
|
||||||
Queue queue = QueueBuilder.durable(queueName).build();
|
Queue queue = QueueBuilder.durable(queueName).build();
|
||||||
@@ -89,10 +93,14 @@ public class LoginService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Boolean aiChatLogout(SystemUsersDTO usersDTO) {
|
public Boolean aiChatLogout(SystemUsersDTO usersDTO) {
|
||||||
Boolean delete = redisTemplate.delete("ai_login:"+usersDTO.getTenantId());
|
Boolean delete = redisTemplate.delete("ai_login:"+usersDTO.getTenantId()+":"+usersDTO.getUserId());
|
||||||
created.remove(String.valueOf(usersDTO.getTenantId()));
|
|
||||||
log.info("删除租户:{}登录状态:{}",usersDTO.getTenantId(),delete);
|
|
||||||
StpUtil.logout(usersDTO.getUserId());
|
StpUtil.logout(usersDTO.getUserId());
|
||||||
|
log.info("删除租户:{}登录状态:{}",usersDTO.getTenantId(),delete);
|
||||||
|
if (!redisUtils.hasAiLoginKeys("ai_login:" + usersDTO.getTenantId()+":*")) {
|
||||||
|
created.remove(String.valueOf(usersDTO.getTenantId()));
|
||||||
|
boolean b = rabbitAdmin.deleteQueue("q.tenant." + usersDTO.getTenantId());
|
||||||
|
log.info("删除租户:{}队列删除状态:{}",usersDTO.getTenantId(),b);
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
26
src/main/java/com/yupi/springbootinit/utils/RedisUtils.java
Normal file
26
src/main/java/com/yupi/springbootinit/utils/RedisUtils.java
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
package com.yupi.springbootinit.utils;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @author: ziin
|
||||||
|
* @date: 2025/8/27 20:35
|
||||||
|
*/
|
||||||
|
|
||||||
|
import org.springframework.data.redis.core.*;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class RedisUtils {
|
||||||
|
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private RedisTemplate<String,Object> redisTemplate;
|
||||||
|
|
||||||
|
public boolean hasAiLoginKeys(String prefix) {
|
||||||
|
Set<String> keys = redisTemplate.keys(prefix); // 获取匹配的键集合
|
||||||
|
return !keys.isEmpty(); // 如果有键匹配,返回true,否则返回false
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user