@@ -0,0 +1,246 @@ | |||
package cn.com.taiji.core.manager.tools; | |||
import java.io.UnsupportedEncodingException; | |||
public class HexUtils { | |||
/** | |||
* 用于建立十六进制字符的输出的大写字符数组 | |||
*/ | |||
private static final char[] DIGITS_UPPER = { '0', '1', '2', '3', '4', '5', | |||
'6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; | |||
/** | |||
* 将一个ASCII字符串转成HEX字符串,限定长度 | |||
* | |||
* @param strAsci | |||
* @param nLen | |||
* 长度限定,不足的补字符0 | |||
* @return | |||
* @throws UnsupportedEncodingException | |||
*/ | |||
public static String AsciToHexString(String strAsci, int nLen) { | |||
String s = String.valueOf(strAsci); | |||
byte[] bytes = null; | |||
try { | |||
bytes = s.getBytes("GBK"); | |||
} catch (UnsupportedEncodingException e) { | |||
// TODO Auto-generated catch block | |||
e.printStackTrace(); | |||
}// e4baac413132333435000000 | |||
String strResult = HexToString(bytes); | |||
int strLen = strResult.length(); | |||
if (strLen >= nLen) { | |||
strResult = strResult.substring(0, nLen); | |||
} else { | |||
int nAddLen = nLen - strLen; | |||
for (int i = 0; i < nAddLen; i++) | |||
strResult += "0"; | |||
} | |||
return strResult; | |||
} | |||
/** | |||
* 将十六进制字符串转换为ASCII字符串 | |||
* | |||
* @param hexStr 十六进制字符串 | |||
* @param charset 字符集,例如 "GBK" 或 "UTF-8" | |||
* @return 转换后的ASCII字符串 | |||
* @throws UnsupportedEncodingException 如果不支持指定的字符集 | |||
*/ | |||
public static String HexToAsciString(String hexStr, String charset) throws UnsupportedEncodingException { | |||
// 处理空字符串 | |||
if (hexStr == null || hexStr.isEmpty()) { | |||
return ""; | |||
} | |||
// 将十六进制字符串转换为字节数组 | |||
int len = hexStr.length(); | |||
byte[] bytes = new byte[len / 2]; | |||
for (int i = 0; i < len; i += 2) { | |||
bytes[i / 2] = (byte) ((Character.digit(hexStr.charAt(i), 16) << 4) | |||
+ Character.digit(hexStr.charAt(i + 1), 16)); | |||
} | |||
// 将字节数组转换为原始的ASCII字符串 | |||
return new String(bytes, charset); | |||
} | |||
/** | |||
* 将十六进制字符串转换为整数 | |||
* | |||
* @param hexStr 十六进制字符串 | |||
* @return 转换后的整数 | |||
*/ | |||
public static Integer HexStringToInteger(String hexStr) { | |||
if (hexStr == null || hexStr.isEmpty()) { | |||
return 0; | |||
} | |||
return Integer.parseInt(hexStr, 16); // 将十六进制字符串转换为整数 | |||
} | |||
/** | |||
* 将十六进制字符串转换为整数 | |||
* | |||
* @param hexStr 十六进制字符串 | |||
* @return 转换后的整数 | |||
*/ | |||
public static Double HexStringToDouble(String hexStr) { | |||
if (hexStr == null || hexStr.isEmpty()) { | |||
return (double) 0; | |||
} | |||
return Double.parseDouble(hexStr); // 将十六进制字符串转换为整数 | |||
} | |||
/** | |||
* int传hex,高位补零 | |||
* | |||
* @param str | |||
* @param nLen | |||
* @return | |||
*/ | |||
public static String IntegerToHexString(Integer num, int nLen) { | |||
if (null == num) { | |||
String str = ""; | |||
for (int i = 0; i < nLen; i++) { | |||
str += "0"; | |||
} | |||
return str; | |||
} | |||
return HighAddZero(Integer.toHexString(num), nLen); | |||
} | |||
/** | |||
* double传hex,高位补零 | |||
* | |||
* @param num | |||
* @param nLen | |||
* @return | |||
*/ | |||
public static String DoubleToHexString(Double num, int nLen) { | |||
if (null == num) { | |||
String str = ""; | |||
for (int i = 0; i < nLen; i++) { | |||
str += "0"; | |||
} | |||
return str; | |||
} | |||
return HighAddZero(Double.toHexString(num), nLen); | |||
} | |||
/** | |||
* 高位补零 | |||
* | |||
* @param str | |||
* @param nLen | |||
* @return | |||
*/ | |||
public static String HighAddZero(String str, int nLen) { | |||
int length = str.length(); | |||
int nAddLen = nLen - length; | |||
if (length > nLen) { | |||
str = str.substring(0, nLen); | |||
} else { | |||
for (int i = 0; i < nAddLen; i++) { | |||
str = "0" + str; | |||
} | |||
} | |||
return str; | |||
} | |||
public static String HexToString(byte[] inHex) { | |||
byte i; | |||
StringBuilder strResult = new StringBuilder(); | |||
strResult.append(""); | |||
for (i = 0; i < inHex.length; i++) { | |||
strResult.append(String | |||
.valueOf(DIGITS_UPPER[(0xF0 & inHex[i]) >>> 4])); | |||
strResult.append(String.valueOf(DIGITS_UPPER[inHex[i] & 0x0F])); | |||
} | |||
return strResult.toString(); | |||
} | |||
/** | |||
* 16进制字符串转成ASCII字符串 | |||
* | |||
* @param strHex | |||
* 16进制字符串 | |||
* @return | |||
*/ | |||
public static String HexToAsciiString(String strHex) { | |||
byte[] bytes = StringToBytes(strHex); | |||
int i = 0; | |||
for (i = 0; i < bytes.length; i++) { | |||
if (bytes[i] == 0) | |||
break; | |||
} | |||
String strAsci = ""; | |||
try { | |||
strAsci = new String(bytes, 0, i, "GBK"); | |||
} catch (UnsupportedEncodingException e) { | |||
strAsci = ""; | |||
} | |||
return strAsci; | |||
} | |||
/** | |||
* 将字符串转成byte[] | |||
* | |||
* @param str | |||
* @return | |||
*/ | |||
private static byte[] StringToBytes(String str) { | |||
int nLen = str.length(); | |||
byte bytes[] = new byte[str.length() / 2]; | |||
for (int i = 0; i < nLen / 2; i++) { | |||
bytes[i] = StringToByte(str.substring(i * 2, i * 2 + 2)); | |||
} | |||
return bytes; | |||
} | |||
/** | |||
* 2个字符十六进制字符串转成byte | |||
* | |||
* @param str | |||
* @return | |||
*/ | |||
private static byte StringToByte(String str) { | |||
return (byte) Integer.parseInt(str, 16); | |||
} | |||
public static void main(String[] args) throws UnsupportedEncodingException { | |||
String hexString = "573FFF5B07055BBF4EB9F35A45454545370000000000000100002E120E0402001A0000054C53564646363652000000000000000034313630393800000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"; | |||
hexString = "B9F35A45454545390000000000000100002E120E0402001A0000054C53564646363652000000000000000034313630393800000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"; | |||
String vehiclePlateStr = hexString.substring(0, 24); | |||
String vehiclePlateColorStr = hexString.substring(24, 28); | |||
String collectionTypeStr = hexString.substring(28, 30); | |||
String userTypeStr = hexString.substring(30, 32); | |||
String carLongStr = hexString.substring(32, 36); | |||
String carWidthStr = hexString.substring(36, 38); | |||
String carHeightStr = hexString.substring(38, 40); | |||
String wheelsCountStr = hexString.substring(40, 42); | |||
String axleCountStr = hexString.substring(42, 44); | |||
String axleDistanceStr = hexString.substring(44, 48); | |||
String approvedCountStr = hexString.substring(48, 54); | |||
String vinStr = hexString.substring(54, 86); | |||
String engineNumberStr = hexString.substring(86, 118); | |||
String vehiclePlate = HexToAsciString(vehiclePlateStr, "GBK"); | |||
Integer vehiclePlateColor = HexStringToInteger(vehiclePlateColorStr); | |||
Integer collectionType = HexStringToInteger(collectionTypeStr); | |||
Integer userType = HexStringToInteger(userTypeStr); | |||
Integer carLong = HexStringToInteger(carLongStr) * 100; | |||
Integer carWidth = HexStringToInteger(carWidthStr) * 100; | |||
Integer carHeight = HexStringToInteger(carHeightStr) * 100; | |||
Integer wheelsCount = HexStringToInteger(wheelsCountStr); | |||
Integer axleCount = HexStringToInteger(axleCountStr); | |||
Integer axleDistance = HexStringToInteger(axleDistanceStr) * 100; | |||
Integer approvedCount = HexStringToInteger(approvedCountStr); | |||
String engineNumber = HexUtils.HexToAsciString(engineNumberStr, "GBK"); | |||
System.out.println(vehiclePlate); | |||
System.out.println(vehiclePlateColor); | |||
} | |||
} |
@@ -1,136 +0,0 @@ | |||
package cn.com.taiji.core.model.comm.protocol; | |||
import org.bouncycastle.crypto.digests.SM3Digest; | |||
import org.bouncycastle.crypto.macs.HMac; | |||
import org.bouncycastle.crypto.params.KeyParameter; | |||
import org.bouncycastle.jce.provider.BouncyCastleProvider; | |||
import org.bouncycastle.pqc.math.linearalgebra.ByteUtils; | |||
import java.io.UnsupportedEncodingException; | |||
import java.security.Security; | |||
import java.util.Arrays; | |||
public class SM3Utils { | |||
private static final String ENCODING = "UTF-8"; | |||
static { | |||
Security.addProvider(new BouncyCastleProvider()); | |||
} | |||
/** | |||
* sm3算法加密 | |||
* | |||
* @param paramStr 待加密字符串 | |||
* @return 返回加密后,固定长度=32的16进制字符串 | |||
* @explain | |||
*/ | |||
public static String encrypt(String paramStr) { | |||
// 将返回的hash值转换成16进制字符串 | |||
String resultHexString = ""; | |||
try { | |||
// 将字符串转换成byte数组 | |||
byte[] srcData = paramStr.getBytes(ENCODING); | |||
// 调用hash() | |||
byte[] resultHash = hash(srcData); | |||
// 将返回的hash值转换成16进制字符串 | |||
// 将返回的hash值转化为string类型的字符串 | |||
resultHexString = ByteUtils.toHexString(resultHash); | |||
} catch (UnsupportedEncodingException e) { | |||
e.printStackTrace(); | |||
} | |||
return resultHexString; | |||
} | |||
/** | |||
* 返回长度=32的byte数组 | |||
* | |||
* @param srcData | |||
* @return | |||
* @explain 生成对应的hash值 | |||
*/ | |||
public static byte[] hash(byte[] srcData) { | |||
SM3Digest digest = new SM3Digest(); | |||
digest.update(srcData, 0, srcData.length); | |||
byte[] hash = new byte[digest.getDigestSize()]; | |||
digest.doFinal(hash, 0); | |||
return hash; | |||
} | |||
/** | |||
* sm3算法加密 | |||
* | |||
* @param paramStr 待加密字符串 | |||
* @param key 密钥 | |||
* @return 返回加密后,固定长度=32的16进制字符串 | |||
* @explain | |||
*/ | |||
public static String encryptPlus(String paramStr, String key) { | |||
// 将返回的hash值转换成16进制字符串 | |||
String resultHexString = ""; | |||
try { | |||
// 将字符串转换成byte数组 | |||
byte[] srcData = paramStr.getBytes(ENCODING); | |||
// 调用hash() | |||
byte[] resultHash = hmac(key.getBytes(ENCODING), srcData); | |||
// 将返回的hash值转换成16进制字符串 | |||
resultHexString = ByteUtils.toHexString(resultHash); | |||
} catch (UnsupportedEncodingException e) { | |||
e.printStackTrace(); | |||
} | |||
return resultHexString; | |||
} | |||
/** | |||
* 通过密钥进行加密 | |||
* | |||
* @param key 密钥 | |||
* @param srcData 被加密的byte数组 | |||
* @return | |||
* @explain 指定密钥进行加密 | |||
*/ | |||
public static byte[] hmac(byte[] key, byte[] srcData) { | |||
KeyParameter keyParameter = new KeyParameter(key); | |||
SM3Digest digest = new SM3Digest(); | |||
HMac mac = new HMac(digest); | |||
mac.init(keyParameter); | |||
mac.update(srcData, 0, srcData.length); | |||
byte[] result = new byte[mac.getMacSize()]; | |||
mac.doFinal(result, 0); | |||
return result; | |||
} | |||
/** | |||
* 判断源数据与加密数据是否一致 | |||
* | |||
* @param srcStr 原字符串 | |||
* @param sm3HexString 16进制字符串 | |||
* @return 校验结果 | |||
* @explain 通过验证原数组和生成的hash数组是否为同一数组,验证2者是否为同一数据 | |||
*/ | |||
public static boolean verify(String srcStr, String sm3HexString) { | |||
boolean flag = false; | |||
try { | |||
byte[] srcData = srcStr.getBytes(ENCODING); | |||
byte[] sm3Hash = ByteUtils.fromHexString(sm3HexString); | |||
byte[] newHash = hash(srcData); | |||
if (Arrays.equals(newHash, sm3Hash)) { | |||
flag = true; | |||
} | |||
} catch (UnsupportedEncodingException e) { | |||
e.printStackTrace(); | |||
} | |||
return flag; | |||
} | |||
public static void main(String[] args) { | |||
String str = "123"; | |||
//秘钥 | |||
String key = "WVdSdGFXNHdNREZmTWpBeU16QTRNRE09"; | |||
String hexPls = SM3Utils.encryptPlus(str, key).toUpperCase(); | |||
String hex = SM3Utils.encrypt(str); | |||
System.out.println("参数:" + str); | |||
System.out.println("密文:" + hexPls); | |||
System.out.println("密文:" + hex); | |||
} | |||
} |
@@ -1,6 +1,7 @@ | |||
package cn.com.taiji.core.model.comm.protocol; | |||
import cn.com.taiji.common.model.BaseModel; | |||
import cn.com.taiji.core.manager.tools.encryption.SM3Utils; | |||
import com.fasterxml.jackson.annotation.JsonIgnore; | |||
import lombok.Getter; | |||
import lombok.Setter; |
@@ -1,14 +1,51 @@ | |||
package cn.com.taiji.core.model.comm.protocol.inss; | |||
import cn.com.taiji.common.manager.ManagerException; | |||
import cn.com.taiji.core.manager.tools.HexUtils; | |||
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeResponse; | |||
import com.fasterxml.jackson.annotation.JsonProperty; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
import java.io.UnsupportedEncodingException; | |||
@Getter | |||
@Setter | |||
public class VfjGetVehInfoClearResponse extends AbstractSignTypeResponse { | |||
@JsonProperty(value = "ClearData") | |||
private String clearData; | |||
private String vehiclePlate; | |||
private String vin; | |||
private String engineNumber; | |||
private Integer vehiclePlateColor; | |||
private Integer collectionType; | |||
private Integer userType; | |||
private Integer carLong; | |||
private Integer carWidth; | |||
private Integer carHeight; | |||
private Integer wheelsCount; | |||
private Integer axleCount; | |||
private Integer axleDistance; | |||
private Integer approvedCount; | |||
public VfjGetVehInfoClearResponse decryptVehicleInfo() throws UnsupportedEncodingException { | |||
String hexString = this.clearData; | |||
this.setVehiclePlate(HexUtils.HexToAsciString(hexString.substring(0, 24), "GBK")); | |||
this.setVehiclePlateColor(HexUtils.HexStringToInteger(hexString.substring(24, 28))); | |||
this.setCollectionType(HexUtils.HexStringToInteger(hexString.substring(28, 30))); | |||
this.setUserType(HexUtils.HexStringToInteger(hexString.substring(30, 32))); | |||
this.setCarLong(HexUtils.HexStringToInteger(hexString.substring(32, 36)) * 100); | |||
this.setCarWidth(HexUtils.HexStringToInteger(hexString.substring(36, 38)) * 100); | |||
this.setCarHeight(HexUtils.HexStringToInteger(hexString.substring(38, 40)) * 100); | |||
this.setWheelsCount(HexUtils.HexStringToInteger(hexString.substring(40, 42))); | |||
this.setAxleCount(HexUtils.HexStringToInteger(hexString.substring(42, 44))); | |||
this.setAxleDistance(HexUtils.HexStringToInteger(hexString.substring(44, 48)) * 100); | |||
this.setApprovedCount(HexUtils.HexStringToInteger(hexString.substring(48, 54))); | |||
this.setVin(HexUtils.HexToAsciString(hexString.substring(54, 86), "GBK")); | |||
this.setEngineNumber(HexUtils.HexToAsciString(hexString.substring(86, 118), "GBK")); | |||
return this; | |||
} | |||
} |
@@ -16,6 +16,7 @@ public class VfjServiceHandler extends AbstractInssServiceHandler<InssServiceCmd | |||
public VfjServiceHandler() { | |||
super(InssServiceType.VFJ); | |||
} | |||
@Autowired | |||
private VfjBatchApplyManager vfjBatchApplyManager; | |||
@Autowired | |||
@@ -54,6 +55,18 @@ public class VfjServiceHandler extends AbstractInssServiceHandler<InssServiceCmd | |||
private VfjInit4PurchaseCappManager vfjInit4PurchaseCappManager; | |||
@Autowired | |||
private VfjConfrim4PurchaseCappManager vfjConfrim4PurchaseCappManager; | |||
@Autowired | |||
private VfjUpdateFile0019Manager vfjUpdateFile0019Manager; | |||
@Autowired | |||
private VfjUpdateFile001AManager vfjUpdateFile001AManager; | |||
@Autowired | |||
private VfjUpdateFile000EManager vfjUpdateFile000EManager; | |||
@Autowired | |||
private VfjUpdateFile000FManager vfjUpdateFile000FManager; | |||
@Autowired | |||
private VfjApp4PinBlockManager vfjApp4PinBlockManager; | |||
@Autowired | |||
private VfjConfirm4PinBlockManager vfjConfirm4PinBlockManager; | |||
@Override | |||
protected <T extends AbstractSignTypeRequest<?>> AbstractSignTypeResponse handleInternal(T request, SignJsonRequest jsonReq, AbstractHttpRequestInfo reqInfo) throws ServiceHandleException { | |||
@@ -98,11 +111,17 @@ public class VfjServiceHandler extends AbstractInssServiceHandler<InssServiceCmd | |||
case CONFRIM4PURCHASECAPP: | |||
return vfjConfrim4PurchaseCappManager.serviceHandle(cmd, (VfjConfrim4PurchaseCappRequest) request); | |||
case UPDATEFILE0019: | |||
return vfjUpdateFile0019Manager.serviceHandle(cmd, (VfjUpdateFile0019Request) request); | |||
case UPDATEFILE001A: | |||
return vfjUpdateFile001AManager.serviceHandle(cmd, (VfjUpdateFile001ARequest) request); | |||
case UPDATEFILE000E: | |||
return vfjUpdateFile000EManager.serviceHandle(cmd, (VfjUpdateFile000ERequest) request); | |||
case UPDATEFILE000F: | |||
return vfjUpdateFile000FManager.serviceHandle(cmd, (VfjUpdateFile000FRequest) request); | |||
case APP4PINBLOCK: | |||
return vfjApp4PinBlockManager.serviceHandle(cmd, (VfjApp4PinBlockRequest) request); | |||
case CONFIRM4PINBLOCK: | |||
return vfjConfirm4PinBlockManager.serviceHandle(cmd, (VfjConfirm4PinBlockRequest) request); | |||
case QRYCARDBATCH: | |||
case QRYCARDS: | |||
case QRYSMOBUBATCH: |
@@ -1,16 +1,13 @@ | |||
package cn.com.taiji.inss.manager.vfj; | |||
import cn.com.taiji.common.manager.AbstractManager; | |||
import cn.com.taiji.common.manager.ManagerException; | |||
import cn.com.taiji.common.manager.net.http.HttpClientHelper; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.common.model.BaseModel; | |||
import cn.com.taiji.common.pub.EncodeTool; | |||
import cn.com.taiji.common.pub.json.JsonTools; | |||
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeResponse; | |||
import cn.com.taiji.core.model.comm.protocol.SignServiceCommand; | |||
import cn.com.taiji.core.model.comm.protocol.inss.InssServiceCmd; | |||
import cn.com.taiji.core.model.comm.protocol.inss.VfjBatchApplyRequest; | |||
import cn.com.taiji.core.model.comm.protocol.inss.VfjStartUpRequest; | |||
import cn.com.taiji.core.model.comm.protocol.inss.VfjStartUpResponse; | |||
import cn.com.taiji.core.model.comm.protocol.valid.GlyServiceError; | |||
@@ -40,7 +37,7 @@ public abstract class AbstractHandleManager extends AbstractManager { | |||
private final SM2 sm2 = new SM2(vfjConfig.getClientPrivateKey(), vfjConfig.getServerPublicKey()); | |||
public String getSessionId(InssServiceCmd cmd) throws ServiceHandleException { | |||
private String getSessionId(InssServiceCmd cmd) throws ServiceHandleException { | |||
if (cmd == InssServiceCmd.REGISTRY) | |||
return "0000000000000000"; | |||
if (cmd == InssServiceCmd.STARTUP) | |||
@@ -71,7 +68,7 @@ public abstract class AbstractHandleManager extends AbstractManager { | |||
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("接口错误:" + vfjResponse.getMsg()); | |||
} | |||
} catch (IOException e) { | |||
logger.info("{}", e); | |||
logger.error(e.getMessage(), e); | |||
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("接口错误:网络异常!"); | |||
} | |||
} | |||
@@ -81,15 +78,14 @@ public abstract class AbstractHandleManager extends AbstractManager { | |||
try { | |||
return JsonTools.json2Object(responseStr, resClass); | |||
} catch (IOException e) { | |||
logger.error(e.getMessage(), e); | |||
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("接口错误:VFJ接口返回值格式错误!"); | |||
} | |||
} | |||
private String getTermTrace() { | |||
// long termTrace = redisWrapManager.increment(VFJ_TERM_TRACE,1); | |||
// return termTrace; | |||
return ""; | |||
long termTrace = redisWrapManager.increment(VFJ_TERM_TRACE, 1); | |||
if (termTrace > 99999999) redisWrapManager.set(VFJ_TERM_TRACE, "1", 1, TimeUnit.DAYS); | |||
return ("00000000" + termTrace).substring(0, 8); | |||
} | |||
} |
@@ -0,0 +1,12 @@ | |||
package cn.com.taiji.inss.manager.vfj; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.core.model.comm.protocol.inss.*; | |||
import org.springframework.stereotype.Service; | |||
@Service | |||
public class VfjApp4PinBlockManager extends AbstractHandleManager{ | |||
public VfjApp4PinBlockResponse serviceHandle(InssServiceCmd cmd, VfjApp4PinBlockRequest request) throws ServiceHandleException { | |||
return excute(cmd, request, VfjApp4PinBlockResponse.class); | |||
} | |||
} |
@@ -0,0 +1,12 @@ | |||
package cn.com.taiji.inss.manager.vfj; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.core.model.comm.protocol.inss.*; | |||
import org.springframework.stereotype.Service; | |||
@Service | |||
public class VfjConfirm4PinBlockManager extends AbstractHandleManager{ | |||
public VfjConfirm4PinBlockResponse serviceHandle(InssServiceCmd cmd, VfjConfirm4PinBlockRequest request) throws ServiceHandleException { | |||
return excute(cmd, request, VfjConfirm4PinBlockResponse.class); | |||
} | |||
} |
@@ -2,11 +2,19 @@ package cn.com.taiji.inss.manager.vfj; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.core.model.comm.protocol.inss.*; | |||
import cn.com.taiji.core.model.comm.protocol.valid.GlyServiceError; | |||
import org.springframework.stereotype.Service; | |||
import java.io.UnsupportedEncodingException; | |||
@Service | |||
public class VfjGetVehInfoClearManager extends AbstractHandleManager{ | |||
public class VfjGetVehInfoClearManager extends AbstractHandleManager { | |||
public VfjGetVehInfoClearResponse serviceHandle(InssServiceCmd cmd, VfjGetVehInfoClearRequest request) throws ServiceHandleException { | |||
return excute(cmd, request, VfjGetVehInfoClearResponse.class); | |||
try { | |||
return excute(cmd, request, VfjGetVehInfoClearResponse.class).decryptVehicleInfo(); | |||
} catch (UnsupportedEncodingException e) { | |||
logger.error(e.getMessage(), e); | |||
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("接口错误:返回值解析错误" + e.getMessage()); | |||
} | |||
} | |||
} |
@@ -0,0 +1,12 @@ | |||
package cn.com.taiji.inss.manager.vfj; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.core.model.comm.protocol.inss.*; | |||
import org.springframework.stereotype.Service; | |||
@Service | |||
public class VfjUpdateFile000EManager extends AbstractHandleManager{ | |||
public VfjUpdateFile000EResponse serviceHandle(InssServiceCmd cmd, VfjUpdateFile000ERequest request) throws ServiceHandleException { | |||
return excute(cmd, request, VfjUpdateFile000EResponse.class); | |||
} | |||
} |
@@ -0,0 +1,12 @@ | |||
package cn.com.taiji.inss.manager.vfj; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.core.model.comm.protocol.inss.*; | |||
import org.springframework.stereotype.Service; | |||
@Service | |||
public class VfjUpdateFile000FManager extends AbstractHandleManager{ | |||
public VfjUpdateFile000FResponse serviceHandle(InssServiceCmd cmd, VfjUpdateFile000FRequest request) throws ServiceHandleException { | |||
return excute(cmd, request, VfjUpdateFile000FResponse.class); | |||
} | |||
} |
@@ -0,0 +1,12 @@ | |||
package cn.com.taiji.inss.manager.vfj; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.core.model.comm.protocol.inss.*; | |||
import org.springframework.stereotype.Service; | |||
@Service | |||
public class VfjUpdateFile0019Manager extends AbstractHandleManager{ | |||
public VfjUpdateFile0019Response serviceHandle(InssServiceCmd cmd, VfjUpdateFile0019Request request) throws ServiceHandleException { | |||
return excute(cmd, request, VfjUpdateFile0019Response.class); | |||
} | |||
} |
@@ -0,0 +1,12 @@ | |||
package cn.com.taiji.inss.manager.vfj; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.core.model.comm.protocol.inss.*; | |||
import org.springframework.stereotype.Service; | |||
@Service | |||
public class VfjUpdateFile001AManager extends AbstractHandleManager{ | |||
public VfjUpdateFile001AResponse serviceHandle(InssServiceCmd cmd, VfjUpdateFile001ARequest request) throws ServiceHandleException { | |||
return excute(cmd, request, VfjUpdateFile001AResponse.class); | |||
} | |||
} |