package com.zhgd.xmgl.util; import cn.hutool.core.map.MapUtil; import cn.hutool.crypto.SecureUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; import java.util.Map; import java.util.function.Supplier; /** * 携稳Util * * @author 邱平毅 * @ClassName XiwonUtil * @date 2022/11/15 14:05 * @Version 1.0 */ @Component @Slf4j public class XiwonUtil { @Value("${xiwon.appId}") private String appId; @Value("${xiwon.appSecret}") private String appSecret; @Autowired RestTemplate restTemplate; public String getToken(long requestTime) { return SecureUtil.md5(appId + appSecret + requestTime); } public T postForm(String url, Map map, Class returnClass, Supplier supplier) { HttpHeaders requestHeaders = new HttpHeaders(); requestHeaders.set("appId", appId); long currentTimeMillis = System.currentTimeMillis(); requestHeaders.set("requestTime", currentTimeMillis + ""); requestHeaders.set("sign", getToken(currentTimeMillis)); requestHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED); HttpEntity> requestEntity = new HttpEntity<>(requestHeaders); if (supplier != null) { supplier.get(); } String sendUrl = url + "?" + MapUtil.join(map, "&", "="); log.info("postForm:url:{}", sendUrl); return restTemplate.postForObject(sendUrl, requestEntity, returnClass); } public T postDustForm(String url, String appId, String appSecret, Map map, Class returnClass, Supplier supplier) { HttpHeaders requestHeaders = new HttpHeaders(); requestHeaders.set("appId", appId); long currentTimeMillis = System.currentTimeMillis(); requestHeaders.set("requestTime", currentTimeMillis + ""); requestHeaders.set("sign", SecureUtil.md5(appId + appSecret + currentTimeMillis)); requestHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED); HttpEntity> requestEntity = new HttpEntity<>(requestHeaders); if (supplier != null) { supplier.get(); } String sendUrl = url + "?" + MapUtil.join(map, "&", "="); log.info("postForm: url:{}, appId:{}, appSecret:{}", sendUrl, appId, appSecret); return restTemplate.postForObject(sendUrl, requestEntity, returnClass); } }