Commit 6325a97b authored by matianhao's avatar matianhao

[纪委接口] <add> 新增"纪委智慧监督平台接口_20200812"中接口;限制签名错误后重新请求次数

parent e5722c66
package com.mth.requestsecret.controller;
import com.mth.requestsecret.scheduler.RequestSecretSchedulerTask;
import com.mth.requestsecret.util.DSLUtils;
import com.mth.requestsecret.util.MD5Utils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* @author MaTianHao
* @date 2020/7/13
*/
@Slf4j
public class BaseController {
@Autowired
private RestTemplate restTemplate;
@Value("${DATA_API_ADDRESS}")
private String pathUrl;
@Value("${app.key}")
private String appKey;
/**
* 发送请求公共方法
*
* @param paramMap api参数
* @param apiMethod api签名
* @return
*/
protected ResponseEntity<String> commonSendRequest(Map<String, Object> paramMap, final String apiMethod) {
// 请求url拼接api签名和公共参数
StringBuilder url = new StringBuilder()
.append(pathUrl)
.append("/interface/public/service/risen-api/")
.append(apiMethod)
.append("?appKey={appKey}&sign={sign}&requestTime={requestTime}");
// 拼接api参数
for (String key : paramMap.keySet()) {
url.append("&").append(key).append("={").append(key).append("}");
}
// 请求时间
String requestTime = DSLUtils.dateToLong(new Date()) + "";
// 签名字符串
String signStr = appKey + RequestSecretSchedulerTask.requestSecret + requestTime;
// 组装请求参数
Map<String, Object> map = new HashMap<String, Object>(12) {{
put("appKey", appKey);
put("sign", MD5Utils.encoderByMd5(signStr));
put("requestTime", requestTime);
}};
map.putAll(paramMap);
// 日志记录
log.info("纪委api:{}", apiMethod);
log.info("api url:{}", url);
log.info("api params:{}", map);
// 发送请求
ResponseEntity<String> responseEntity = restTemplate.getForEntity(url.toString(), String.class, map);
log.info("api response:{}", responseEntity);
return responseEntity;
}
}
......@@ -924,6 +924,118 @@ public class RequestController {
return restTemlateService.commonSendRequest(paramMap, apiMethod);
}
/**
* 五十五.浙江省编办事业单位法人登记证查询
*
* @param param
* @return
*/
@PostMapping("/7ed5z6L4qSOq4F95")
public ResponseEntity<String> method7ed5z6L4qSOq4F95(CompanyParamVO param) {
// api签名
String apiMethod = "7ed5z6L4qSOq4F95.action";
// api参数
MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<>();
paramMap.add("sydwTycode", param.getUniscId());
paramMap.add("additional", param.getAdditional());
return restTemlateService.commonSendRequest(paramMap, apiMethod);
}
/**
* 五十六.浙江杭州市建委初步设计批复信息查询
*
* @param param
* @return
*/
@PostMapping("/sjwcbsjpfxx")
public ResponseEntity<String> sjwcbsjpfxx(ProjectParamVO param) {
// api签名
String apiMethod = "sjwcbsjpfxx.action";
// api参数
MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<>();
paramMap.add("id_nbr", param.getProjectNum());
paramMap.add("name", param.getProjectName());
paramMap.add("additional", param.getAdditional());
return restTemlateService.commonSendRequest(paramMap, apiMethod);
}
/**
* 五十七.浙江省建设项目环境影响评价文件的审批意见查询
*
* @param projectName
* @param companyName
* @param additional
* @return
*/
@PostMapping("/tG4YDd6Gx1JfMef0")
public ResponseEntity<String> tG4YDd6Gx1JfMef0(String projectName, String companyName, String additional) {
// api签名
String apiMethod = "tG4YDd6Gx1JfMef0.action";
// api参数
MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<>();
paramMap.add("JSDW", companyName);
paramMap.add("XMMC", projectName);
paramMap.add("additional", additional);
return restTemlateService.commonSendRequest(paramMap, apiMethod);
}
/**
* 五十八.浙江杭州规划局建设工程规划核实信息查询
*
* @param param
* @return
*/
@PostMapping("/guihuajujsxmghhs")
public ResponseEntity<String> guihuajujsxmghhs(ProjectParamVO param) {
// api签名
String apiMethod = "guihuajujsxmghhs.action";
// api参数
MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<>();
paramMap.add("id_nbr", param.getProjectNum());
paramMap.add("name", param.getProjectName());
paramMap.add("additional", param.getAdditional());
return restTemlateService.commonSendRequest(paramMap, apiMethod);
}
/**
* 五十九.浙江杭州发改委通用信用核查
*
* @param param
* @return
*/
@PostMapping("/fgwUserService")
public ResponseEntity<String> fgwUserService(FiftyNinthParamVO param) {
// api签名
String apiMethod = "fgwUserService.action";
// api参数
MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<>();
paramMap.add("user", param.getUser());
paramMap.add("xdrmc", param.getXdrmc());
paramMap.add("type", param.getType());
paramMap.add("password", param.getPassword());
paramMap.add("xdrdm", param.getXdrdm());
paramMap.add("code", param.getCode());
paramMap.add("additional", param.getAdditional());
return restTemlateService.commonSendRequest(paramMap, apiMethod);
}
/**
* 六十.浙江省获取社会救助信息查询
*
* @param param
* @return
*/
@PostMapping("/dUzfwd0e86Z00oc4")
public ResponseEntity<String> dUzfwd0e86Z00oc4(BaseParamVO param) {
// api签名
String apiMethod = "dUzfwd0e86Z00oc4.action";
// api参数
MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<>();
paramMap.add("dsfz", param.getIdCard());
paramMap.add("additional", param.getAdditional());
return restTemlateService.commonSendRequest(paramMap, apiMethod);
}
@PostMapping("/")
public ResponseEntity<String> method(BaseParamVO param) {
......
package com.mth.requestsecret.controller.vo;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @author MaTianHao
* @date 2020/8/12
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class FiftyNinthParamVO extends BaseParamVO{
/**
* 用户名
*/
private String user;
/**
* 代码
*/
private String code;
/**
* 相对人名称
*/
private String xdrmc;
/**
* 相对人代码
*/
private String xdrdm;
/**
* 查询类别,1表示自然人,0表示企业
*/
private String type;
/**
* 密码
*/
private String password;
}
......@@ -38,6 +38,8 @@ public class RestTemlateService {
@Autowired
private RequestSecretSchedulerTask schedulerTask;
private ThreadLocal<Integer> threadLocal = ThreadLocal.withInitial(() -> 0);
@Value("${DATA_API_ADDRESS}")
private String pathUrl;
......@@ -75,13 +77,23 @@ public class RestTemlateService {
ResponseEntity<String> responseEntity = restTemplate.exchange(url.toString(), HttpMethod.POST, request, String.class);
log.info("api response:{}", responseEntity);
// 接口返回码
String code = JSONObject.parseObject(responseEntity.getBody()).getString("code");
try {
// 接口返回码
String code = JSONObject.parseObject(responseEntity.getBody()).getString("code");
Integer count = threadLocal.get();
String threadName = Thread.currentThread().getName();
// 如果返回签名错误,则重新获取秘钥,重新发送请求
if (RESPONSE_CODE_14.equals(code)) {
schedulerTask.getRequestSecret();
return commonSendRequest(paramMap, apiMethod);
// 如返回签名错误,则重新获取秘钥并发送请求,限制重新请求次数两次
if (RESPONSE_CODE_14.equals(code) && count < 2) {
threadLocal.set(++count);
log.info("线程名称:{},重新请求次数:{}", threadName, count);
// 获取秘钥
schedulerTask.getRequestSecret();
// 重新调用请求
return commonSendRequest(paramMap, apiMethod);
}
} finally {
threadLocal.remove();
}
return responseEntity;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment