Compare commits
4 Commits
dc81a17b9c
...
2c82a2c8a3
Author | SHA1 | Date |
---|---|---|
Kane Wang | 2c82a2c8a3 | |
Kane Wang | 805f6985cb | |
Kane Wang | 9aedc877bb | |
Kane Wang | dce9bfd3ea |
|
@ -1,3 +1,4 @@
|
|||
{
|
||||
"java.configuration.updateBuildConfiguration": "interactive"
|
||||
"java.configuration.updateBuildConfiguration": "automatic",
|
||||
"java.compile.nullAnalysis.mode": "automatic"
|
||||
}
|
|
@ -3,7 +3,7 @@
|
|||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>com.cpic.xim</groupId>
|
||||
<artifactId>desktop_archievement_backend</artifactId>
|
||||
<artifactId>NewCitizen</artifactId>
|
||||
<packaging>war</packaging>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<name>desktop_archievement_backend Maven Webapp</name>
|
||||
|
@ -11,8 +11,8 @@
|
|||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<maven.compiler.source>17</maven.compiler.source>
|
||||
<maven.compiler.target>17</maven.compiler.target>
|
||||
<maven.compiler.source>8</maven.compiler.source>
|
||||
<maven.compiler.target>8</maven.compiler.target>
|
||||
<spring.version>5.3.24</spring.version>
|
||||
<!-- <spring.version>6.0.8</spring.version> -->
|
||||
</properties>
|
||||
|
@ -92,9 +92,35 @@
|
|||
<artifactId>ojdbc8</artifactId>
|
||||
<version>19.3.0.0.0</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.shiro</groupId>
|
||||
<artifactId>shiro-all</artifactId>
|
||||
<version>1.11.0</version>
|
||||
<type>pom</type>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.httpcomponents</groupId>
|
||||
<artifactId>httpclient</artifactId>
|
||||
<version>4.5.14</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.httpcomponents</groupId>
|
||||
<artifactId>httpcore</artifactId>
|
||||
<version>4.4.5</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-lang3</artifactId>
|
||||
<version>3.7</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
<build>
|
||||
<finalName>desktop_archievement_backend</finalName>
|
||||
<finalName>NewCitizen</finalName>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
|
@ -114,8 +140,8 @@
|
|||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.8.1</version>
|
||||
<configuration>
|
||||
<source>17</source>
|
||||
<target>17</target>
|
||||
<source>8</source>
|
||||
<target>8</target>
|
||||
<encoding>UTF-8</encoding>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
|
||||
package com.cpic.xim.utils.config;
|
||||
|
||||
public class EncryptionParameters
|
||||
{
|
||||
private static String SECRET_KEY = "9ILpXKFSHckH1g7h";
|
||||
private static String KEY = "2d716d5c7b35d5c0d41199eb0fd789ca";
|
||||
|
||||
public static String getSecretKey()
|
||||
{
|
||||
return EncryptionParameters.SECRET_KEY;
|
||||
}
|
||||
|
||||
public static String getKey()
|
||||
{
|
||||
return EncryptionParameters.KEY;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
|
||||
package com.cpic.xim.utils.newcitizen;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
public class IdentifyResult
|
||||
{
|
||||
public IdentifyResult() {}
|
||||
|
||||
public String getCitizenType()
|
||||
{
|
||||
return citizenType;
|
||||
}
|
||||
|
||||
public void setCitizenType( String citizenType )
|
||||
{
|
||||
this.citizenType = citizenType;
|
||||
}
|
||||
|
||||
public String getExpireDate()
|
||||
{
|
||||
return expireDate;
|
||||
}
|
||||
|
||||
public void setExpireDate( String expireDate )
|
||||
{
|
||||
this.expireDate = expireDate;
|
||||
}
|
||||
|
||||
public String getScore()
|
||||
{
|
||||
return score;
|
||||
}
|
||||
|
||||
public void setScore( String score )
|
||||
{
|
||||
this.score = score;
|
||||
}
|
||||
|
||||
@JsonProperty("citizentype")
|
||||
private String citizenType;
|
||||
|
||||
@JsonProperty("expiredate")
|
||||
private String expireDate;
|
||||
|
||||
@JsonProperty("score")
|
||||
private String score;
|
||||
}
|
|
@ -0,0 +1,181 @@
|
|||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-05-25 15:26:09
|
||||
* @LastEditors: Kane
|
||||
* @FilePath: /NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/newcitizen/NewCitizenUitls.java
|
||||
* @Description: 新市民认证相关的工具方法
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.utils.newcitizen;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import org.apache.http.HttpEntity;
|
||||
import org.apache.http.client.entity.UrlEncodedFormEntity;
|
||||
import org.apache.http.client.methods.CloseableHttpResponse;
|
||||
import org.apache.http.client.methods.HttpPost;
|
||||
import org.apache.http.impl.client.CloseableHttpClient;
|
||||
import org.apache.http.impl.client.HttpClients;
|
||||
import org.apache.http.message.BasicNameValuePair;
|
||||
import org.apache.http.util.EntityUtils;
|
||||
// import com.cdp.product.security.decode.CdpDecryptUtil;
|
||||
// import com.cdp.product.security.encode.EncryptionUtils;
|
||||
// import com.cdp.product.security.sign.CdpSignUtil;
|
||||
import com.cpic.xim.utils.security.encode.EncryptionUtils;
|
||||
import com.cpic.xim.utils.security.decode.DecryptionUtils;
|
||||
import com.cpic.xim.utils.security.sign.SignUtils;
|
||||
import com.cpic.xim.utils.config.EncryptionParameters;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.core.JsonParseException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
public class NewCitizenUitls
|
||||
{
|
||||
// 请求地址
|
||||
private static String identifyURL = "https://api.xmcic.cn:51888/government/economic/352";
|
||||
|
||||
/**
|
||||
* 新市民验证
|
||||
* @param idCardNo 身份证号码
|
||||
* @param name 姓名
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public static IdentifyResult identifyNewCitizen( String idCardNo, String name ) throws Exception
|
||||
{
|
||||
String secretKey = EncryptionParameters.getSecretKey();
|
||||
String key = EncryptionParameters.getKey();
|
||||
String pushURL = "http://222.76.244.118:11101/NewCitizen/save_score.do";
|
||||
|
||||
Map<String, String> param = new HashMap<String, String>();
|
||||
|
||||
param.put( "authorized", EncryptionUtils.aesEncrypt( "1", secretKey ) );
|
||||
param.put( "idcard", EncryptionUtils.aesEncrypt( idCardNo, secretKey ) );
|
||||
param.put( "name", EncryptionUtils.aesEncrypt( name, secretKey ) );
|
||||
param.put( "pushurl", EncryptionUtils.aesEncrypt( pushURL, secretKey ) );
|
||||
param.put( "timestamp",
|
||||
EncryptionUtils.aesEncrypt( System.currentTimeMillis() + "", secretKey ) );
|
||||
|
||||
String sign = SignUtils.sign( param );
|
||||
Map<String, String> params = new HashMap<>();
|
||||
|
||||
params.putAll( param );
|
||||
params.put( "key", key );
|
||||
params.put( "sign", sign );
|
||||
|
||||
String resultJSON = sendPost( identifyURL, params );
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
IdentifyResult identifyResult = null;
|
||||
ResponseResult response = null;
|
||||
|
||||
response = mapper.readValue( resultJSON, ResponseResult.class );
|
||||
|
||||
// 请求结果解密,应为一个json
|
||||
// 如果请求参数有误,data为null
|
||||
String identifyJSON = DecryptionUtils.aesDecrypt( response.getData(), secretKey );
|
||||
|
||||
if ( identifyJSON != null )
|
||||
{
|
||||
identifyResult = mapper.readValue( identifyJSON, IdentifyResult.class );
|
||||
}
|
||||
|
||||
return identifyResult;
|
||||
}
|
||||
|
||||
public static String sendPost( String url, Map<String, String> bodyMap )
|
||||
{
|
||||
HttpPost post = new HttpPost( url );
|
||||
|
||||
try
|
||||
{
|
||||
// 创建参数集合
|
||||
List<BasicNameValuePair> list = new ArrayList<>();
|
||||
// 添加参数
|
||||
if ( bodyMap != null )
|
||||
{
|
||||
for ( String str : bodyMap.keySet() )
|
||||
{
|
||||
list.add( new BasicNameValuePair( str, bodyMap.get( str ) ) );
|
||||
}
|
||||
}
|
||||
// 把参数放入请求对象,post发送的参数list,指定格式
|
||||
post.setEntity( new UrlEncodedFormEntity( list, "UTF-8" ) );
|
||||
CloseableHttpClient client = HttpClients.createDefault();
|
||||
// 启动执行请求,并获得返回值
|
||||
CloseableHttpResponse response = client.execute( post );
|
||||
// 得到返回的entity对象
|
||||
HttpEntity entity = response.getEntity();
|
||||
// 把实体对象转换为string
|
||||
return EntityUtils.toString( entity, "UTF-8" );
|
||||
}
|
||||
catch ( Exception e1 )
|
||||
{
|
||||
e1.printStackTrace();
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class ResponseResult
|
||||
{
|
||||
public ResponseResult()
|
||||
{}
|
||||
|
||||
public String getCode()
|
||||
{
|
||||
return code;
|
||||
}
|
||||
|
||||
public void setCode( String code )
|
||||
{
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public String getMessage()
|
||||
{
|
||||
return message;
|
||||
}
|
||||
|
||||
public void setMessage( String message )
|
||||
{
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public String getData()
|
||||
{
|
||||
return data;
|
||||
}
|
||||
|
||||
public void setData( String data )
|
||||
{
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
public String getSeqNo()
|
||||
{
|
||||
return seqNo;
|
||||
}
|
||||
|
||||
public void setSeqNo( String seqNo )
|
||||
{
|
||||
this.seqNo = seqNo;
|
||||
}
|
||||
|
||||
@JsonProperty( "code" )
|
||||
private String code;
|
||||
|
||||
@JsonProperty( "message" )
|
||||
private String message;
|
||||
|
||||
@JsonProperty( "data" )
|
||||
private String data;
|
||||
|
||||
@JsonProperty( "seqNo" )
|
||||
private String seqNo;
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-05-25 11:14:03
|
||||
* @LastEditors: Kane
|
||||
* @FilePath: /NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/decryption/DecryptionUtils.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.utils.security.decode;
|
||||
|
||||
import javax.crypto.Cipher;
|
||||
import javax.crypto.spec.IvParameterSpec;
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import java.util.Base64;
|
||||
import java.util.Base64.Decoder;
|
||||
|
||||
public class DecryptionUtils
|
||||
{
|
||||
public DecryptionUtils()
|
||||
{}
|
||||
|
||||
private static String aesDecryptByBytes( byte[] encryptBytes, String decryptKey )
|
||||
throws Exception
|
||||
{
|
||||
Cipher cipher = Cipher.getInstance( "AES/CBC/NoPadding" );
|
||||
SecretKeySpec keySpec = new SecretKeySpec( decryptKey.getBytes(), "AES" );
|
||||
IvParameterSpec ivSpec = new IvParameterSpec( decryptKey.getBytes() );
|
||||
|
||||
cipher.init( 2, keySpec, ivSpec );
|
||||
|
||||
byte[] decryptBytes = cipher.doFinal( encryptBytes );
|
||||
|
||||
String result = new String( decryptBytes );
|
||||
|
||||
if ( StringUtils.isNotBlank( result ) )
|
||||
{
|
||||
result = result.trim();
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static String aesDecrypt( String encryptStr, String decryptKey ) throws Exception
|
||||
{
|
||||
try
|
||||
{
|
||||
return StringUtils.isBlank( encryptStr ) ? null
|
||||
: aesDecryptByBytes( base64Decode( encryptStr ), decryptKey );
|
||||
}
|
||||
catch ( Exception var3 )
|
||||
{
|
||||
throw new Exception( "解密失败!" );
|
||||
}
|
||||
}
|
||||
|
||||
private static byte[] base64Decode( String base64Code ) throws Exception
|
||||
{
|
||||
Decoder decoder = Base64.getDecoder();
|
||||
byte[] buffer = decoder.decode( base64Code );
|
||||
|
||||
return StringUtils.isBlank( base64Code ) ? null : buffer;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,64 @@
|
|||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-05-25 11:13:17
|
||||
* @LastEditors: Kane
|
||||
* @FilePath: /NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/security/encode/EncryptionUtils.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.utils.security.encode;
|
||||
|
||||
// package com.cdp.product.security.encode;
|
||||
|
||||
import javax.crypto.Cipher;
|
||||
import javax.crypto.spec.IvParameterSpec;
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
import java.util.Base64;
|
||||
import java.util.Base64.Encoder;
|
||||
|
||||
public class EncryptionUtils
|
||||
{
|
||||
public EncryptionUtils()
|
||||
{}
|
||||
|
||||
private static byte[] aesEncryptToBytes( String content, String encryptKey ) throws Exception
|
||||
{
|
||||
Cipher cipher = Cipher.getInstance( "AES/CBC/NoPadding" );
|
||||
byte[] dataBytes = content.getBytes( "utf-8" );
|
||||
int blockSize = cipher.getBlockSize();
|
||||
int plaintextLength = dataBytes.length;
|
||||
|
||||
if ( plaintextLength % blockSize != 0 )
|
||||
{
|
||||
plaintextLength += blockSize - plaintextLength % blockSize;
|
||||
}
|
||||
|
||||
byte[] plaintext = new byte[plaintextLength];
|
||||
|
||||
SecretKeySpec keySpec = new SecretKeySpec( encryptKey.getBytes(), "AES" );
|
||||
IvParameterSpec ivSpec = new IvParameterSpec( encryptKey.getBytes() );
|
||||
|
||||
System.arraycopy( dataBytes, 0, plaintext, 0, dataBytes.length );
|
||||
|
||||
cipher.init( 1, keySpec, ivSpec );
|
||||
|
||||
return cipher.doFinal( plaintext );
|
||||
}
|
||||
|
||||
public static String aesEncrypt( String content, String encryptKey )
|
||||
throws Exception
|
||||
{
|
||||
try
|
||||
{
|
||||
Encoder encoder = Base64.getEncoder();
|
||||
String encode = encoder.encodeToString(aesEncryptToBytes( content, encryptKey ));
|
||||
|
||||
return encode;
|
||||
}
|
||||
catch ( Exception var3 )
|
||||
{
|
||||
throw new Exception( "加密失败!" );
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,82 @@
|
|||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-05-25 19:36:27
|
||||
* @LastEditors: Kane
|
||||
* @FilePath: /NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/security/sign/SignUtils.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.utils.security.sign;
|
||||
|
||||
import java.security.MessageDigest;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import java.util.Base64;
|
||||
import java.util.Base64.Encoder;
|
||||
|
||||
public class SignUtils
|
||||
{
|
||||
public SignUtils()
|
||||
{}
|
||||
|
||||
private static byte[] md5( byte[] bytes ) throws Exception
|
||||
{
|
||||
MessageDigest md = MessageDigest.getInstance( "MD5" );
|
||||
|
||||
md.update( bytes );
|
||||
|
||||
return md.digest();
|
||||
}
|
||||
|
||||
private static byte[] md5( String msg ) throws Exception
|
||||
{
|
||||
return StringUtils.isBlank( msg ) ? null : md5( msg.getBytes() );
|
||||
}
|
||||
|
||||
private static String md5Encrypt( String msg ) throws Exception
|
||||
{
|
||||
Encoder encoder = Base64.getEncoder();
|
||||
String encode = encoder.encodeToString(md5(msg));
|
||||
|
||||
return StringUtils.isBlank( msg ) ? null : encode;
|
||||
}
|
||||
|
||||
public static String sign( Map<String, String> param ) throws Exception
|
||||
{
|
||||
try
|
||||
{
|
||||
Set<String> paramKey = param.keySet();
|
||||
String[] strs =
|
||||
(String[]) (new ArrayList( paramKey )).toArray( new String[paramKey.size()] );
|
||||
Arrays.sort( strs );
|
||||
StringBuilder sb = new StringBuilder();
|
||||
String[] var4 = strs;
|
||||
int var5 = strs.length;
|
||||
|
||||
for ( int var6 = 0; var6 < var5; ++var6 )
|
||||
{
|
||||
String str = var4[var6];
|
||||
|
||||
sb.append( str ).append( "=" ).append( (String) param.get( str ) ).append( "&" );
|
||||
}
|
||||
|
||||
String result = sb.toString();
|
||||
|
||||
if ( StringUtils.isNotBlank( result ) && result.endsWith( "&" ) )
|
||||
{
|
||||
return md5Encrypt( result.substring( 0, result.length() - 1 ) );
|
||||
} else
|
||||
{
|
||||
throw new Exception( "未收到用于签名的参数,签名失败!" );
|
||||
}
|
||||
}
|
||||
catch ( Exception var8 )
|
||||
{
|
||||
throw new Exception( "签名失败!" );
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-05-25 15:17:49
|
||||
* @LastEditors: Kane
|
||||
* @FilePath: /NewCitizenQueryResult/src/main/java/com/cpic/xim/web/controllers/NewCitizen/IdentifyNewCitizenRequest.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.web.controllers.NewCitizen;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
public class IdentifyNewCitizenRequest
|
||||
{
|
||||
public IdentifyNewCitizenRequest() {}
|
||||
|
||||
public String getIdCardNo()
|
||||
{
|
||||
return idCardNo;
|
||||
}
|
||||
|
||||
public void setIdCardNo( String idCardNo )
|
||||
{
|
||||
this.idCardNo = idCardNo;
|
||||
}
|
||||
|
||||
public String getName()
|
||||
{
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName( String name )
|
||||
{
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
@JsonProperty("idcard_no")
|
||||
private String idCardNo;
|
||||
|
||||
@JsonProperty("name")
|
||||
private String name;
|
||||
}
|
|
@ -0,0 +1,82 @@
|
|||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-05-25 20:26:06
|
||||
* @LastEditors: Kane
|
||||
* @FilePath: /NewCitizenQueryResult/src/main/java/com/cpic/xim/web/controllers/NewCitizen/IdentifyNewCitizenResult.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.web.controllers.NewCitizen;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
public class IdentifyNewCitizenResponse
|
||||
{
|
||||
public IdentifyNewCitizenResponse() {}
|
||||
|
||||
public boolean isSuccess()
|
||||
{
|
||||
return success;
|
||||
}
|
||||
|
||||
public void setSuccess( boolean success )
|
||||
{
|
||||
this.success = success;
|
||||
}
|
||||
|
||||
public String getMessage()
|
||||
{
|
||||
return message;
|
||||
}
|
||||
|
||||
public void setMessage( String message )
|
||||
{
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public String getCitizenType()
|
||||
{
|
||||
return citizenType;
|
||||
}
|
||||
|
||||
public void setCitizenType( String citizenType )
|
||||
{
|
||||
this.citizenType = citizenType;
|
||||
}
|
||||
|
||||
public String getExpireDate()
|
||||
{
|
||||
return expireDate;
|
||||
}
|
||||
|
||||
public void setExpireDate( String expireDate )
|
||||
{
|
||||
this.expireDate = expireDate;
|
||||
}
|
||||
|
||||
public String getScore()
|
||||
{
|
||||
return score;
|
||||
}
|
||||
|
||||
public void setScore( String score )
|
||||
{
|
||||
this.score = score;
|
||||
}
|
||||
|
||||
@JsonProperty("success")
|
||||
private boolean success;
|
||||
|
||||
@JsonProperty("message")
|
||||
private String message;
|
||||
|
||||
@JsonProperty("citizentype")
|
||||
private String citizenType;
|
||||
|
||||
@JsonProperty("expiredate")
|
||||
private String expireDate;
|
||||
|
||||
@JsonProperty("score")
|
||||
private String score;
|
||||
}
|
|
@ -0,0 +1,60 @@
|
|||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-05-25 12:09:27
|
||||
* @LastEditors: Kane
|
||||
* @FilePath: /NewCitizenQueryResult/src/main/java/com/cpic/xim/web/controllers/NewCitizen/QueryResultController.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
|
||||
package com.cpic.xim.web.controllers.NewCitizen;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
import com.cpic.xim.utils.newcitizen.*;
|
||||
|
||||
// 9ILpXKFSHckH1g7h
|
||||
|
||||
@Controller
|
||||
public class QueryResultController
|
||||
{
|
||||
@RequestMapping("/save_score.do")
|
||||
public void saveQueryResult(HttpServletResponse response, @RequestBody QueryResultRequest result )
|
||||
{
|
||||
response.setStatus(HttpServletResponse.SC_OK);
|
||||
}
|
||||
|
||||
@RequestMapping("/identify.do")
|
||||
@ResponseBody
|
||||
public IdentifyNewCitizenResponse identifyNewCitizen(@RequestBody IdentifyNewCitizenRequest request )
|
||||
{
|
||||
String idCardNo = request.getIdCardNo();
|
||||
String name = request.getName();
|
||||
IdentifyResult result = null;
|
||||
IdentifyNewCitizenResponse response = new IdentifyNewCitizenResponse();
|
||||
try
|
||||
{
|
||||
result = NewCitizenUitls.identifyNewCitizen(idCardNo, name);
|
||||
|
||||
response.setSuccess(true);
|
||||
response.setMessage("调用成功");
|
||||
response.setCitizenType(result.getCitizenType());
|
||||
response.setScore(result.getScore());
|
||||
response.setExpireDate(result.getExpireDate());
|
||||
}
|
||||
catch ( Exception error )
|
||||
{
|
||||
System.out.println( error.getMessage() );
|
||||
|
||||
response.setSuccess(false);
|
||||
response.setMessage(error.getMessage());
|
||||
}
|
||||
|
||||
return response;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
|
||||
package com.cpic.xim.web.controllers.NewCitizen;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
public class QueryResultRequest
|
||||
{
|
||||
public QueryResultRequest() {}
|
||||
|
||||
|
||||
public String getIdCardMD5()
|
||||
{
|
||||
return idCardMD5;
|
||||
}
|
||||
|
||||
public void setIdCardMD5( String idCardMD5 )
|
||||
{
|
||||
this.idCardMD5 = idCardMD5;
|
||||
}
|
||||
|
||||
public String getScore()
|
||||
{
|
||||
return score;
|
||||
}
|
||||
|
||||
public void setScore( String score )
|
||||
{
|
||||
this.score = score;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@JsonProperty("idcardmd5")
|
||||
private String idCardMD5;
|
||||
|
||||
@JsonProperty("score")
|
||||
private String score;
|
||||
}
|
|
@ -7,16 +7,8 @@
|
|||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-02-28 22:52:32
|
||||
* @LastEditors: Kane
|
||||
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/filters/cros/CrosFilter.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.web.filters.cros;
|
||||
|
||||
package com.cpic.xim.web.filters;
|
||||
|
||||
import java.io.IOException;
|
||||
import javax.servlet.Filter;
|
||||
|
|
|
@ -18,10 +18,6 @@
|
|||
<servlet-name>springmvc</servlet-name>
|
||||
<url-pattern>*.do</url-pattern>
|
||||
</servlet-mapping>
|
||||
<servlet-mapping>
|
||||
<servlet-name>springmvc</servlet-name>
|
||||
<url-pattern>/account/p13_account_check</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
<filter>
|
||||
<filter-name>CrosFilter</filter-name>
|
||||
|
|
|
@ -12,12 +12,41 @@
|
|||
package com.cpic.xim.test;
|
||||
|
||||
import org.junit.Test;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import org.apache.shiro.crypto.hash.Md5Hash;
|
||||
import com.cpic.xim.utils.newcitizen.NewCitizenUitls;
|
||||
import com.cpic.xim.utils.newcitizen.IdentifyResult;
|
||||
|
||||
public class NewCitizenQueryResultTest
|
||||
{
|
||||
@Test
|
||||
public void testSaveQueryResult()
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMd5Hash()
|
||||
{
|
||||
String idCardNo = "350402198106130016";
|
||||
|
||||
Md5Hash idCardNoHash = new Md5Hash( idCardNo );
|
||||
|
||||
System.out.println( "身份证hash值:" + idCardNoHash.toString() );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIdentify()
|
||||
{
|
||||
try
|
||||
{
|
||||
IdentifyResult result = NewCitizenUitls.identifyNewCitizen( "350403199801027011", "涂弘森" );
|
||||
|
||||
assertTrue("测试调用成功", result.getCitizenType().isEmpty() == false);
|
||||
}
|
||||
catch ( Exception error )
|
||||
{
|
||||
assert( false );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"java.configuration.updateBuildConfiguration": "automatic",
|
||||
"java.compile.nullAnalysis.mode": "automatic"
|
||||
}
|
|
@ -0,0 +1,187 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>com.cpic.xim</groupId>
|
||||
<artifactId>newcitizen</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>newcitizen</name>
|
||||
<url>http://maven.apache.org</url>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<maven.compiler.source>1.8</maven.compiler.source>
|
||||
<maven.compiler.target>1.8</maven.compiler.target>
|
||||
<spring.version>5.3.24</spring.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<!-- https://mvnrepository.com/artifact/junit/junit -->
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.13.2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-context</artifactId>
|
||||
<version>${spring.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-test</artifactId>
|
||||
<version>${spring.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-web</artifactId>
|
||||
<version>${spring.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-webmvc</artifactId>
|
||||
<version>${spring.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>javax.servlet</groupId>
|
||||
<artifactId>javax.servlet-api</artifactId>
|
||||
<version>4.0.1</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<!--文件上传依赖的两个jar包-->
|
||||
<dependency>
|
||||
<groupId>commons-fileupload</groupId>
|
||||
<artifactId>commons-fileupload</artifactId>
|
||||
<version>1.5</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>commons-io</groupId>
|
||||
<artifactId>commons-io</artifactId>
|
||||
<version>2.11.0</version>
|
||||
</dependency>
|
||||
|
||||
<!--jackson-->
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
<version>2.14.2</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-core</artifactId>
|
||||
<version>2.13.4</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-annotations</artifactId>
|
||||
<version>2.13.4</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.oracle</groupId>
|
||||
<artifactId>ojdbc8</artifactId>
|
||||
<version>19.3.0.0.0</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.shiro</groupId>
|
||||
<artifactId>shiro-all</artifactId>
|
||||
<version>1.11.0</version>
|
||||
<type>pom</type>
|
||||
</dependency>
|
||||
|
||||
<!-- <dependency>
|
||||
<groupId>com.cdp.product</groupId>
|
||||
<artifactId>cdp-common-security</artifactId>
|
||||
<version>3.5.0</version>
|
||||
</dependency> -->
|
||||
|
||||
<!-- <dependency>
|
||||
<groupId>com.cdp.product</groupId>
|
||||
<artifactId>cdp-common-security</artifactId>
|
||||
<version>3.5.0</version>
|
||||
<scope>system</scope>
|
||||
<systemPath>${project.basedir}/lib/cdp-common-security-3.5.0.jar</systemPath>
|
||||
</dependency> -->
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.httpcomponents</groupId>
|
||||
<artifactId>httpclient</artifactId>
|
||||
<version>4.5.14</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.httpcomponents</groupId>
|
||||
<artifactId>httpcore</artifactId>
|
||||
<version>4.4.5</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-lang3</artifactId>
|
||||
<version>3.7</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
<build>
|
||||
<defaultGoal>compile</defaultGoal>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.8.1</version>
|
||||
<configuration>
|
||||
<source>1.8</source>
|
||||
<target>1.8</target>
|
||||
<encoding>UTF-8</encoding>
|
||||
<compireArguments>
|
||||
<extdirs>${project.basedir}\lib</extdirs>
|
||||
</compireArguments>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<version>3.0.0-M6</version>
|
||||
<configuration>
|
||||
<skipTests>true</skipTests>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
<configuration>
|
||||
<descriptorRefs>
|
||||
<descriptorRef>jar-with-dependencies</descriptorRef>
|
||||
</descriptorRefs>
|
||||
<archive>
|
||||
<manifest>
|
||||
<mainClass>AppMain</mainClass>
|
||||
</manifest>
|
||||
</archive>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>make-assmenbly</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>single</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
|
@ -0,0 +1,13 @@
|
|||
package com.cpic.xim;
|
||||
|
||||
/**
|
||||
* Hello world!
|
||||
*
|
||||
*/
|
||||
public class App
|
||||
{
|
||||
public static void main( String[] args )
|
||||
{
|
||||
System.out.println( "Hello World!" );
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
|
||||
package com.cpic.xim.utils.config;
|
||||
|
||||
public class EncryptionParameters
|
||||
{
|
||||
private static String SECRET_KEY = "9ILpXKFSHckH1g7h";
|
||||
private static String KEY = "2d716d5c7b35d5c0d41199eb0fd789ca";
|
||||
|
||||
public static String getSecretKey()
|
||||
{
|
||||
return EncryptionParameters.SECRET_KEY;
|
||||
}
|
||||
|
||||
public static String getKey()
|
||||
{
|
||||
return EncryptionParameters.KEY;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,63 @@
|
|||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-05-25 11:14:03
|
||||
* @LastEditors: Kane
|
||||
* @FilePath: /NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/decryption/DecryptionUtils.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.utils.decryption;
|
||||
|
||||
import javax.crypto.Cipher;
|
||||
import javax.crypto.spec.IvParameterSpec;
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import sun.misc.BASE64Decoder;
|
||||
|
||||
public class CdpDecryptUtil
|
||||
{
|
||||
public CdpDecryptUtil()
|
||||
{}
|
||||
|
||||
private static String aesDecryptByBytes( byte[] encryptBytes, String decryptKey )
|
||||
throws Exception
|
||||
{
|
||||
Cipher cipher = Cipher.getInstance( "AES/CBC/NoPadding" );
|
||||
SecretKeySpec keySpec = new SecretKeySpec( decryptKey.getBytes(), "AES" );
|
||||
IvParameterSpec ivSpec = new IvParameterSpec( decryptKey.getBytes() );
|
||||
|
||||
cipher.init( 2, keySpec, ivSpec );
|
||||
|
||||
byte[] decryptBytes = cipher.doFinal( encryptBytes );
|
||||
|
||||
String result = new String( decryptBytes );
|
||||
|
||||
if ( StringUtils.isNotBlank( result ) )
|
||||
{
|
||||
result = result.trim();
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static String aesDecrypt( String encryptStr, String decryptKey )
|
||||
throws Exception
|
||||
{
|
||||
try
|
||||
{
|
||||
return StringUtils.isBlank( encryptStr ) ? null
|
||||
: aesDecryptByBytes( base64Decode( encryptStr ), decryptKey );
|
||||
}
|
||||
catch ( Exception var3 )
|
||||
{
|
||||
throw new Exception( "解密失败!" );
|
||||
}
|
||||
}
|
||||
|
||||
private static byte[] base64Decode( String base64Code ) throws Exception
|
||||
{
|
||||
return StringUtils.isBlank( base64Code ) ? null
|
||||
: (new BASE64Decoder()).decodeBuffer( base64Code );
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-05-25 11:13:17
|
||||
* @LastEditors: Kane
|
||||
* @FilePath: /NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/encryption/EncryptionUtils.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.utils.encryption;
|
||||
|
||||
public class EncryptionUtils
|
||||
{
|
||||
static public String md5Hash( String value )
|
||||
{
|
||||
String result = "";
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
|
||||
package com.cpic.xim.utils.newcitizen;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
public class IdentifyResult
|
||||
{
|
||||
public IdentifyResult() {}
|
||||
|
||||
public String getCitizenType()
|
||||
{
|
||||
return citizenType;
|
||||
}
|
||||
|
||||
public void setCitizenType( String citizenType )
|
||||
{
|
||||
this.citizenType = citizenType;
|
||||
}
|
||||
|
||||
public String getExpireDate()
|
||||
{
|
||||
return expireDate;
|
||||
}
|
||||
|
||||
public void setExpireDate( String expireDate )
|
||||
{
|
||||
this.expireDate = expireDate;
|
||||
}
|
||||
|
||||
public String getScore()
|
||||
{
|
||||
return score;
|
||||
}
|
||||
|
||||
public void setScore( String score )
|
||||
{
|
||||
this.score = score;
|
||||
}
|
||||
|
||||
@JsonProperty("citizentype")
|
||||
private String citizenType;
|
||||
|
||||
@JsonProperty("expiredate")
|
||||
private String expireDate;
|
||||
|
||||
@JsonProperty("score")
|
||||
private String score;
|
||||
}
|
|
@ -0,0 +1,169 @@
|
|||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-05-25 15:26:09
|
||||
* @LastEditors: Kane
|
||||
* @FilePath: /newcitizen/src/main/java/com/cpic/xim/utils/newcitizen/NewCitizenUitls.java
|
||||
* @Description: 新市民认证相关的工具方法
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.utils.newcitizen;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import org.apache.http.HttpEntity;
|
||||
import org.apache.http.client.entity.UrlEncodedFormEntity;
|
||||
import org.apache.http.client.methods.CloseableHttpResponse;
|
||||
import org.apache.http.client.methods.HttpPost;
|
||||
import org.apache.http.impl.client.CloseableHttpClient;
|
||||
import org.apache.http.impl.client.HttpClients;
|
||||
import org.apache.http.message.BasicNameValuePair;
|
||||
import org.apache.http.util.EntityUtils;
|
||||
import com.cdp.product.security.decode.CdpDecryptUtil;
|
||||
import com.cdp.product.security.encode.CdpEncryptUtil;
|
||||
import com.cdp.product.security.sign.CdpSignUtil;
|
||||
import com.cpic.xim.utils.config.EncryptionParameters;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
public class NewCitizenUitls
|
||||
{
|
||||
// 请求地址
|
||||
private static String identifyURL = "https://api.xmcic.cn:51888/government/economic/352";
|
||||
|
||||
/**
|
||||
* 新市民验证
|
||||
* @param idCardNo 身份证号码
|
||||
* @param name 姓名
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public static IdentifyResult identifyNewCitizen( String idCardNo, String name ) throws Exception
|
||||
{
|
||||
String secretKey = EncryptionParameters.getSecretKey();
|
||||
String key = EncryptionParameters.getKey();
|
||||
String pushURL = "http://222.76.244.118:11101/NewCitizen/save_score.do";
|
||||
|
||||
Map<String, String> param = new HashMap<String, String>();
|
||||
|
||||
param.put( "authorized", CdpEncryptUtil.aesEncrypt( "1", secretKey ) );
|
||||
param.put( "idcard", CdpEncryptUtil.aesEncrypt( idCardNo, secretKey ) );
|
||||
param.put( "name", CdpEncryptUtil.aesEncrypt( name, secretKey ) );
|
||||
param.put( "pushurl", CdpEncryptUtil.aesEncrypt( pushURL, secretKey ) );
|
||||
param.put( "timestamp",
|
||||
CdpEncryptUtil.aesEncrypt( System.currentTimeMillis() + "", secretKey ) );
|
||||
|
||||
String sign = CdpSignUtil.sign( param );
|
||||
Map<String, String> params = new HashMap<>();
|
||||
|
||||
params.putAll( param );
|
||||
params.put( "key", key );
|
||||
params.put("sign", sign);
|
||||
|
||||
String resultJSON = sendPost( identifyURL, params);
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
|
||||
ResponseResult response = mapper.readValue( resultJSON, ResponseResult.class );
|
||||
|
||||
// 请求结果解密,应为一个json
|
||||
String identifyJSON = CdpDecryptUtil.aesDecrypt(response.getData(), secretKey);
|
||||
|
||||
IdentifyResult identifyResult = mapper.readValue( identifyJSON, IdentifyResult.class );
|
||||
|
||||
return identifyResult;
|
||||
}
|
||||
|
||||
public static String sendPost( String url, Map<String, String> bodyMap )
|
||||
{
|
||||
HttpPost post = new HttpPost( url );
|
||||
|
||||
try
|
||||
{
|
||||
// 创建参数集合
|
||||
List<BasicNameValuePair> list = new ArrayList<>();
|
||||
// 添加参数
|
||||
if ( bodyMap != null )
|
||||
{
|
||||
for ( String str : bodyMap.keySet() )
|
||||
{
|
||||
list.add( new BasicNameValuePair( str, bodyMap.get( str ) ) );
|
||||
}
|
||||
}
|
||||
// 把参数放入请求对象,post发送的参数list,指定格式
|
||||
post.setEntity( new UrlEncodedFormEntity( list, "UTF-8" ) );
|
||||
CloseableHttpClient client = HttpClients.createDefault();
|
||||
// 启动执行请求,并获得返回值
|
||||
CloseableHttpResponse response = client.execute( post );
|
||||
// 得到返回的entity对象
|
||||
HttpEntity entity = response.getEntity();
|
||||
// 把实体对象转换为string
|
||||
return EntityUtils.toString( entity, "UTF-8" );
|
||||
}
|
||||
catch ( Exception e1 )
|
||||
{
|
||||
e1.printStackTrace();
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class ResponseResult
|
||||
{
|
||||
public ResponseResult() {}
|
||||
|
||||
public String getCode()
|
||||
{
|
||||
return code;
|
||||
}
|
||||
|
||||
public void setCode( String code )
|
||||
{
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public String getMessage()
|
||||
{
|
||||
return message;
|
||||
}
|
||||
|
||||
public void setMessage( String message )
|
||||
{
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public String getData()
|
||||
{
|
||||
return data;
|
||||
}
|
||||
|
||||
public void setData( String data )
|
||||
{
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
public String getSeqNo()
|
||||
{
|
||||
return seqNo;
|
||||
}
|
||||
|
||||
public void setSeqNo( String seqNo )
|
||||
{
|
||||
this.seqNo = seqNo;
|
||||
}
|
||||
|
||||
@JsonProperty("code")
|
||||
private String code;
|
||||
|
||||
@JsonProperty("message")
|
||||
private String message;
|
||||
|
||||
@JsonProperty("data")
|
||||
private String data;
|
||||
|
||||
@JsonProperty("seqNo")
|
||||
private String seqNo;
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-05-25 15:17:49
|
||||
* @LastEditors: Kane
|
||||
* @FilePath: /NewCitizenQueryResult/src/main/java/com/cpic/xim/web/controllers/NewCitizen/IdentifyNewCitizenRequest.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.web.controllers.NewCitizen;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
public class IdentifyNewCitizenRequest
|
||||
{
|
||||
public IdentifyNewCitizenRequest() {}
|
||||
|
||||
public String getIdCardNo()
|
||||
{
|
||||
return idCardNo;
|
||||
}
|
||||
|
||||
public void setIdCardNo( String idCardNo )
|
||||
{
|
||||
this.idCardNo = idCardNo;
|
||||
}
|
||||
|
||||
public String getName()
|
||||
{
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName( String name )
|
||||
{
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
@JsonProperty("idcard_no")
|
||||
private String idCardNo;
|
||||
|
||||
@JsonProperty("name")
|
||||
private String name;
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
|
||||
package com.cpic.xim.web.controllers.NewCitizen;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
// 9ILpXKFSHckH1g7h
|
||||
|
||||
@Controller
|
||||
public class QueryResultController
|
||||
{
|
||||
@RequestMapping("/save_score.do")
|
||||
public void saveQueryResult(HttpServletResponse response, @RequestBody QueryResultRequest result )
|
||||
{
|
||||
response.setStatus(HttpServletResponse.SC_OK);
|
||||
}
|
||||
|
||||
@RequestMapping("/identify.do")
|
||||
public void identifyNewCitizen(@RequestBody IdentifyNewCitizenRequest request )
|
||||
{
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
|
||||
package com.cpic.xim.web.controllers.NewCitizen;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
public class QueryResultRequest
|
||||
{
|
||||
public QueryResultRequest() {}
|
||||
|
||||
|
||||
public String getIdCardMD5()
|
||||
{
|
||||
return idCardMD5;
|
||||
}
|
||||
|
||||
public void setIdCardMD5( String idCardMD5 )
|
||||
{
|
||||
this.idCardMD5 = idCardMD5;
|
||||
}
|
||||
|
||||
public String getScore()
|
||||
{
|
||||
return score;
|
||||
}
|
||||
|
||||
public void setScore( String score )
|
||||
{
|
||||
this.score = score;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@JsonProperty("idcardmd5")
|
||||
private String idCardMD5;
|
||||
|
||||
@JsonProperty("score")
|
||||
private String score;
|
||||
}
|
|
@ -0,0 +1,54 @@
|
|||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-05-25 11:02:53
|
||||
* @LastEditors: Kane
|
||||
* @FilePath: /NewCitizenQueryResult/src/main/java/com/cpic/xim/web/filters/CrosFilter.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
|
||||
package com.cpic.xim.web.filters;
|
||||
|
||||
import java.io.IOException;
|
||||
import javax.servlet.Filter;
|
||||
import javax.servlet.FilterChain;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.ServletRequest;
|
||||
import javax.servlet.ServletResponse;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import org.springframework.http.HttpMethod;
|
||||
|
||||
public class CrosFilter implements Filter
|
||||
{
|
||||
@Override
|
||||
public void doFilter( ServletRequest req, ServletResponse resp, FilterChain chain )
|
||||
throws ServletException, IOException
|
||||
{
|
||||
HttpServletRequest request = (HttpServletRequest) req;
|
||||
HttpServletResponse response = (HttpServletResponse) resp;
|
||||
String method = request.getMethod();
|
||||
String originHeader = request.getHeader( "Origin" );
|
||||
|
||||
System.out.println( "收到" + method + "请求,来自" + originHeader);
|
||||
|
||||
// 如果是Options请求
|
||||
if ( method.equals(HttpMethod.OPTIONS.toString()) )
|
||||
{
|
||||
originHeader = "*";
|
||||
}
|
||||
|
||||
response.setHeader( "Access-Control-Allow-Origin", originHeader );
|
||||
response.setHeader( "Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT" );
|
||||
response.setHeader( "Access-Control-Max-Age", "0" );
|
||||
response.setHeader( "Access-Control-Allow-Headers",
|
||||
"Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With,userId,token" );
|
||||
response.setHeader( "Access-Control-Allow-Credentials", "true" );
|
||||
response.setHeader( "XDomainRequestAllowed", "1" );
|
||||
response.setHeader( "XDomainRequestAllowed", "1" );
|
||||
|
||||
chain.doFilter( request, response );
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-05-25 10:36:14
|
||||
* @LastEditors: Kane
|
||||
* @FilePath: /newcitizen/src/test/java/com/cpic/xim/test/NewCitizenQueryResultTest.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
|
||||
|
||||
package com.cpic.xim.test;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.apache.shiro.crypto.SecureRandomNumberGenerator;
|
||||
import org.apache.shiro.crypto.hash.Md5Hash;
|
||||
import com.cpic.xim.utils.newcitizen.NewCitizenUitls;
|
||||
import com.cpic.xim.utils.newcitizen.IdentifyResult;
|
||||
|
||||
public class NewCitizenQueryResultTest
|
||||
{
|
||||
@Test
|
||||
public void testSaveQueryResult()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMd5Hash()
|
||||
{
|
||||
String idCardNo = "350402198106130016";
|
||||
|
||||
Md5Hash idCardNoHash = new Md5Hash( idCardNo );
|
||||
|
||||
System.out.println( "身份证hash值:" + idCardNoHash.toString() );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIdentify()
|
||||
{
|
||||
try
|
||||
{
|
||||
IdentifyResult result = NewCitizenUitls.identifyNewCitizen( "350402198106130016", "王炜" );
|
||||
}
|
||||
catch ( Exception error )
|
||||
{
|
||||
System.out.println(error.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue