文件新增和依赖导入
This commit is contained in:
parent
d28a4f7303
commit
ad542999d8
@ -1,8 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<module version="4">
|
|
||||||
<component name="FacetManager">
|
|
||||||
<facet type="Spring" name="Spring">
|
|
||||||
<configuration />
|
|
||||||
</facet>
|
|
||||||
</component>
|
|
||||||
</module>
|
|
@ -101,8 +101,12 @@
|
|||||||
<artifactId>mssql-jdbc</artifactId>
|
<artifactId>mssql-jdbc</artifactId>
|
||||||
<version>7.4.1.jre8</version>
|
<version>7.4.1.jre8</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!--咖啡因缓存-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.github.ben-manes.caffeine</groupId>
|
||||||
|
<artifactId>caffeine</artifactId>
|
||||||
|
<version>2.9.1</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
@ -0,0 +1,16 @@
|
|||||||
|
package org.ssssssss.magicboot.constant;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创宇CRM的证书常量
|
||||||
|
*
|
||||||
|
* @param
|
||||||
|
* @return null
|
||||||
|
* @Author weiloong_zhang
|
||||||
|
*/
|
||||||
|
public class CertificateConstant {
|
||||||
|
public static final String APP_ID = "FSAID_131e877";//appId
|
||||||
|
public static final String PERMANENT_CODE = "F7D7D42D0459407DE48B27B752650B8C";//永久授权码
|
||||||
|
public static final String APP_SECRET = "a639cc4bc28c48cb986a4faf6badcb00";//appSecret
|
||||||
|
public static final String CORP_ID = "FSCID_1EDEA7F57E23B1E1173B01D4E06B8DD4";//企业Id
|
||||||
|
public static final String CURRENT_OPEN_USERID = "FSUID_86490ECFD2B8AD9EE361E6DA9B3AC83D";//当前登录用户id
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
package org.ssssssss.magicboot.constant;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 接口地址URL常量
|
||||||
|
*
|
||||||
|
* @param
|
||||||
|
* @return null
|
||||||
|
* @Author weiloong_zhang
|
||||||
|
*/
|
||||||
|
public class URLConstant {
|
||||||
|
public static final String GET_CORPACCESSTOKEN_URL = "https://open.fxiaoke.com/cgi/corpAccessToken/get/V2";//获取token的接口地址
|
||||||
|
public static final String GET_CRM_LIST_URL = "https://open.fxiaoke.com/cgi/crm/v2/data/query";//获取客户列表的接口地址
|
||||||
|
public static final String GET_CUSTOMIZE_LIST_URL = "https://open.fxiaoke.com/cgi/crm/custom/v2/data/query";//获取自定义对象列表的接口地址
|
||||||
|
public static final String UPDATE_CRM_MAIN = "https://open.fxiaoke.com/cgi/crm/v2/data/update";
|
||||||
|
public static final String CREATE_CRM_MAIN = "https://open.fxiaoke.com/cgi/crm/v2/data/create";
|
||||||
|
public static final String CREATE_CRM_CUSTOMER_MAIN = "https://open.fxiaoke.com/cgi/crm/custom/v2/data/create";
|
||||||
|
public static final String UNLOCK_CRM_URL = "https://open.fxiaoke.com/cgi/crm/v2/object/unlock";
|
||||||
|
public static final String LOCK_CRM_URL = "https://open.fxiaoke.com/cgi/crm/v2/object/lock";
|
||||||
|
public static final String UPDATE_CRM_CUSTOMIZE = "https://open.fxiaoke.com/cgi/crm/custom/v2/data/update";
|
||||||
|
public static final String UPLOAD_FILE_URL = "https://open.fxiaoke.com/media/upload";
|
||||||
|
public static final String UPLOAD_ANNEX_URL = "https://open.fxiaoke.com/cgi/crm/custom/v2/data/update";
|
||||||
|
}
|
@ -0,0 +1,56 @@
|
|||||||
|
package org.ssssssss.magicboot.entity;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class Filter {
|
||||||
|
@JsonProperty("operator")
|
||||||
|
private String operator;
|
||||||
|
@JsonProperty("field_name")
|
||||||
|
private String fieldName;
|
||||||
|
@JsonProperty("field_values")
|
||||||
|
private List<String> fieldValues;
|
||||||
|
|
||||||
|
// 构造方法
|
||||||
|
public Filter(String operator, String fieldName, List<String> fieldValues) {
|
||||||
|
this.operator = operator;
|
||||||
|
this.fieldName = fieldName;
|
||||||
|
this.fieldValues = fieldValues;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Getter 和 Setter 方法
|
||||||
|
public String getOperator() {
|
||||||
|
return operator;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOperator(String operator) {
|
||||||
|
this.operator = operator;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFieldName() {
|
||||||
|
return fieldName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFieldName(String fieldName) {
|
||||||
|
this.fieldName = fieldName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getFieldValues() {
|
||||||
|
return fieldValues;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFieldValues(List<String> fieldValues) {
|
||||||
|
this.fieldValues = fieldValues;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 方便打印的 toString 方法
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "Filter{" +
|
||||||
|
"operator='" + operator + '\'' +
|
||||||
|
", field_name='" + fieldName + '\'' +
|
||||||
|
", field_values=" + fieldValues +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,59 @@
|
|||||||
|
package org.ssssssss.magicboot.utils;
|
||||||
|
|
||||||
|
import com.github.benmanes.caffeine.cache.Cache;
|
||||||
|
import com.github.benmanes.caffeine.cache.Caffeine;
|
||||||
|
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
public class CaffeineCacheUtil {
|
||||||
|
|
||||||
|
private static final Cache<Object, Object> cache = Caffeine.newBuilder()
|
||||||
|
.maximumSize(100) // 最大缓存容量
|
||||||
|
.expireAfterWrite(120, TimeUnit.MINUTES) // 120分钟后过期
|
||||||
|
.build();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 存储数据到缓存
|
||||||
|
*
|
||||||
|
* @param key 缓存的键
|
||||||
|
* @param value 缓存的值
|
||||||
|
*/
|
||||||
|
public static void put(Object key, Object value) {
|
||||||
|
cache.put(key, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 从缓存中获取数据
|
||||||
|
*
|
||||||
|
* @param key 缓存的键
|
||||||
|
* @return 缓存的值,如果不存在则返回null
|
||||||
|
*/
|
||||||
|
public static Object get(Object key) {
|
||||||
|
return cache.getIfPresent(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 从缓存中删除数据
|
||||||
|
*
|
||||||
|
* @param key 缓存的键
|
||||||
|
*/
|
||||||
|
public static void remove(Object key) {
|
||||||
|
cache.invalidate(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// 存储数据到缓存
|
||||||
|
put("key1", "value1");
|
||||||
|
|
||||||
|
// 从缓存中获取数据
|
||||||
|
Object value = get("key1");
|
||||||
|
System.out.println("Cached value for key1: " + value);
|
||||||
|
|
||||||
|
// 从缓存中删除数据
|
||||||
|
remove("key1");
|
||||||
|
|
||||||
|
// 尝试获取被删除的数据
|
||||||
|
value = get("key1");
|
||||||
|
System.out.println("Cached value for key1 after removal: " + value);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,314 @@
|
|||||||
|
package org.ssssssss.magicboot.utils;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.web.client.RestTemplate;
|
||||||
|
import org.ssssssss.magicboot.constant.CertificateConstant;
|
||||||
|
import org.ssssssss.magicboot.constant.URLConstant;
|
||||||
|
import org.ssssssss.magicboot.entity.Filter;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 本工具类用于封装向纷享销客发送的请求参数,后续会完善其他的参数方法
|
||||||
|
*
|
||||||
|
* @param
|
||||||
|
* @return null
|
||||||
|
* @Author weiloong_zhang
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
public class CrmRequestUtil {
|
||||||
|
|
||||||
|
private RestTemplate restTemplate = new RestTemplate();
|
||||||
|
|
||||||
|
//封装根据条件查询数据列表的请求
|
||||||
|
public JSONObject getCRMList(List<Filter> filters, String dataObjectApiName) {
|
||||||
|
String corpAccessToken = "";
|
||||||
|
//判断咖啡因中是否有数据
|
||||||
|
if (CaffeineCacheUtil.get("corpAccessToken") != null) {
|
||||||
|
log.info("咖啡因中有缓存的token数据");
|
||||||
|
corpAccessToken = CaffeineCacheUtil.get("corpAccessToken").toString();
|
||||||
|
} else {
|
||||||
|
log.info("咖啡因中不存在token缓存");
|
||||||
|
//封装请求
|
||||||
|
Map tokenParams = new HashMap<>();
|
||||||
|
tokenParams.put("appId", CertificateConstant.APP_ID);
|
||||||
|
tokenParams.put("appSecret", CertificateConstant.APP_SECRET);
|
||||||
|
tokenParams.put("permanentCode", CertificateConstant.PERMANENT_CODE);
|
||||||
|
|
||||||
|
JSONObject tokenResponse = restTemplate.postForObject(URLConstant.GET_CORPACCESSTOKEN_URL, tokenParams, JSONObject.class);
|
||||||
|
|
||||||
|
//判断是否获取成功
|
||||||
|
if (tokenResponse.containsKey("errorMessage") && tokenResponse.getString("errorMessage").equals("success")) {
|
||||||
|
corpAccessToken = tokenResponse.getString("corpAccessToken");
|
||||||
|
} else {
|
||||||
|
log.info("获取纷享销客token失败{}", tokenResponse);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Map orderMap = new HashMap<>();
|
||||||
|
orderMap.put("fieldName", "create_time");
|
||||||
|
orderMap.put("isAsc", "false");
|
||||||
|
|
||||||
|
Map searchQueryInfoMap = new HashMap<>();
|
||||||
|
searchQueryInfoMap.put("offset", "0");
|
||||||
|
searchQueryInfoMap.put("limit", "100");
|
||||||
|
searchQueryInfoMap.put("orders", Arrays.asList(orderMap));
|
||||||
|
searchQueryInfoMap.put("filters", filters);
|
||||||
|
|
||||||
|
Map data = new HashMap<>();
|
||||||
|
data.put("search_query_info", searchQueryInfoMap);
|
||||||
|
data.put("dataObjectApiName", dataObjectApiName);
|
||||||
|
|
||||||
|
Map request = new HashMap<>();
|
||||||
|
request.put("corpAccessToken", corpAccessToken);
|
||||||
|
request.put("currentOpenUserId", CertificateConstant.CURRENT_OPEN_USERID);
|
||||||
|
request.put("corpId", CertificateConstant.CORP_ID);
|
||||||
|
request.put("data", data);
|
||||||
|
|
||||||
|
JSONObject requestJSON = new JSONObject(request);
|
||||||
|
return requestJSON;
|
||||||
|
}
|
||||||
|
|
||||||
|
//封装更新单据的请求参数
|
||||||
|
public JSONObject updateCRM(Map data) {
|
||||||
|
String corpAccessToken = "";
|
||||||
|
//判断咖啡因中是否有数据
|
||||||
|
if (CaffeineCacheUtil.get("corpAccessToken") != null) {
|
||||||
|
log.info("咖啡因中有缓存的token数据");
|
||||||
|
corpAccessToken = CaffeineCacheUtil.get("corpAccessToken").toString();
|
||||||
|
} else {
|
||||||
|
log.info("咖啡因中不存在token缓存");
|
||||||
|
//封装请求
|
||||||
|
Map tokenParams = new HashMap<>();
|
||||||
|
tokenParams.put("appId", CertificateConstant.APP_ID);
|
||||||
|
tokenParams.put("appSecret", CertificateConstant.APP_SECRET);
|
||||||
|
tokenParams.put("permanentCode", CertificateConstant.PERMANENT_CODE);
|
||||||
|
|
||||||
|
JSONObject tokenResponse = restTemplate.postForObject(URLConstant.GET_CORPACCESSTOKEN_URL, tokenParams, JSONObject.class);
|
||||||
|
|
||||||
|
//判断是否获取成功
|
||||||
|
if (tokenResponse.containsKey("errorMessage") && tokenResponse.getString("errorMessage").equals("success")) {
|
||||||
|
corpAccessToken = tokenResponse.getString("corpAccessToken");
|
||||||
|
} else {
|
||||||
|
log.info("获取纷享销客token失败{}", tokenResponse);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//封装object_data
|
||||||
|
Map objectData = new HashMap<>();
|
||||||
|
objectData.put("object_data", data);
|
||||||
|
|
||||||
|
// Map rootData = new HashMap<>();
|
||||||
|
// rootData.put("data", objectData);
|
||||||
|
|
||||||
|
Map request = new HashMap<>();
|
||||||
|
request.put("corpAccessToken", corpAccessToken);
|
||||||
|
request.put("currentOpenUserId", CertificateConstant.CURRENT_OPEN_USERID);
|
||||||
|
request.put("corpId", CertificateConstant.CORP_ID);
|
||||||
|
request.put("data", objectData);
|
||||||
|
|
||||||
|
JSONObject requestJSON = new JSONObject(request);
|
||||||
|
return requestJSON;
|
||||||
|
}
|
||||||
|
|
||||||
|
//封装新建单据的请求参数
|
||||||
|
public JSONObject createCRM(Map map) {
|
||||||
|
String corpAccessToken = "";
|
||||||
|
//判断咖啡因中是否有数据
|
||||||
|
if (CaffeineCacheUtil.get("corpAccessToken") != null) {
|
||||||
|
log.info("咖啡因中有缓存的token数据");
|
||||||
|
corpAccessToken = CaffeineCacheUtil.get("corpAccessToken").toString();
|
||||||
|
} else {
|
||||||
|
log.info("咖啡因中不存在token缓存");
|
||||||
|
//封装请求
|
||||||
|
Map tokenParams = new HashMap<>();
|
||||||
|
tokenParams.put("appId", CertificateConstant.APP_ID);
|
||||||
|
tokenParams.put("appSecret", CertificateConstant.APP_SECRET);
|
||||||
|
tokenParams.put("permanentCode", CertificateConstant.PERMANENT_CODE);
|
||||||
|
|
||||||
|
JSONObject tokenResponse = restTemplate.postForObject(URLConstant.GET_CORPACCESSTOKEN_URL, tokenParams, JSONObject.class);
|
||||||
|
|
||||||
|
//判断是否获取成功
|
||||||
|
if (tokenResponse.containsKey("errorMessage") && tokenResponse.getString("errorMessage").equals("success")) {
|
||||||
|
corpAccessToken = tokenResponse.getString("corpAccessToken");
|
||||||
|
} else {
|
||||||
|
log.info("获取纷享销客token失败{}", tokenResponse);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//封装object_data
|
||||||
|
Map objectData = new HashMap<>();
|
||||||
|
objectData.put("object_data", map);
|
||||||
|
|
||||||
|
//Map rootData = new HashMap<>();
|
||||||
|
//rootData.put("data", objectData);
|
||||||
|
|
||||||
|
Map request = new HashMap<>();
|
||||||
|
request.put("corpAccessToken", corpAccessToken);
|
||||||
|
request.put("currentOpenUserId", CertificateConstant.CURRENT_OPEN_USERID);
|
||||||
|
request.put("corpId", CertificateConstant.CORP_ID);
|
||||||
|
request.put("data", objectData);
|
||||||
|
|
||||||
|
JSONObject requestJSON = new JSONObject(request);
|
||||||
|
return requestJSON;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生成crm请求数据
|
||||||
|
*
|
||||||
|
* @param crmId
|
||||||
|
* @param dataObjectApiName:
|
||||||
|
* @return com.alibaba.fastjson.JSONObject
|
||||||
|
* @Author weiloong_zhang
|
||||||
|
*/
|
||||||
|
public JSONObject unlockCRM(String crmId, String dataObjectApiName) {
|
||||||
|
String corpAccessToken = "";
|
||||||
|
//判断咖啡因中是否有数据
|
||||||
|
if (CaffeineCacheUtil.get("corpAccessToken") != null) {
|
||||||
|
log.info("咖啡因中有缓存的token数据");
|
||||||
|
corpAccessToken = CaffeineCacheUtil.get("corpAccessToken").toString();
|
||||||
|
} else {
|
||||||
|
log.info("咖啡因中不存在token缓存");
|
||||||
|
//封装请求
|
||||||
|
Map tokenParams = new HashMap<>();
|
||||||
|
tokenParams.put("appId", CertificateConstant.APP_ID);
|
||||||
|
tokenParams.put("appSecret", CertificateConstant.APP_SECRET);
|
||||||
|
tokenParams.put("permanentCode", CertificateConstant.PERMANENT_CODE);
|
||||||
|
|
||||||
|
JSONObject tokenResponse = restTemplate.postForObject(URLConstant.GET_CORPACCESSTOKEN_URL, tokenParams, JSONObject.class);
|
||||||
|
|
||||||
|
//判断是否获取成功
|
||||||
|
if (tokenResponse.containsKey("errorMessage") && tokenResponse.getString("errorMessage").equals("success")) {
|
||||||
|
corpAccessToken = tokenResponse.getString("corpAccessToken");
|
||||||
|
} else {
|
||||||
|
log.info("获取纷享销客token失败{}", tokenResponse);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Map data = new HashMap<>();
|
||||||
|
data.put("dataIds", Arrays.asList(crmId));
|
||||||
|
data.put("dataObjectApiName", dataObjectApiName);
|
||||||
|
Map request = new HashMap<>();
|
||||||
|
request.put("corpAccessToken", corpAccessToken);
|
||||||
|
request.put("currentOpenUserId", CertificateConstant.CURRENT_OPEN_USERID);
|
||||||
|
request.put("corpId", CertificateConstant.CORP_ID);
|
||||||
|
request.put("data", data);
|
||||||
|
|
||||||
|
JSONObject requestJSON = new JSONObject(request);
|
||||||
|
return requestJSON;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JSONObject crmWithDetail(Map map, Map details) {
|
||||||
|
String corpAccessToken = "";
|
||||||
|
//判断咖啡因中是否有数据
|
||||||
|
if (CaffeineCacheUtil.get("corpAccessToken") != null) {
|
||||||
|
log.info("咖啡因中有缓存的token数据");
|
||||||
|
corpAccessToken = CaffeineCacheUtil.get("corpAccessToken").toString();
|
||||||
|
} else {
|
||||||
|
log.info("咖啡因中不存在token缓存");
|
||||||
|
//封装请求
|
||||||
|
Map tokenParams = new HashMap<>();
|
||||||
|
tokenParams.put("appId", CertificateConstant.APP_ID);
|
||||||
|
tokenParams.put("appSecret", CertificateConstant.APP_SECRET);
|
||||||
|
tokenParams.put("permanentCode", CertificateConstant.PERMANENT_CODE);
|
||||||
|
|
||||||
|
JSONObject tokenResponse = restTemplate.postForObject(URLConstant.GET_CORPACCESSTOKEN_URL, tokenParams, JSONObject.class);
|
||||||
|
|
||||||
|
//判断是否获取成功
|
||||||
|
if (tokenResponse.containsKey("errorMessage") && tokenResponse.getString("errorMessage").equals("success")) {
|
||||||
|
corpAccessToken = tokenResponse.getString("corpAccessToken");
|
||||||
|
} else {
|
||||||
|
log.info("获取纷享销客token失败{}", tokenResponse);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//封装object_data
|
||||||
|
Map objectData = new HashMap<>();
|
||||||
|
objectData.put("object_data", map);
|
||||||
|
objectData.put("details", details);
|
||||||
|
|
||||||
|
Map request = new HashMap<>();
|
||||||
|
request.put("corpAccessToken", corpAccessToken);
|
||||||
|
request.put("currentOpenUserId", CertificateConstant.CURRENT_OPEN_USERID);
|
||||||
|
request.put("corpId", CertificateConstant.CORP_ID);
|
||||||
|
request.put("data", objectData);
|
||||||
|
|
||||||
|
JSONObject requestJSON = new JSONObject(request);
|
||||||
|
return requestJSON;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JSONObject uploadFile(String dataId, String dataObjectApiName, String apiName, Map file) {
|
||||||
|
String corpAccessToken = "";
|
||||||
|
//判断咖啡因中是否有数据
|
||||||
|
if (CaffeineCacheUtil.get("corpAccessToken") != null) {
|
||||||
|
log.info("咖啡因中有缓存的token数据");
|
||||||
|
corpAccessToken = CaffeineCacheUtil.get("corpAccessToken").toString();
|
||||||
|
} else {
|
||||||
|
log.info("咖啡因中不存在token缓存");
|
||||||
|
//封装请求
|
||||||
|
Map tokenParams = new HashMap<>();
|
||||||
|
tokenParams.put("appId", CertificateConstant.APP_ID);
|
||||||
|
tokenParams.put("appSecret", CertificateConstant.APP_SECRET);
|
||||||
|
tokenParams.put("permanentCode", CertificateConstant.PERMANENT_CODE);
|
||||||
|
|
||||||
|
JSONObject tokenResponse = restTemplate.postForObject(URLConstant.GET_CORPACCESSTOKEN_URL, tokenParams, JSONObject.class);
|
||||||
|
|
||||||
|
//判断是否获取成功
|
||||||
|
if (tokenResponse.containsKey("errorMessage") && tokenResponse.getString("errorMessage").equals("success")) {
|
||||||
|
corpAccessToken = tokenResponse.getString("corpAccessToken");
|
||||||
|
} else {
|
||||||
|
log.info("获取纷享销客token失败{}", tokenResponse);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Map fileMap = new HashMap<>();
|
||||||
|
fileMap.put("_id", dataId);
|
||||||
|
fileMap.put(apiName, Arrays.asList(file));
|
||||||
|
fileMap.put("dataObjectApiName", dataObjectApiName);
|
||||||
|
|
||||||
|
//封装object_data
|
||||||
|
Map objectData = new HashMap<>();
|
||||||
|
objectData.put("object_data", fileMap);
|
||||||
|
|
||||||
|
Map request = new HashMap<>();
|
||||||
|
request.put("corpAccessToken", corpAccessToken);
|
||||||
|
request.put("currentOpenUserId", CertificateConstant.CURRENT_OPEN_USERID);
|
||||||
|
request.put("corpId", CertificateConstant.CORP_ID);
|
||||||
|
request.put("data", objectData);
|
||||||
|
|
||||||
|
JSONObject requestJSON = new JSONObject(request);
|
||||||
|
return requestJSON;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCRMToken() {
|
||||||
|
String corpAccessToken = "";
|
||||||
|
//判断咖啡因中是否有数据
|
||||||
|
if (CaffeineCacheUtil.get("corpAccessToken") != null) {
|
||||||
|
log.info("咖啡因中有缓存的token数据");
|
||||||
|
corpAccessToken = CaffeineCacheUtil.get("corpAccessToken").toString();
|
||||||
|
} else {
|
||||||
|
log.info("咖啡因中不存在token缓存");
|
||||||
|
//封装请求
|
||||||
|
Map tokenParams = new HashMap<>();
|
||||||
|
tokenParams.put("appId", CertificateConstant.APP_ID);
|
||||||
|
tokenParams.put("appSecret", CertificateConstant.APP_SECRET);
|
||||||
|
tokenParams.put("permanentCode", CertificateConstant.PERMANENT_CODE);
|
||||||
|
|
||||||
|
JSONObject tokenResponse = restTemplate.postForObject(URLConstant.GET_CORPACCESSTOKEN_URL, tokenParams, JSONObject.class);
|
||||||
|
|
||||||
|
//判断是否获取成功
|
||||||
|
if (tokenResponse.containsKey("errorMessage") && tokenResponse.getString("errorMessage").equals("success")) {
|
||||||
|
corpAccessToken = tokenResponse.getString("corpAccessToken");
|
||||||
|
} else {
|
||||||
|
log.info("获取纷享销客token失败{}", tokenResponse);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return corpAccessToken;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
package org.ssssssss.magicboot.utils;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.web.client.RestTemplate;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
public class PortConfig {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public RestTemplate restTemplate() {
|
||||||
|
return new RestTemplate();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public ObjectMapper objectMapper() {
|
||||||
|
return new ObjectMapper();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user