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 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 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 list = Arrays.asList( "BWJ955", "BD4928", "B6QZ56", "B32615", "B5CM10", "B6AZ81", "B1P507", "B6CH89", "B6VB03", "B1V532" ); List 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 noDataList = Lists.newArrayList(); List hasDataList = Lists.newArrayList(); for(String carNumber:dataList){ List 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()); } }