package com.uas.eis.sdk; import com.netease.qiye.qiyeopenplatform.common.dto.login.AppLoginResp; import com.netease.qiye.qiyeopenplatform.common.dto.login.SsoLoginResp; import com.netease.qiye.qiyeopenplatform.sdk.QiyeOpenPlatSDK; import com.netease.qiye.qiyeopenplatform.sdk.QiyeOpenPlatSDKConfig; import com.netease.qiye.qiyeopenplatform.sdk.dto.R; import com.uas.eis.core.SSOTokenManager; import com.uas.eis.core.config.NetEasyConfig; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import javax.annotation.Resource; @Component public class NetEasySDK { private final Logger logger = LoggerFactory.getLogger(getClass()); @Resource private NetEasyConfig netEasyConfig; private QiyeOpenPlatSDK sdkInstance; private final String authSSOTokenKey = "NETEASY_SSO_TOKEN" ; public void initSDK() { QiyeOpenPlatSDKConfig qiyeOpenPlatSDKConfig = QiyeOpenPlatSDKConfig.builder() //应用ID .appId(netEasyConfig.getAppId()) //企业OpenID .orgOpenId(netEasyConfig.getCropId()) //服务地址信息 .urlPrefix(netEasyConfig.getServerUrl()) .build(); //创建SDK实例 this.sdkInstance= new QiyeOpenPlatSDK("dev", qiyeOpenPlatSDKConfig); // 查看文档,应用获取token R appLoginR = sdkInstance.appLogin(netEasyConfig.getAuthCode()); sdkInstance.getQiyeOpenPlatSDKConfig().setupToken((AppLoginResp) appLoginR.getDataBean(AppLoginResp.class)); } public QiyeOpenPlatSDK getSDKInstance(){ if (sdkInstance == null) { initSDK(); } return sdkInstance; } public String getSsoAuthToken () { String ssoAuthToken = SSOTokenManager.getSsoAuthToken(authSSOTokenKey); logger.info("获取缓存ssoAuthToken,key:{}",ssoAuthToken); if (ssoAuthToken == null) { QiyeOpenPlatSDKConfig qiyeOpenPlatSDKConfig = QiyeOpenPlatSDKConfig.builder() //应用ID .appId(netEasyConfig.getAppId()) //企业OpenID .orgOpenId(netEasyConfig.getCropId()) //服务地址信息 .urlPrefix(netEasyConfig.getServerUrl()) .build(); //创建SDK实例 this.sdkInstance= new QiyeOpenPlatSDK("dev", qiyeOpenPlatSDKConfig); // 查看文档,应用获取token R ssoLoginRespR = sdkInstance.ssoAuthToken(netEasyConfig.getAuthCode()); SsoLoginResp ssoLoginResp = ssoLoginRespR.getDataBean(SsoLoginResp.class); SSOTokenManager.setSsoAuthToken(authSSOTokenKey, ssoLoginResp.getSsoAuthToken(), ssoLoginResp.getSsoAuthTokenExpiredTime().getTime()); return ssoLoginResp.getSsoAuthToken(); } else { logger.info("从缓存中获取ssoAuthToken:token{}",ssoAuthToken); return ssoAuthToken; } } }