package com.zteits.park.job.datahub; import com.alibaba.fastjson.JSONObject; import com.clouds.common.constants.RedisKeyEnum; import com.clouds.common.redis.RedisCacheFactory; import com.jtjt.upload.client.common.TokenUtil; import com.jtjt.upload.client.vo.ClientDetails; import com.jtjt.upload.client.vo.TokenInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** * 获取数据归集平台token * @since 2025-08-17 */ @Component public class TokenService { @Autowired private HubConfig hubConfig; private static final Logger logger = LoggerFactory.getLogger(TokenService.class); private static final String TOKEN_KEY = "data_hub_token:"; /** * 获取token * @param forceRefresh 是否强制刷新 * @return */ public String getToken(boolean forceRefresh) { //获取token if (forceRefresh || RedisCacheFactory.getRedisCacheUtil().get(TOKEN_KEY) == null) { String urlPrefix = hubConfig.getUrlPrefix(); ClientDetails clientDetails = new ClientDetails(); clientDetails.setClient_id(hubConfig.getClientId()); clientDetails.setClient_secret(hubConfig.getClientSecret()); clientDetails.setScope(hubConfig.getScope()); clientDetails.setGrant_type(hubConfig.getGrantType()); logger.info("查询token:{},{}",urlPrefix, JSONObject.toJSONString(clientDetails)); TokenInfo token = TokenUtil.getSingleInstance().getTokenInfo(urlPrefix, clientDetails); logger.info("查询token结果:{}",JSONObject.toJSONString(token)); //放入Redis RedisCacheFactory.getRedisCacheUtil().put(TOKEN_KEY, token.getAccess_token(),Long.parseLong(token.getExpires_in()) - 5); return token.getAccess_token(); } return RedisCacheFactory.getRedisCacheUtil().get(TOKEN_KEY); } }