Commit b085dc80 authored by youxiaoji's avatar youxiaoji

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

parent 5fae7eda
......@@ -9,10 +9,12 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.context.annotation.Lazy;
import pangea.hiagent.agent.sse.UserSseService;
import pangea.hiagent.model.UserToken;
import pangea.hiagent.tool.impl.HisenseTripTool;
import pangea.hiagent.tool.impl.VisitorAppointmentTool;
import pangea.hiagent.web.service.AgentService;
import pangea.hiagent.web.service.InfoCollectorService;
import pangea.hiagent.web.service.UserTokenService;
import pangea.hiagent.workpanel.IWorkPanelDataCollector;
import pangea.hiagent.agent.service.ErrorHandlerService;
import pangea.hiagent.agent.service.TokenConsumerWithCompletion;
......@@ -65,6 +67,9 @@ public class DefaultReactExecutor implements ReactExecutor {
@Autowired
private UserSseService userSseService;
@Autowired
private UserTokenService userTokenService;
public DefaultReactExecutor(AgentToolManager agentToolManager) {
this.agentToolManager = agentToolManager;
}
......@@ -235,7 +240,8 @@ public class DefaultReactExecutor implements ReactExecutor {
// 构建Prompt,包含历史对话记录
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();
// 订阅流式响应
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;
import pangea.hiagent.common.utils.HybridUniqueLongGenerator;
import pangea.hiagent.common.utils.InputCodeGenerator;
import pangea.hiagent.model.Agent;
import pangea.hiagent.model.UserToken;
import pangea.hiagent.web.service.AgentService;
import pangea.hiagent.web.service.InfoCollectorService;
......@@ -49,7 +50,6 @@ public class VisitorAppointmentTool {
// 共享的浏览器上下文,用于保持登录状态
private BrowserContext sharedContext;
// 上次登录时间
private long lastLoginTime = 0;
......@@ -57,15 +57,16 @@ public class VisitorAppointmentTool {
private InfoCollectorService infoCollectorService;
private UserSseService userSseService;
// 登录状态有效期(毫秒),设置为30分钟
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.infoCollectorService = infoCollectorService;
this.ssoToken = "d10bc61aa4e00dcc6f08de64ca42012814fdbcee9b88aa977f7fb07d3a4018f4";
this.ldapToken = "AAECAzY5NDRBNTQ1Njk0NTRFMDV5b3V4aWFvamlaLv+jUGNEEORN24GLIC3OlqcCdw==";
this.iparkToken = "208a55e4-59bc-400b-971f-a4ed3a5379ca";
this.iparkToken = userToken.getTokenValue();
this.userSseService = userSseService;
}
......@@ -87,7 +88,7 @@ public class VisitorAppointmentTool {
ldapTokenCookie.setDomain(".hisense.com");
ldapTokenCookie.setPath("/");
Cookie tripCookie = new Cookie("jwtToken", iparkToken);
tripCookie.setDomain("trip.hisense.com");
tripCookie.setDomain("vrms-proxy.hisense.com");
tripCookie.setPath("/");
// String userName= SecurityContextHolder.getContext().getAuthentication().getName();
......@@ -127,7 +128,7 @@ public class VisitorAppointmentTool {
}
}
@Tool(description = "存储用户提交的访客预约申请信息", returnDirect = true)
@Tool(description = "存储用户提交的访客预约申请信息")
public String applyInfoSave(@ToolParam(required = true) JSONObject infos) {
log.info("applyInfoSave(infos={})", infos);
infos.keySet().forEach(key -> {
......@@ -171,7 +172,7 @@ public class VisitorAppointmentTool {
log.info("正在访问业务系统页面: {}", destUrl);
String faviconUrl = "https://vrms-proxy.hisense.com/favicon.ico";
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));
// 检查是否重定向到了SSO登录页面
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