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;
|
|||
|
}
|
|||
|
}
|