Commit b085dc80 authored by youxiaoji's avatar youxiaoji

* [用户token的获取方式调整为从数据库获取]

parent 5fae7eda
...@@ -9,10 +9,12 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -9,10 +9,12 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import pangea.hiagent.agent.sse.UserSseService; import pangea.hiagent.agent.sse.UserSseService;
import pangea.hiagent.model.UserToken;
import pangea.hiagent.tool.impl.HisenseTripTool; import pangea.hiagent.tool.impl.HisenseTripTool;
import pangea.hiagent.tool.impl.VisitorAppointmentTool; import pangea.hiagent.tool.impl.VisitorAppointmentTool;
import pangea.hiagent.web.service.AgentService; import pangea.hiagent.web.service.AgentService;
import pangea.hiagent.web.service.InfoCollectorService; import pangea.hiagent.web.service.InfoCollectorService;
import pangea.hiagent.web.service.UserTokenService;
import pangea.hiagent.workpanel.IWorkPanelDataCollector; import pangea.hiagent.workpanel.IWorkPanelDataCollector;
import pangea.hiagent.agent.service.ErrorHandlerService; import pangea.hiagent.agent.service.ErrorHandlerService;
import pangea.hiagent.agent.service.TokenConsumerWithCompletion; import pangea.hiagent.agent.service.TokenConsumerWithCompletion;
...@@ -65,6 +67,9 @@ public class DefaultReactExecutor implements ReactExecutor { ...@@ -65,6 +67,9 @@ public class DefaultReactExecutor implements ReactExecutor {
@Autowired @Autowired
private UserSseService userSseService; private UserSseService userSseService;
@Autowired
private UserTokenService userTokenService;
public DefaultReactExecutor(AgentToolManager agentToolManager) { public DefaultReactExecutor(AgentToolManager agentToolManager) {
this.agentToolManager = agentToolManager; this.agentToolManager = agentToolManager;
} }
...@@ -235,7 +240,8 @@ public class DefaultReactExecutor implements ReactExecutor { ...@@ -235,7 +240,8 @@ public class DefaultReactExecutor implements ReactExecutor {
// 构建Prompt,包含历史对话记录 // 构建Prompt,包含历史对话记录
Prompt prompt = buildPromptWithHistory(DEFAULT_SYSTEM_PROMPT, userInput, agent); Prompt prompt = buildPromptWithHistory(DEFAULT_SYSTEM_PROMPT, userInput, agent);
VisitorAppointmentTool hisenseTripTool = new VisitorAppointmentTool(agentService,infoCollectorService,userSseService); UserToken userToken = userTokenService.getUserToken("admin","pangea");
VisitorAppointmentTool hisenseTripTool = new VisitorAppointmentTool(userToken,agentService,infoCollectorService,userSseService);
hisenseTripTool.initialize(); hisenseTripTool.initialize();
// 订阅流式响应 // 订阅流式响应
chatClient.prompt(prompt) chatClient.prompt(prompt)
......
package pangea.hiagent.model;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName("sys_user_token")
public class UserToken extends BaseEntity{
private static final long serialVersionUID = 1L;
/**
* 用户名
*/
private String username;
private String userId;
private String tokenType;
private String tokenValue;
}
...@@ -19,6 +19,7 @@ import pangea.hiagent.common.utils.Contants; ...@@ -19,6 +19,7 @@ import pangea.hiagent.common.utils.Contants;
import pangea.hiagent.common.utils.HybridUniqueLongGenerator; import pangea.hiagent.common.utils.HybridUniqueLongGenerator;
import pangea.hiagent.common.utils.InputCodeGenerator; import pangea.hiagent.common.utils.InputCodeGenerator;
import pangea.hiagent.model.Agent; import pangea.hiagent.model.Agent;
import pangea.hiagent.model.UserToken;
import pangea.hiagent.web.service.AgentService; import pangea.hiagent.web.service.AgentService;
import pangea.hiagent.web.service.InfoCollectorService; import pangea.hiagent.web.service.InfoCollectorService;
...@@ -49,7 +50,6 @@ public class VisitorAppointmentTool { ...@@ -49,7 +50,6 @@ public class VisitorAppointmentTool {
// 共享的浏览器上下文,用于保持登录状态 // 共享的浏览器上下文,用于保持登录状态
private BrowserContext sharedContext; private BrowserContext sharedContext;
// 上次登录时间 // 上次登录时间
private long lastLoginTime = 0; private long lastLoginTime = 0;
...@@ -57,15 +57,16 @@ public class VisitorAppointmentTool { ...@@ -57,15 +57,16 @@ public class VisitorAppointmentTool {
private InfoCollectorService infoCollectorService; private InfoCollectorService infoCollectorService;
private UserSseService userSseService; private UserSseService userSseService;
// 登录状态有效期(毫秒),设置为30分钟 // 登录状态有效期(毫秒),设置为30分钟
private static final long LOGIN_VALIDITY_PERIOD = 30 * 60 * 1000; private static final long LOGIN_VALIDITY_PERIOD = 30 * 60 * 1000;
public VisitorAppointmentTool(AgentService agentService, InfoCollectorService infoCollectorService, UserSseService userSseService) { public VisitorAppointmentTool(UserToken userToken,AgentService agentService, InfoCollectorService infoCollectorService, UserSseService userSseService) {
this.agentService = agentService; this.agentService = agentService;
this.infoCollectorService = infoCollectorService; this.infoCollectorService = infoCollectorService;
this.ssoToken = "d10bc61aa4e00dcc6f08de64ca42012814fdbcee9b88aa977f7fb07d3a4018f4"; this.ssoToken = "d10bc61aa4e00dcc6f08de64ca42012814fdbcee9b88aa977f7fb07d3a4018f4";
this.ldapToken = "AAECAzY5NDRBNTQ1Njk0NTRFMDV5b3V4aWFvamlaLv+jUGNEEORN24GLIC3OlqcCdw=="; this.ldapToken = "AAECAzY5NDRBNTQ1Njk0NTRFMDV5b3V4aWFvamlaLv+jUGNEEORN24GLIC3OlqcCdw==";
this.iparkToken = "208a55e4-59bc-400b-971f-a4ed3a5379ca"; this.iparkToken = userToken.getTokenValue();
this.userSseService = userSseService; this.userSseService = userSseService;
} }
...@@ -87,7 +88,7 @@ public class VisitorAppointmentTool { ...@@ -87,7 +88,7 @@ public class VisitorAppointmentTool {
ldapTokenCookie.setDomain(".hisense.com"); ldapTokenCookie.setDomain(".hisense.com");
ldapTokenCookie.setPath("/"); ldapTokenCookie.setPath("/");
Cookie tripCookie = new Cookie("jwtToken", iparkToken); Cookie tripCookie = new Cookie("jwtToken", iparkToken);
tripCookie.setDomain("trip.hisense.com"); tripCookie.setDomain("vrms-proxy.hisense.com");
tripCookie.setPath("/"); tripCookie.setPath("/");
// String userName= SecurityContextHolder.getContext().getAuthentication().getName(); // String userName= SecurityContextHolder.getContext().getAuthentication().getName();
...@@ -127,7 +128,7 @@ public class VisitorAppointmentTool { ...@@ -127,7 +128,7 @@ public class VisitorAppointmentTool {
} }
} }
@Tool(description = "存储用户提交的访客预约申请信息", returnDirect = true) @Tool(description = "存储用户提交的访客预约申请信息")
public String applyInfoSave(@ToolParam(required = true) JSONObject infos) { public String applyInfoSave(@ToolParam(required = true) JSONObject infos) {
log.info("applyInfoSave(infos={})", infos); log.info("applyInfoSave(infos={})", infos);
infos.keySet().forEach(key -> { infos.keySet().forEach(key -> {
...@@ -171,7 +172,7 @@ public class VisitorAppointmentTool { ...@@ -171,7 +172,7 @@ public class VisitorAppointmentTool {
log.info("正在访问业务系统页面: {}", destUrl); log.info("正在访问业务系统页面: {}", destUrl);
String faviconUrl = "https://vrms-proxy.hisense.com/favicon.ico"; String faviconUrl = "https://vrms-proxy.hisense.com/favicon.ico";
page.navigate(faviconUrl); page.navigate(faviconUrl);
page.evaluate("() => sessionStorage.setItem('Access-Token', '208a55e4-59bc-400b-971f-a4ed3a5379ca')"); page.evaluate("() => sessionStorage.setItem('Access-Token', '"+iparkToken+"')");
page.navigate(destUrl, new Page.NavigateOptions().setWaitUntil(WaitUntilState.NETWORKIDLE)); page.navigate(destUrl, new Page.NavigateOptions().setWaitUntil(WaitUntilState.NETWORKIDLE));
// 检查是否重定向到了SSO登录页面 // 检查是否重定向到了SSO登录页面
String currentUrl = page.url(); String currentUrl = page.url();
......
package pangea.hiagent.web.repository;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import pangea.hiagent.model.Tool;
import pangea.hiagent.model.User;
import pangea.hiagent.model.UserToken;
import java.util.List;
@Mapper
public interface UserTokenRepository extends BaseMapper<User> {
@Select("SELECT * FROM sys_user_token WHERE user_name = #{userName} AND token_type=#{tokenType} ORDER BY created_at DESC")
UserToken getTokenByUserNameAndTokenType(String userName, String tokenType);
}
package pangea.hiagent.web.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import pangea.hiagent.model.UserToken;
import pangea.hiagent.web.repository.UserTokenRepository;
@Service
public class UserTokenService {
@Autowired
private UserTokenRepository userTokenRepository;
public UserToken getUserToken(String userName,String tokenType) {
return userTokenRepository.getTokenByUserNameAndTokenType(userName,tokenType);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment