package com.yuanchu.mom.util;
|
|
import cn.hutool.http.HttpRequest;
|
import cn.hutool.http.HttpResponse;
|
import com.alibaba.fastjson.JSON;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.type.TypeReference;
|
import com.fasterxml.jackson.databind.JsonNode;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.yuanchu.mom.pojo.AuthApi;
|
import com.yuanchu.mom.pojo.Company;
|
import com.yuanchu.mom.pojo.Post;
|
import com.yuanchu.mom.pojo.User;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.stereotype.Component;
|
|
import javax.annotation.Resource;
|
import java.time.Duration;
|
import java.util.List;
|
import java.util.concurrent.TimeUnit;
|
|
@Component
|
public class HeaderToken {
|
|
@Resource
|
private RedisTemplate redisTemplate;
|
|
public static void main(String[] args) {
|
HttpRequest request = HttpRequest.post("https://ztt-sso.asuncloud.net/oauth2/token")
|
.header("Content-Type", "application/x-www-form-urlencoded")
|
.form("grant_type", "client_credentials")
|
.form("client_id", "8b2f2c7e-2ab9-4718-8193-c0c636dceba8")
|
.form("client_secret", "db59b70d28ab1865aafe4008f59d4760");
|
|
HttpResponse response = request.execute();
|
|
System.out.println(response.body());
|
}
|
|
public String fetchNewAccessToken() {
|
HttpRequest request = HttpRequest.post("https://ztt-sso.asuncloud.net/oauth2/token")
|
.header("Content-Type", "application/x-www-form-urlencoded")
|
.form("grant_type", "client_credentials")
|
.form("client_id", "8b2f2c7e-2ab9-4718-8193-c0c636dceba8")
|
.form("client_secret", "db59b70d28ab1865aafe4008f59d4760");
|
HttpResponse response = request.execute();
|
|
System.out.println(response.body());
|
ObjectMapper objectMapper = new ObjectMapper();
|
JsonNode jsonNode = null;
|
try {
|
jsonNode = objectMapper.readTree(response.body());
|
String accessToken = jsonNode.get("access_token").asText();
|
redisTemplate.opsForValue().set("access_token",accessToken);
|
redisTemplate.expire("access_token", dataTime("access_token"), TimeUnit.SECONDS);
|
} catch (JsonProcessingException e) {
|
e.printStackTrace();
|
}
|
return null;
|
}
|
private String accessToken ;
|
|
//判断是否过期
|
public String getAccessToken() {
|
accessToken=(String) redisTemplate.opsForValue().get("access_token");
|
if (accessToken == null) {
|
accessToken = fetchNewAccessToken();
|
}
|
return accessToken;
|
}
|
//判断 token 是否已存在
|
public String getToken(String token) {
|
String o = redisTemplate.opsForValue().get(token).toString();
|
if (o != null && !o.isEmpty()) {
|
return o;
|
}else{
|
redisTemplate.expire(token,dataTime("access_token"),TimeUnit.SECONDS);
|
String tokens = redisTemplate.opsForValue().get(token).toString();
|
return tokens;
|
}
|
// 获取 token
|
// accessToken = fetchNewAccessToken();
|
// return accessToken;
|
}
|
|
//获取token过期时间
|
public Long dataTime(String token){
|
Long access_token = redisTemplate.getExpire(token);
|
if(access_token != null && access_token >60) {
|
redisTemplate.expire(token, access_token - 60 ,TimeUnit.SECONDS);
|
return access_token - 60;
|
}//就直接调用
|
return null;
|
}
|
|
|
|
//调用
|
public List<Company> companyUrl() {
|
String accessToken = getAccessToken();
|
String getToken= getToken(accessToken);
|
String apiUrl =AuthApi.companies; // 替换为实际的API端点URL
|
HttpRequest request = HttpRequest.get(apiUrl)
|
.header("Authorization", "Bearer " + accessToken);
|
HttpResponse response = request.execute();
|
ObjectMapper objectMapper = new ObjectMapper();
|
String body = response.body();
|
List<Company> companies = null;
|
try {
|
companies = objectMapper.readValue(body, new TypeReference<List<Company>>(){});
|
} catch (JsonProcessingException e) {
|
e.printStackTrace();
|
}
|
return companies;
|
}
|
|
public List<Post> postUrl(String companyId) {
|
String accessToken = getAccessToken();
|
String token = getToken(accessToken);
|
String apiUrl =AuthApi.post+companyId; // 替换为实际的API端点URL
|
HttpRequest request = HttpRequest.get(apiUrl)
|
.header("Authorization", "Bearer " + accessToken);
|
HttpResponse response = request.execute();
|
ObjectMapper objectMapper = new ObjectMapper();
|
String body = response.body();
|
List<Post> posts = null;
|
try {
|
posts=objectMapper.readValue(body, new TypeReference<List<Post>>() {});
|
} catch (JsonProcessingException e) {
|
e.printStackTrace();
|
}
|
return posts;
|
}
|
|
public List<User> userUrl(String companyId) {
|
String accessToken = getAccessToken();
|
String token = getToken(accessToken);
|
String apiUrl =AuthApi.simple+companyId; // 替换为实际的API端点URL
|
HttpRequest request = HttpRequest.get(apiUrl)
|
.header("Authorization", "Bearer " + accessToken)
|
.header("Content-Type", "application/form-data");
|
HttpResponse response = request.execute();
|
ObjectMapper objectMapper = new ObjectMapper();
|
String body = response.body();
|
List<User> user=null;
|
try {
|
user= objectMapper.readValue(body,new TypeReference<List<User>>(){});
|
} catch (JsonProcessingException e) {
|
e.printStackTrace();
|
}
|
return user;
|
}
|
}
|