package com.ruixuan.isc.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.kuaishou.merchant.open.api.KsMerchantApiException; import com.kuaishou.merchant.open.api.client.oauth.OauthAccessTokenKsClient; import com.kuaishou.merchant.open.api.client.oauth.OauthCredentialKsClient; import com.kuaishou.merchant.open.api.response.oauth.KsAccessTokenResponse; import com.kuaishou.merchant.open.api.response.oauth.KsCredentialResponse; import com.ruixuan.common.utils.Check; import com.ruixuan.common.utils.RedisUtil; import com.ruixuan.isc.entity.KuaishouAccessToken; import com.ruixuan.isc.mapper.AccessTokenMapper; import com.ruixuan.isc.service.IAccessTokenService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Slf4j @Service public class AccessTokenServiceImpl implements IAccessTokenService { @Autowired private AccessTokenMapper accessTokenMapper; @Override public String getAccessToken() { return accessTokenMapper.getAccessToken(); } @Override public void refreshAccessToken() { List tokens = accessTokenMapper.getTokenInfos(); if (!Check.isNull(tokens)) { for (KuaishouAccessToken token : tokens) { String appKey = token.getAppKey(); String appSecret = token.getAppSecret(); String refreshToken = token.getRefreshToken(); OauthAccessTokenKsClient oauthAccessTokenKsClient = new OauthAccessTokenKsClient(appKey, appSecret); try { KsAccessTokenResponse response = oauthAccessTokenKsClient.refreshAccessToken(refreshToken); JSONObject jsonObject = JSONObject.parseObject(JSON.toJSONString(response)); log.info("刷新token,id:{},返回结果:{}",token.getId(),jsonObject); if(jsonObject.getInteger("result") == 1){ KuaishouAccessToken updateToken = new KuaishouAccessToken(); updateToken.setId(token.getId()); updateToken.setAccessToken(jsonObject.getString("accessToken")); updateToken.setRefreshToken(jsonObject.getString("refreshToken")); accessTokenMapper.update(updateToken); } } catch (KsMerchantApiException e) { e.printStackTrace(); } } } } }