package com.zehong.web.controller.api; import com.alibaba.fastjson.JSONObject; import com.zehong.common.core.redis.RedisCache; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; @Component public class OutUtil { @Autowired private RedisCache redisCache; @Value("${zhengfu.appId}") private String appId; @Value("${zhengfu.appSecret}") private String appSecret; @Value("${zhengfu.tokenUrl}") private String tokenUrl; @Value("${zhengfu.apiUrl}") private String apiUrl; /** * 获取token * @return * @throws Exception */ public String getToken()throws Exception { String token = (String)redisCache.getCacheObject("apiToken"); if(token!=null){ token = getNewToken(); } return token; } /** * 获取接口参数 * @return * @throws Exception */ public JSONObject getInfo(String domain, String methodType, Map<String,Object> map)throws Exception { String token = (String)redisCache.getCacheObject("apiToken"); if(token==null){ token = getNewToken(); } JSONObject json = new JSONObject(); json.put("domain", domain); json.put("method", methodType); json.put("condition", map); JSONObject jobct = (JSONObject) HttpClient.sendPostJson(apiUrl,json,token); return jobct; } /** * 上传数据 * @param methodType * @param list * @return * @throws Exception */ public JSONObject setInfo(String domain, String methodType, List list)throws Exception { String token = (String)redisCache.getCacheObject("apiToken"); if(token==null){ token = getNewToken(); } JSONObject json = new JSONObject(); json.put("domain", domain); json.put("method", methodType); json.put("data", list); JSONObject jobct = (JSONObject) HttpClient.sendPostJson(apiUrl,json,token); return jobct; } public String getNewToken()throws Exception{ JSONObject json = new JSONObject(); json.put("appId", appId); json.put("appSecret", appSecret); JSONObject jobct = (JSONObject) HttpClient.sendPostJson(tokenUrl,json,null); redisCache.setCacheObject("apiToken",(String)((Map<String,Object>)jobct.get("data")).get("accessToken"),7000, TimeUnit.SECONDS); return (String)((Map<String,Object>)jobct.get("data")).get("accessToken"); } }