diff --git a/urbanLifelineServ/ai/src/main/java/org/xyzh/ai/controller/KnowledgeController.java b/urbanLifelineServ/ai/src/main/java/org/xyzh/ai/controller/KnowledgeController.java index 89dbca07..39c0b2de 100644 --- a/urbanLifelineServ/ai/src/main/java/org/xyzh/ai/controller/KnowledgeController.java +++ b/urbanLifelineServ/ai/src/main/java/org/xyzh/ai/controller/KnowledgeController.java @@ -66,7 +66,7 @@ public class KnowledgeController { return ResultDomain.failure(result.getAllErrors()); } logger.info("创建知识库: title={}", knowledge.getTitle()); - return knowledgeService.createKnowledge(knowledge, "PUBLIC", null, null); + return knowledgeService.createKnowledge(knowledge); } /** diff --git a/urbanLifelineServ/ai/src/main/java/org/xyzh/ai/service/impl/AgentChatServiceImpl.java b/urbanLifelineServ/ai/src/main/java/org/xyzh/ai/service/impl/AgentChatServiceImpl.java index 3dedf247..3adf2696 100644 --- a/urbanLifelineServ/ai/src/main/java/org/xyzh/ai/service/impl/AgentChatServiceImpl.java +++ b/urbanLifelineServ/ai/src/main/java/org/xyzh/ai/service/impl/AgentChatServiceImpl.java @@ -288,7 +288,7 @@ public class AgentChatServiceImpl implements AgentChatService { // 1. 从Redis获取会话数据 String cacheKey = CHAT_SESSION_PREFIX + sessionId; @SuppressWarnings("unchecked") - Map sessionData = (Map) redisService.get(cacheKey); + Map sessionData = redisService.get(cacheKey, Map.class); if (sessionData == null) { try { diff --git a/urbanLifelineServ/ai/src/main/java/org/xyzh/ai/service/impl/AgentServiceImpl.java b/urbanLifelineServ/ai/src/main/java/org/xyzh/ai/service/impl/AgentServiceImpl.java index 889494a3..8684ab2c 100644 --- a/urbanLifelineServ/ai/src/main/java/org/xyzh/ai/service/impl/AgentServiceImpl.java +++ b/urbanLifelineServ/ai/src/main/java/org/xyzh/ai/service/impl/AgentServiceImpl.java @@ -187,7 +187,7 @@ public class AgentServiceImpl implements AgentService { String cacheKey = AGENT_CACHE_PREFIX + agentId; // 1. 先从缓存获取 - TbAgent agent = (TbAgent) redisService.get(cacheKey); + TbAgent agent = redisService.get(cacheKey, TbAgent.class); if (agent != null) { return ResultDomain.success("查询成功", agent); } @@ -196,7 +196,7 @@ public class AgentServiceImpl implements AgentService { agentLock.lock(); try { // 再次检查缓存 - agent = (TbAgent) redisService.get(cacheKey); + agent = redisService.get(cacheKey, TbAgent.class); if (agent != null) { return ResultDomain.success("查询成功", agent); } diff --git a/urbanLifelineServ/ai/src/main/java/org/xyzh/ai/service/impl/KnowledgeServiceImpl.java b/urbanLifelineServ/ai/src/main/java/org/xyzh/ai/service/impl/KnowledgeServiceImpl.java index 90a753e9..9f3b515e 100644 --- a/urbanLifelineServ/ai/src/main/java/org/xyzh/ai/service/impl/KnowledgeServiceImpl.java +++ b/urbanLifelineServ/ai/src/main/java/org/xyzh/ai/service/impl/KnowledgeServiceImpl.java @@ -63,15 +63,12 @@ public class KnowledgeServiceImpl implements KnowledgeService { * @description 创建知识库基础信息,包含dify知识库各种参数的配置 * 注意:涉及外部API调用,不使用@Transactional,采用手动补偿机制 * @param knowledge 知识库信息 - * @param permissionType 权限类型:PUBLIC-公开,DEPARTMENT-部门,ROLE-角色,PRIVATE-私有 - * @param deptIds 部门ID列表(DEPARTMENT类型需要) - * @param roleIds 角色ID列表(ROLE/PRIVATE类型需要) * @return ResultDomain 创建结果 * @author yslg * @since 2025-12-18 */ @Override - public ResultDomain createKnowledge(TbKnowledge knowledge, String permissionType, List deptIds, List roleIds) { + public ResultDomain createKnowledge(TbKnowledge knowledge) { // 1. 参数校验 if (!StringUtils.hasText(knowledge.getTitle())) { return ResultDomain.failure("知识库标题不能为空"); diff --git a/urbanLifelineServ/apis/api-ai/src/main/java/org/xyzh/api/ai/service/KnowledgeService.java b/urbanLifelineServ/apis/api-ai/src/main/java/org/xyzh/api/ai/service/KnowledgeService.java index f9b10663..b62ec80f 100644 --- a/urbanLifelineServ/apis/api-ai/src/main/java/org/xyzh/api/ai/service/KnowledgeService.java +++ b/urbanLifelineServ/apis/api-ai/src/main/java/org/xyzh/api/ai/service/KnowledgeService.java @@ -16,19 +16,13 @@ public interface KnowledgeService { /** * @description 创建知识库基础信息,包含dify知识库各种参数的配置 * @param knowledge 知识库信息 - * @param permissionType 权限类型:PUBLIC-公开,DEPARTMENT-部门,ROLE-角色,PRIVATE-私有 * @param deptIds 部门ID列表(DEPARTMENT类型需要) * @param roleIds 角色ID列表(ROLE/PRIVATE类型需要) * @return ResultDomain 创建结果 * @author yslg * @since 2025-12-18 */ - ResultDomain createKnowledge( - TbKnowledge knowledge, - String permissionType, - List deptIds, - List roleIds - ); + ResultDomain createKnowledge(TbKnowledge knowledge); /** * @description 更新知识库,包含dify知识库各种参数的配置 diff --git a/urbanLifelineServ/auth/src/main/java/org/xyzh/auth/controller/AuthController.java b/urbanLifelineServ/auth/src/main/java/org/xyzh/auth/controller/AuthController.java index d8a41dd9..728fba32 100644 --- a/urbanLifelineServ/auth/src/main/java/org/xyzh/auth/controller/AuthController.java +++ b/urbanLifelineServ/auth/src/main/java/org/xyzh/auth/controller/AuthController.java @@ -210,7 +210,7 @@ public class AuthController { // 通过sessionId验证手机验证码 String smsCodeKey = "sms:code:" + smsSessionId; - String storedSmsValue = (String) redisService.get(smsCodeKey); + String storedSmsValue = redisService.get(smsCodeKey, String.class); if (storedSmsValue == null) { return ResultDomain.failure("验证码已过期,请重新获取"); } @@ -258,7 +258,7 @@ public class AuthController { // 通过sessionId验证邮箱验证码 String emailCodeKey = "email:code:" + emailSessionId; - String storedEmailValue = (String) redisService.get(emailCodeKey); + String storedEmailValue = redisService.get(emailCodeKey, String.class); if (storedEmailValue == null) { return ResultDomain.failure("验证码已过期,请重新获取"); } diff --git a/urbanLifelineServ/auth/src/main/java/org/xyzh/auth/service/impl/AuthServiceImpl.java b/urbanLifelineServ/auth/src/main/java/org/xyzh/auth/service/impl/AuthServiceImpl.java index 6bb07e55..8c2c8f2c 100644 --- a/urbanLifelineServ/auth/src/main/java/org/xyzh/auth/service/impl/AuthServiceImpl.java +++ b/urbanLifelineServ/auth/src/main/java/org/xyzh/auth/service/impl/AuthServiceImpl.java @@ -160,7 +160,7 @@ public class AuthServiceImpl implements AuthService{ // 2. 从Redis获取登录信息 String loginKey = "login:token:" + token; - String loginJson = (String) redisService.get(loginKey); + String loginJson = redisService.get(loginKey, String.class); if (loginJson == null) { return ResultDomain.failure("登录信息已失效"); } @@ -422,7 +422,7 @@ public class AuthServiceImpl implements AuthService{ // 2. 从Redis获取登录信息 String loginKey = "login:token:" + token; - String loginJson = (String) redisService.get(loginKey); + String loginJson = redisService.get(loginKey, String.class); if (loginJson == null) { return ResultDomain.failure("登录信息已失效"); } @@ -481,7 +481,7 @@ public class AuthServiceImpl implements AuthService{ // 1. 从Redis获取登录信息 String loginKey = "login:token:" + token; - String loginJson = (String) redisService.get(loginKey); + String loginJson = redisService.get(loginKey, String.class); if (loginJson == null) { return ResultDomain.success("登出成功", (LoginDomain) null); // 已经过期的token,直接返回成功 } diff --git a/urbanLifelineServ/auth/src/main/java/org/xyzh/auth/strategy/impl/EmailLoginStrategy.java b/urbanLifelineServ/auth/src/main/java/org/xyzh/auth/strategy/impl/EmailLoginStrategy.java index f1a41d34..145c4277 100644 --- a/urbanLifelineServ/auth/src/main/java/org/xyzh/auth/strategy/impl/EmailLoginStrategy.java +++ b/urbanLifelineServ/auth/src/main/java/org/xyzh/auth/strategy/impl/EmailLoginStrategy.java @@ -77,7 +77,7 @@ public class EmailLoginStrategy implements LoginStrategy { // 从Redis获取验证码 String codeKey = "email:code:" + captchaId; - String storedValue = (String) redisService.get(codeKey); + String storedValue = redisService.get(codeKey, String.class); if (storedValue == null) { return false; diff --git a/urbanLifelineServ/auth/src/main/java/org/xyzh/auth/strategy/impl/PhoneLoginStrategy.java b/urbanLifelineServ/auth/src/main/java/org/xyzh/auth/strategy/impl/PhoneLoginStrategy.java index 58a7a3ee..e2046f41 100644 --- a/urbanLifelineServ/auth/src/main/java/org/xyzh/auth/strategy/impl/PhoneLoginStrategy.java +++ b/urbanLifelineServ/auth/src/main/java/org/xyzh/auth/strategy/impl/PhoneLoginStrategy.java @@ -78,7 +78,7 @@ public class PhoneLoginStrategy implements LoginStrategy { // 从Redis获取验证码 String codeKey = "sms:code:" + captchaId; - String storedValue = (String) redisService.get(codeKey); + String storedValue = redisService.get(codeKey, String.class); if (storedValue == null) { return false; diff --git a/urbanLifelineServ/common/common-auth/src/main/java/org/xyzh/common/auth/annotation/resovler/HttpLoginArgumentResolver.java b/urbanLifelineServ/common/common-auth/src/main/java/org/xyzh/common/auth/annotation/resovler/HttpLoginArgumentResolver.java index 1b94d02b..077140f5 100644 --- a/urbanLifelineServ/common/common-auth/src/main/java/org/xyzh/common/auth/annotation/resovler/HttpLoginArgumentResolver.java +++ b/urbanLifelineServ/common/common-auth/src/main/java/org/xyzh/common/auth/annotation/resovler/HttpLoginArgumentResolver.java @@ -78,7 +78,7 @@ public class HttpLoginArgumentResolver implements HandlerMethodArgumentResolver // 从Redis中获取LoginDomain String userId = tokenParser.getUserIdFromToken(token); String redisKey = REDIS_LOGIN_PREFIX + userId; - LoginDomain loginDomain = (LoginDomain) redisService.get(redisKey); + LoginDomain loginDomain = redisService.get(redisKey, LoginDomain.class); if (loginDomain == null) { if (httpLogin.required()) { diff --git a/urbanLifelineServ/common/common-auth/src/main/java/org/xyzh/common/auth/config/GatewayAuthConfig.java b/urbanLifelineServ/common/common-auth/src/main/java/org/xyzh/common/auth/config/GatewayAuthConfig.java index abd2c0da..eecfe516 100644 --- a/urbanLifelineServ/common/common-auth/src/main/java/org/xyzh/common/auth/config/GatewayAuthConfig.java +++ b/urbanLifelineServ/common/common-auth/src/main/java/org/xyzh/common/auth/config/GatewayAuthConfig.java @@ -22,7 +22,6 @@ import java.util.List; import org.springframework.beans.factory.annotation.Autowired; -import com.alibaba.fastjson2.JSON; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.xyzh.common.core.domain.LoginDomain; @@ -107,18 +106,8 @@ public class GatewayAuthConfig { if (StringUtils.hasText(authHeader) && authHeader.startsWith(BEARER_PREFIX)) { String token = authHeader.substring(BEARER_PREFIX.length()); String cacheKey = LOGIN_TOKEN_PREFIX + token; - Object obj = redisService.get(cacheKey); - - logger.info("Redis key: {}, obj type: {}", cacheKey, obj != null ? obj.getClass().getName() : "null"); - - LoginDomain login = null; - if (obj instanceof LoginDomain) { - login = (LoginDomain) obj; - } else if (obj instanceof String) { - // Redis 返回的是 JSON 字符串,需要反序列化 - login = JSON.parseObject((String) obj, LoginDomain.class); - logger.info("从 JSON 反序列化 LoginDomain"); - } + LoginDomain login = redisService.get(cacheKey, LoginDomain.class); + logger.info("Redis key: {}, login: {}", cacheKey, login != null ? "loaded" : "null"); if (login != null) { if (login.getUserPermissions() != null) { diff --git a/urbanLifelineServ/common/common-auth/src/main/java/org/xyzh/common/auth/utils/LoginUtil.java b/urbanLifelineServ/common/common-auth/src/main/java/org/xyzh/common/auth/utils/LoginUtil.java index 0efb9e7e..7b10a5dc 100644 --- a/urbanLifelineServ/common/common-auth/src/main/java/org/xyzh/common/auth/utils/LoginUtil.java +++ b/urbanLifelineServ/common/common-auth/src/main/java/org/xyzh/common/auth/utils/LoginUtil.java @@ -8,8 +8,6 @@ import org.springframework.web.context.request.ServletRequestAttributes; import org.xyzh.common.core.domain.LoginDomain; import org.xyzh.common.redis.service.RedisService; -import com.alibaba.fastjson2.JSON; - import jakarta.annotation.PostConstruct; import jakarta.servlet.http.HttpServletRequest; @@ -48,13 +46,7 @@ public class LoginUtil { try { String cacheKey = LOGIN_TOKEN_PREFIX + token; - Object obj = instance.redisService.get(cacheKey); - if (obj instanceof LoginDomain) { - return (LoginDomain) obj; - } else if (obj instanceof String) { - // Redis 返回的是 JSON 字符串,需要反序列化 - return JSON.parseObject((String) obj, LoginDomain.class); - } + return instance.redisService.get(cacheKey, LoginDomain.class); } catch (Exception e) { // 忽略异常 } diff --git a/urbanLifelineServ/common/common-redis/src/main/java/org/xyzh/common/redis/service/RedisService.java b/urbanLifelineServ/common/common-redis/src/main/java/org/xyzh/common/redis/service/RedisService.java index 99920880..a82d3a50 100644 --- a/urbanLifelineServ/common/common-redis/src/main/java/org/xyzh/common/redis/service/RedisService.java +++ b/urbanLifelineServ/common/common-redis/src/main/java/org/xyzh/common/redis/service/RedisService.java @@ -7,6 +7,8 @@ import java.util.*; import java.util.concurrent.TimeUnit; import org.springframework.stereotype.Component; +import com.alibaba.fastjson2.JSON; + /** * @description RedisService.java Redis工具服务类,封装常用Redis操作 * @filename RedisService.java @@ -56,6 +58,28 @@ public class RedisService { return redisTemplate.opsForValue().get(key); } + /** + * @description 获取key对应的value并反序列化为指定类型 + * @param key String 键 + * @param clazz Class 目标类型 + * @return T 反序列化后的对象 + * @author yslg + * @since 2025-12-19 + */ + public T get(String key, Class clazz) { + Object obj = redisTemplate.opsForValue().get(key); + if (obj == null) { + return null; + } + if (clazz.isInstance(obj)) { + return clazz.cast(obj); + } + if (obj instanceof String) { + return JSON.parseObject((String) obj, clazz); + } + return null; + } + /** * @description 删除key * @param key String 键 diff --git a/urbanLifelineServ/workcase/pom.xml b/urbanLifelineServ/workcase/pom.xml index d67898ee..91da1a56 100644 --- a/urbanLifelineServ/workcase/pom.xml +++ b/urbanLifelineServ/workcase/pom.xml @@ -22,6 +22,10 @@ org.xyzh.apis api-workcase + + org.xyzh.apis + api-system +