PoliceCarInfoUtil.java
6.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
package com.zteits.pay.util;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.apache.commons.collections4.CollectionUtils;
import com.alibaba.fastjson.JSONObject;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.digest.HmacAlgorithm;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import com.clouds.common.cache.sys.SysCodeValueCacheUtil;
import com.clouds.common.constants.CodeValKindEnum;
import com.clouds.common.constants.CodeValueEnum;
import com.google.common.collect.Lists;
import com.zteits.clouds.api.apibase.constants.ErrorType;
import com.zteits.clouds.api.apibase.exception.BizException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Copyright: Copyright (c) 2020 zteits
*
* @ClassName: com.zteits.pay.util
* @Description:
* @version: v1.0.0
* @author: atao
* @date: 2020/9/14 5:07 下午 Modification History:
* @ Date Author Version Description
* @ ---------------------------------------------------------*
* @ 2020/9/14 atao v1.0.0 创建
*/
public class PoliceCarInfoUtil {
private static final Logger log = LoggerFactory.getLogger(PoliceCarInfoUtil.class);
/**
* 获取车辆图片信息
*
* @param carNumber
*/
public static List<String> getPoliceCarPicInfo(String carNumber) {
//final String url = SysCodeValueCacheUtil.queryCodeNameByCodeValue(CodeValKindEnum.POLICE_CAR_INFO,
// CodeValueEnum.POLICE_URL, "http://119.100.56.15/api/police/vechicle/");
//final String appid = SysCodeValueCacheUtil.queryCodeNameByCodeValue(CodeValKindEnum.POLICE_CAR_INFO,
// CodeValueEnum.POLICE_APP_ID, "YFBBW2DXKRV2YAGH8X8B");
//final String appsecret = SysCodeValueCacheUtil.queryCodeNameByCodeValue(CodeValKindEnum.POLICE_CAR_INFO,
// CodeValueEnum.POLICE_APP_SECRET, "41cf5866164ffb181ad3f97961d92a9b");
//final String timestamp = System.currentTimeMillis() + "";
//final String nonce = RandomUtil.randomString(15);
final String url = "http://119.100.56.15/api/police/vechicleOwner/";
//final String url = "http://119.100.56.15/api/police/vechicle/";
final String appid = "YFBBW2DXKRV2YAGH8X8B";
final String appsecret = "41cf5866164ffb181ad3f97961d92a9b";
final String timestamp = System.currentTimeMillis() + "";
final String nonce = RandomUtil.randomString(15);
//目前黄石只能查询 鄂B 及 鄂OB 的车
if (null != carNumber) {
carNumber = carNumber.replaceAll(" ","").trim();
carNumber = carNumber.toUpperCase();
if (!carNumber.startsWith("鄂OB") && !carNumber.startsWith("鄂B")) {
return new ArrayList<>();
}
carNumber = carNumber.replaceAll("鄂OB", "").replaceAll("鄂B", "");
}
StringBuffer sourceStr = new StringBuffer();
sourceStr.append("appid=").append(appid).append(";");
sourceStr.append("appsecret=").append(appsecret).append(";");
sourceStr.append("nonce=").append(nonce).append(";");
sourceStr.append("timestamp=").append(timestamp).append(";");
sourceStr.append(carNumber).append(";");
log.info("待加密字符串为:{}", sourceStr.toString());
String signature = SecureUtil.hmac(HmacAlgorithm.HmacSHA256, appsecret.getBytes()).digestHex(
sourceStr.toString());
log.info("timestamp:{}", timestamp);
log.info("nonce:{}", nonce);
log.info("生成 签名为:{}", signature);
HttpRequest request = new HttpRequest(url + carNumber);
request.header("api-appid", appid);
request.header("api-timestamp", timestamp);
request.header("api-nonce", nonce);
request.header("api-signature", signature);
HttpResponse response = request.timeout(3 * 1000).execute();
if (response.isOk()) {
String body = response.body();
JSONObject result = JSONObject.parseObject(body);
if (!result.getBoolean("success")) {
String msg = result.getString("msg");
throw new BizException(ErrorType.BIZ_ERROR, "请求黄石公安车主数据接口失败:", msg);
} else {
String imgs = result.getString("result");
List<String> imgList = JSONObject.parseArray(imgs, String.class);
return imgList;
}
} else {
log.error("请求黄石公安车主数据接口异常: HttpStatus={}", response.getStatus());
throw new BizException(ErrorType.BIZ_ERROR, "请求黄石公安车主数据接口异常,HttpStatus=" + response.getStatus());
}
}
public static void main(String[] args) {
List<String> list = Arrays.asList(
"BWJ955",
"BD4928",
"B6QZ56",
"B32615",
"B5CM10",
"B6AZ81",
"B1P507",
"B6CH89",
"B6VB03",
"B1V532"
);
List<String> dataList = Arrays.asList(
"鄂B6XW57",
"鄂BWF015",
"鄂B8A551",
"鄂BBN890",
"鄂B8VW39",
"鄂B84575",
"鄂BW9297",
"鄂BCM977",
"鄂B8Q563",
"鄂B8HX91",
"鄂BAX255",
"鄂B8JM50",
"鄂B87153",
"鄂BDT566",
"鄂B09858",
"鄂B1NL17",
"鄂BWH932",
"鄂B2N456",
"鄂BAS719",
"鄂B1HB75",
"鄂BZ6611",
"鄂B8FW84",
"鄂BAS388",
"鄂B0UU99",
"鄂B1R101",
"鄂B8V809",
"鄂B8ME58",
"鄂B5A020",
"鄂BBX901",
"鄂B8JH51"
);
List<String> noDataList = Lists.newArrayList();
List<String> hasDataList = Lists.newArrayList();
for(String carNumber:dataList){
List<String> picInfo = getPoliceCarPicInfo(carNumber);
if(CollectionUtils.isEmpty(picInfo)){
noDataList.add(carNumber);
}else{
hasDataList.add(carNumber);
System.out.println(JSONObject.toJSONString(picInfo));
}
}
System.out.println("no data ======"+noDataList.toString());
System.out.println("has data ======"+hasDataList.toString());
}
}