You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

82 lines
3.6 KiB
Java

2 years ago
package com.engine.custom.yunxuetang.util;
import com.alibaba.fastjson.JSONObject;
import com.engine.custom.yunxuetang.bean.DeptRequestBody;
import com.engine.custom.yunxuetang.bean.JobRequestBody;
import com.engine.custom.yunxuetang.bean.JobTypeRequestBody;
import com.engine.custom.yunxuetang.bean.ResponseData;
import okhttp3.OkHttpClient;
public class SyncUtil {
private static OkHttpClient client =new OkHttpClient();
public static final String tokenUrl = "https://openapi-adel.yunxuetang.cn/token";
public static final String appId = "9eqdtfi6t2f";
public static final String appSecret = "OWZhZWM0MGVjZWFj";
public static final String syncDeptsUrl = "https://openapi-adel.yunxuetang.cn/v1/udp/public/depts/sync";
public static final String syncDelDeptsUrl = "https://openapi-adel.yunxuetang.cn/v1/udp/public/depts/${thirdId}/del";
public static final String syncJobUrl = "https://openapi-adel.yunxuetang.cn/v1/udp/public/positions/sync";
public static final String syncJobTypeUrl = "https://openapi-adel.yunxuetang.cn/v1/udp/public/positioncatalogs/sync";
private String cachedToken;
private long tokenExpiryTime;
public ResponseData syncDept(DeptRequestBody deptRequestBody) {
// String accessToken = HttpClientUtil.getAccessToken(tokenUrl, appId, appSecret);
// System.out.println(accessToken);
//同步部门
// DeptRequestBody deptRequestBody = new DeptRequestBody();
// deptRequestBody.setName("研发一部子部门1");
// deptRequestBody.setThirdId("2");
// deptRequestBody.setCode("");
// deptRequestBody.setParentThirdId("1");
String bodyStr = JSONObject.toJSONString(deptRequestBody);
fetchToken();
String responseData = HttpClientUtil.doPost(syncDeptsUrl, bodyStr, cachedToken);
ResponseData jsonObject = JSONObject.parseObject(responseData,ResponseData.class);
System.out.println(jsonObject);
return jsonObject;
}
public ResponseData syncDelDept( String id) {
fetchToken();
String responseData = HttpClientUtil.doPost(syncDelDeptsUrl.replace("${thirdId}",id), "", cachedToken);
ResponseData jsonObject = JSONObject.parseObject(responseData,ResponseData.class);
System.out.println(jsonObject);
return jsonObject;
}
public void fetchToken() {
// 如果缓存中的令牌为空或即将过期,重新获取
if (cachedToken == null || System.currentTimeMillis() > tokenExpiryTime - (5 * 60 * 1000)) {
cachedToken = HttpClientUtil.getAccessToken(tokenUrl, appId, appSecret);
// 设置令牌的过期时间这里是30分钟后
tokenExpiryTime = System.currentTimeMillis() + (30 * 60 * 1000);
}
}
public ResponseData syncJobType(JobTypeRequestBody job) {
fetchToken();
String bodyStr = JSONObject.toJSONString(job);
fetchToken();
System.out.println(bodyStr);
String responseData = HttpClientUtil.doPost(syncJobTypeUrl, bodyStr, cachedToken);
ResponseData jsonObject = JSONObject.parseObject(responseData,ResponseData.class);
System.out.println(jsonObject);
return jsonObject;
}
public ResponseData syncJobs(JobRequestBody job) {
fetchToken();
String bodyStr = JSONObject.toJSONString(job);
fetchToken();
System.out.println(bodyStr);
String responseData = HttpClientUtil.doPost(syncJobUrl, bodyStr, cachedToken);
ResponseData jsonObject = JSONObject.parseObject(responseData,ResponseData.class);
System.out.println(jsonObject);
return jsonObject;
}
}