244 lines
8.1 KiB
Java
Raw Normal View History

2025-06-11 13:58:36 +08:00
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;
}
}