244 lines
8.1 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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