244 lines
8.1 KiB
Java
244 lines
8.1 KiB
Java
package com.management.controller;
|
||
|
||
import com.alibaba.fastjson.JSONObject;
|
||
import com.management.constant.ERPURLConstant;
|
||
import com.management.utils.CaffeineCacheUtil;
|
||
import lombok.extern.slf4j.Slf4j;
|
||
import org.springframework.web.bind.annotation.RequestMapping;
|
||
import org.springframework.web.bind.annotation.RestController;
|
||
import org.springframework.web.client.RestClientException;
|
||
import org.springframework.web.client.RestTemplate;
|
||
|
||
import java.util.LinkedHashMap;
|
||
|
||
/**
|
||
* 金蝶APP授权码获取
|
||
*
|
||
* @param
|
||
* @return null
|
||
* @Author weiloong_zhang
|
||
*/
|
||
@RestController
|
||
@RequestMapping
|
||
@Slf4j
|
||
public class KDTokenController {
|
||
|
||
private RestTemplate restTemplate = new RestTemplate();
|
||
|
||
/**
|
||
* 测试入口
|
||
*
|
||
* @param args
|
||
* @return void
|
||
* @Author weiloong_zhang
|
||
*/
|
||
public static void main(String[] args) {
|
||
new KDTokenController().getKDAppToken();
|
||
//new KDTokenController().getKDAccessToken();
|
||
}
|
||
|
||
/**
|
||
* 金蝶APP授权码获取
|
||
*
|
||
* @return void
|
||
* @Author weiloong_zhang
|
||
*/
|
||
public String getKDAppToken() {
|
||
log.info("开始获取金蝶的AppToken");
|
||
|
||
//开始封装
|
||
//接口地址
|
||
String appTokenUrl = "https://lxr2.zhydsp.cn:40448/ierp/api/getAppToken.do";
|
||
//请求参数
|
||
LinkedHashMap appTokenParams = new LinkedHashMap<>();
|
||
appTokenParams.put("appId", "erpapi");
|
||
appTokenParams.put("appSecret", "ZHYkdERPapi@2025");
|
||
appTokenParams.put("tenantid", "zyierp");
|
||
appTokenParams.put("accountId", "2095350818281620480");
|
||
|
||
//开始发起请求
|
||
String appTokenRes = "";
|
||
|
||
try {
|
||
appTokenRes = restTemplate.postForObject(appTokenUrl, appTokenParams, String.class);
|
||
} catch (RestClientException e) {
|
||
e.printStackTrace();
|
||
}
|
||
|
||
//转换为JSONObject
|
||
JSONObject appTokenJSON = JSONObject.parseObject(appTokenRes);
|
||
|
||
if (!"success".equals(appTokenJSON.getString("state")) || appTokenJSON.getJSONObject("data") == null) {
|
||
log.error("获取金蝶的AppToken失败,{}", appTokenRes);
|
||
return "";
|
||
}
|
||
|
||
//获取apptoken成功
|
||
String appToken = appTokenJSON.getJSONObject("data").getString("app_token");
|
||
|
||
log.info("获取金蝶的AppToken成功,{}", appToken);
|
||
|
||
return appToken;
|
||
}
|
||
|
||
/**
|
||
* 金蝶access_token获取
|
||
*
|
||
* @return java.lang.String
|
||
* @Author weiloong_zhang
|
||
*/
|
||
public String getKDAccessToken() {
|
||
log.info("开始获取金蝶accessToken");
|
||
|
||
//用来接收token的字符串
|
||
String accessToken = "";
|
||
|
||
//判断咖啡因中是否存在accessToken
|
||
if (CaffeineCacheUtil.get("kd_access_token") != null && !"".equals(CaffeineCacheUtil.get("kd_access_token"))) {
|
||
log.info("获取到缓存中的accessToken,{}", accessToken);
|
||
accessToken = CaffeineCacheUtil.get("kd_access_token").toString();
|
||
return accessToken;
|
||
}
|
||
|
||
//不存在,将执行获取accessToken的逻辑
|
||
//开始封装参数
|
||
//URL
|
||
String accessTokenUrl = "https://lxr2.zhydsp.cn:40448/ierp/api/login.do";
|
||
|
||
//请求参数
|
||
LinkedHashMap accessTokenParams = new LinkedHashMap<>();
|
||
accessTokenParams.put("user", "19819780536");
|
||
accessTokenParams.put("usertype", "Mobile");
|
||
accessTokenParams.put("apptoken", getKDAppToken());
|
||
accessTokenParams.put("tenantid", "zyierp");
|
||
accessTokenParams.put("accountId", "2095350818281620480");
|
||
accessTokenParams.put("language", "zh_CN");
|
||
|
||
//开始向金蝶发起请求
|
||
String accessTokenRes = "";
|
||
|
||
try {
|
||
accessTokenRes = restTemplate.postForObject(accessTokenUrl, accessTokenParams, String.class);
|
||
} catch (RestClientException e) {
|
||
e.printStackTrace();
|
||
}
|
||
|
||
JSONObject accessTokenJSON = JSONObject.parseObject(accessTokenRes);
|
||
|
||
if (!"success".equals(accessTokenJSON.getString("state")) || accessTokenJSON.getJSONObject("data") == null) {
|
||
log.error("获取金蝶的accessToken失败,{}", accessTokenRes);
|
||
return "";
|
||
}
|
||
|
||
log.info("获取金蝶的accessToken成功,{}", accessTokenJSON.getJSONObject("data").getString("access_token"));
|
||
accessToken = accessTokenJSON.getJSONObject("data").getString("access_token");
|
||
|
||
//存放到咖啡因之中
|
||
CaffeineCacheUtil.put("kd_access_token", accessToken);
|
||
|
||
return accessToken;
|
||
}
|
||
|
||
|
||
/**
|
||
* 金蝶测试系统App授权码获取
|
||
* @return java.lang.String
|
||
* @Author weiloong_zhang
|
||
*/
|
||
public String getKDAppTokenTest() {
|
||
log.info("开始获取金蝶的AppToken");
|
||
|
||
//开始封装
|
||
//接口地址
|
||
String appTokenUrl = ERPURLConstant.ERP_URL + "/ierp/api/getAppToken.do";
|
||
//请求参数
|
||
LinkedHashMap appTokenParams = new LinkedHashMap<>();
|
||
appTokenParams.put("appId", "FXXKCRM");
|
||
appTokenParams.put("appSecret", "FXXKCRM20251234a!");
|
||
appTokenParams.put("tenantid", "zyierp");
|
||
appTokenParams.put("accountId", ERPURLConstant.ACCOUNT_ID);
|
||
|
||
//开始发起请求
|
||
String appTokenRes = "";
|
||
|
||
try {
|
||
appTokenRes = restTemplate.postForObject(appTokenUrl, appTokenParams, String.class);
|
||
} catch (RestClientException e) {
|
||
e.printStackTrace();
|
||
}
|
||
|
||
//转换为JSONObject
|
||
JSONObject appTokenJSON = JSONObject.parseObject(appTokenRes);
|
||
|
||
if (!"success".equals(appTokenJSON.getString("state")) || appTokenJSON.getJSONObject("data") == null) {
|
||
log.error("获取金蝶的AppToken失败,{}", appTokenRes);
|
||
return "";
|
||
}
|
||
|
||
//获取apptoken成功
|
||
String appToken = appTokenJSON.getJSONObject("data").getString("app_token");
|
||
|
||
log.info("获取金蝶的AppToken成功,{}", appToken);
|
||
|
||
return appToken;
|
||
}
|
||
|
||
/**
|
||
* 金蝶a测试access_token获取
|
||
*
|
||
* @return java.lang.String
|
||
* @Author weiloong_zhang
|
||
*/
|
||
public String getKDAccessTokenTest() {
|
||
log.info("开始获取金蝶accessToken");
|
||
|
||
//用来接收token的字符串
|
||
String accessToken = "";
|
||
|
||
//判断咖啡因中是否存在accessToken
|
||
if (CaffeineCacheUtil.get("kd_access_token") != null && !"".equals(CaffeineCacheUtil.get("kd_access_token"))) {
|
||
log.info("获取到缓存中的accessToken,{}", accessToken);
|
||
accessToken = CaffeineCacheUtil.get("kd_access_token").toString();
|
||
return accessToken;
|
||
}
|
||
|
||
//不存在,将执行获取accessToken的逻辑
|
||
//开始封装参数
|
||
//URL
|
||
String accessTokenUrl = ERPURLConstant.ERP_URL + "/ierp/api/login.do";
|
||
|
||
//请求参数
|
||
LinkedHashMap accessTokenParams = new LinkedHashMap<>();
|
||
accessTokenParams.put("user", "19819780536");
|
||
accessTokenParams.put("usertype", "Mobile");
|
||
accessTokenParams.put("apptoken", getKDAppTokenTest());
|
||
accessTokenParams.put("tenantid", "zyierp");
|
||
accessTokenParams.put("accountId", ERPURLConstant.ACCOUNT_ID);
|
||
accessTokenParams.put("language", "zh_CN");
|
||
|
||
//开始向金蝶发起请求
|
||
String accessTokenRes = "";
|
||
|
||
try {
|
||
accessTokenRes = restTemplate.postForObject(accessTokenUrl, accessTokenParams, String.class);
|
||
} catch (RestClientException e) {
|
||
e.printStackTrace();
|
||
}
|
||
|
||
JSONObject accessTokenJSON = JSONObject.parseObject(accessTokenRes);
|
||
|
||
if (!"success".equals(accessTokenJSON.getString("state")) || accessTokenJSON.getJSONObject("data") == null) {
|
||
log.error("获取金蝶的accessToken失败,{}", accessTokenRes);
|
||
return "";
|
||
}
|
||
|
||
log.info("获取金蝶的accessToken成功,{}", accessTokenJSON.getJSONObject("data").getString("access_token"));
|
||
accessToken = accessTokenJSON.getJSONObject("data").getString("access_token");
|
||
|
||
//存放到咖啡因之中
|
||
CaffeineCacheUtil.put("kd_access_token", accessToken);
|
||
|
||
return accessToken;
|
||
}
|
||
}
|