From 2c82a2c8a353402e28bf0296f9ba83cd7da2e594 Mon Sep 17 00:00:00 2001 From: Kane Wang Date: Thu, 25 May 2023 21:01:43 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=8E=A5=E6=94=B6=E7=99=BD?= =?UTF-8?q?=E9=B9=AD=E5=88=86=E5=92=8C=E6=96=B0=E5=B8=82=E6=B0=91=E9=AA=8C?= =?UTF-8?q?=E8=AF=81=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../.vscode/settings.json | 3 +- code/backend/NewCitizenQueryResult/pom.xml | 30 ++- .../utils/config/EncryptionParameters.java | 18 ++ .../xim/utils/decryption/DecryptionUtils.java | 9 - .../xim/utils/newcitizen/IdentifyResult.java | 48 +++++ .../xim/utils/newcitizen/NewCitizenUitls.java | 181 +++++++++++++++++ .../security/decode/DecryptionUtils.java | 65 ++++++ .../security/encode/EncryptionUtils.java | 64 ++++++ .../xim/utils/security/sign/SignUtils.java | 82 ++++++++ .../NewCitizen/IdentifyNewCitizenRequest.java | 43 ++++ .../IdentifyNewCitizenResponse.java | 82 ++++++++ .../NewCitizen/QueryResultController.java | 49 ++++- .../webapp/{ => WEB-INF}/classes/spring.xml | 0 .../xim/test/NewCitizenQueryResultTest.java | 27 ++- code/console/newcitizen/.vscode/settings.json | 4 + code/console/newcitizen/pom.xml | 187 ++++++++++++++++++ .../src/main/java/com/cpic/xim/App.java | 13 ++ .../utils/config/EncryptionParameters.java | 18 ++ .../xim/utils/decryption/DecryptionUtils.java | 63 ++++++ .../xim/utils/encryption/EncryptionUtils.java | 0 .../xim/utils/newcitizen/IdentifyResult.java | 48 +++++ .../xim/utils/newcitizen/NewCitizenUitls.java | 169 ++++++++++++++++ .../NewCitizen/IdentifyNewCitizenRequest.java | 43 ++++ .../NewCitizen/QueryResultController.java | 25 +++ .../NewCitizen/QueryResultRequest.java | 38 ++++ .../com/cpic/xim/web/filters/CrosFilter.java | 54 +++++ .../xim/test/NewCitizenQueryResultTest.java | 50 +++++ 27 files changed, 1388 insertions(+), 25 deletions(-) create mode 100644 code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/config/EncryptionParameters.java delete mode 100644 code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/decryption/DecryptionUtils.java create mode 100644 code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/newcitizen/IdentifyResult.java create mode 100644 code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/newcitizen/NewCitizenUitls.java create mode 100644 code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/security/decode/DecryptionUtils.java create mode 100644 code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/security/encode/EncryptionUtils.java create mode 100644 code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/security/sign/SignUtils.java create mode 100644 code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/web/controllers/NewCitizen/IdentifyNewCitizenRequest.java create mode 100644 code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/web/controllers/NewCitizen/IdentifyNewCitizenResponse.java rename code/backend/NewCitizenQueryResult/src/main/webapp/{ => WEB-INF}/classes/spring.xml (100%) create mode 100644 code/console/newcitizen/.vscode/settings.json create mode 100644 code/console/newcitizen/pom.xml create mode 100644 code/console/newcitizen/src/main/java/com/cpic/xim/App.java create mode 100644 code/console/newcitizen/src/main/java/com/cpic/xim/utils/config/EncryptionParameters.java create mode 100644 code/console/newcitizen/src/main/java/com/cpic/xim/utils/decryption/DecryptionUtils.java rename code/{backend/NewCitizenQueryResult => console/newcitizen}/src/main/java/com/cpic/xim/utils/encryption/EncryptionUtils.java (100%) create mode 100644 code/console/newcitizen/src/main/java/com/cpic/xim/utils/newcitizen/IdentifyResult.java create mode 100644 code/console/newcitizen/src/main/java/com/cpic/xim/utils/newcitizen/NewCitizenUitls.java create mode 100644 code/console/newcitizen/src/main/java/com/cpic/xim/web/controllers/NewCitizen/IdentifyNewCitizenRequest.java create mode 100644 code/console/newcitizen/src/main/java/com/cpic/xim/web/controllers/NewCitizen/QueryResultController.java create mode 100644 code/console/newcitizen/src/main/java/com/cpic/xim/web/controllers/NewCitizen/QueryResultRequest.java create mode 100644 code/console/newcitizen/src/main/java/com/cpic/xim/web/filters/CrosFilter.java create mode 100644 code/console/newcitizen/src/test/java/com/cpic/xim/test/NewCitizenQueryResultTest.java diff --git a/code/backend/NewCitizenQueryResult/.vscode/settings.json b/code/backend/NewCitizenQueryResult/.vscode/settings.json index e0f15db..0be1c0c 100644 --- a/code/backend/NewCitizenQueryResult/.vscode/settings.json +++ b/code/backend/NewCitizenQueryResult/.vscode/settings.json @@ -1,3 +1,4 @@ { - "java.configuration.updateBuildConfiguration": "automatic" + "java.configuration.updateBuildConfiguration": "automatic", + "java.compile.nullAnalysis.mode": "automatic" } \ No newline at end of file diff --git a/code/backend/NewCitizenQueryResult/pom.xml b/code/backend/NewCitizenQueryResult/pom.xml index d698642..ead865a 100644 --- a/code/backend/NewCitizenQueryResult/pom.xml +++ b/code/backend/NewCitizenQueryResult/pom.xml @@ -3,7 +3,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 com.cpic.xim - new_citizen_backend + NewCitizen war 1.0-SNAPSHOT desktop_archievement_backend Maven Webapp @@ -11,8 +11,8 @@ UTF-8 - 17 - 17 + 8 + 8 5.3.24 @@ -100,9 +100,27 @@ pom + + org.apache.httpcomponents + httpclient + 4.5.14 + + + + org.apache.httpcomponents + httpcore + 4.4.5 + + + + org.apache.commons + commons-lang3 + 3.7 + + - new_citizen_backend + NewCitizen org.apache.maven.plugins @@ -122,8 +140,8 @@ maven-compiler-plugin 3.8.1 - 17 - 17 + 8 + 8 UTF-8 diff --git a/code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/config/EncryptionParameters.java b/code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/config/EncryptionParameters.java new file mode 100644 index 0000000..22dbd3b --- /dev/null +++ b/code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/config/EncryptionParameters.java @@ -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; + } +} \ No newline at end of file diff --git a/code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/decryption/DecryptionUtils.java b/code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/decryption/DecryptionUtils.java deleted file mode 100644 index 85ad406..0000000 --- a/code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/decryption/DecryptionUtils.java +++ /dev/null @@ -1,9 +0,0 @@ -/* - * @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. - */ diff --git a/code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/newcitizen/IdentifyResult.java b/code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/newcitizen/IdentifyResult.java new file mode 100644 index 0000000..9bf842f --- /dev/null +++ b/code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/newcitizen/IdentifyResult.java @@ -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; +} \ No newline at end of file diff --git a/code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/newcitizen/NewCitizenUitls.java b/code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/newcitizen/NewCitizenUitls.java new file mode 100644 index 0000000..0abf5f8 --- /dev/null +++ b/code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/newcitizen/NewCitizenUitls.java @@ -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 param = new HashMap(); + + 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 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 bodyMap ) + { + HttpPost post = new HttpPost( url ); + + try + { + // 创建参数集合 + List 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; +} + + diff --git a/code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/security/decode/DecryptionUtils.java b/code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/security/decode/DecryptionUtils.java new file mode 100644 index 0000000..9885bc9 --- /dev/null +++ b/code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/security/decode/DecryptionUtils.java @@ -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; + } +} diff --git a/code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/security/encode/EncryptionUtils.java b/code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/security/encode/EncryptionUtils.java new file mode 100644 index 0000000..6a108ac --- /dev/null +++ b/code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/security/encode/EncryptionUtils.java @@ -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( "加密失败!" ); + } + } +} diff --git a/code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/security/sign/SignUtils.java b/code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/security/sign/SignUtils.java new file mode 100644 index 0000000..cdc44bb --- /dev/null +++ b/code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/security/sign/SignUtils.java @@ -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 param ) throws Exception + { + try + { + Set 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( "签名失败!" ); + } + } +} diff --git a/code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/web/controllers/NewCitizen/IdentifyNewCitizenRequest.java b/code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/web/controllers/NewCitizen/IdentifyNewCitizenRequest.java new file mode 100644 index 0000000..d64144c --- /dev/null +++ b/code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/web/controllers/NewCitizen/IdentifyNewCitizenRequest.java @@ -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; +} \ No newline at end of file diff --git a/code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/web/controllers/NewCitizen/IdentifyNewCitizenResponse.java b/code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/web/controllers/NewCitizen/IdentifyNewCitizenResponse.java new file mode 100644 index 0000000..603724b --- /dev/null +++ b/code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/web/controllers/NewCitizen/IdentifyNewCitizenResponse.java @@ -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; +} \ No newline at end of file diff --git a/code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/web/controllers/NewCitizen/QueryResultController.java b/code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/web/controllers/NewCitizen/QueryResultController.java index e8fbe5b..425e0a4 100644 --- a/code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/web/controllers/NewCitizen/QueryResultController.java +++ b/code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/web/controllers/NewCitizen/QueryResultController.java @@ -1,10 +1,22 @@ +/* + * @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 java.net.http.HttpResponse; +import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestBody; + +import com.cpic.xim.utils.newcitizen.*; // 9ILpXKFSHckH1g7h @@ -12,8 +24,37 @@ import org.springframework.web.bind.annotation.RequestParam; public class QueryResultController { @RequestMapping("/save_score.do") - public void saveQueryResult(HttpResponse response, @RequestParam QueryResultRequest result ) + public void saveQueryResult(HttpServletResponse response, @RequestBody QueryResultRequest result ) { - response. + 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; } } \ No newline at end of file diff --git a/code/backend/NewCitizenQueryResult/src/main/webapp/classes/spring.xml b/code/backend/NewCitizenQueryResult/src/main/webapp/WEB-INF/classes/spring.xml similarity index 100% rename from code/backend/NewCitizenQueryResult/src/main/webapp/classes/spring.xml rename to code/backend/NewCitizenQueryResult/src/main/webapp/WEB-INF/classes/spring.xml diff --git a/code/backend/NewCitizenQueryResult/src/test/java/com/cpic/xim/test/NewCitizenQueryResultTest.java b/code/backend/NewCitizenQueryResult/src/test/java/com/cpic/xim/test/NewCitizenQueryResultTest.java index 0805400..0111a61 100644 --- a/code/backend/NewCitizenQueryResult/src/test/java/com/cpic/xim/test/NewCitizenQueryResultTest.java +++ b/code/backend/NewCitizenQueryResult/src/test/java/com/cpic/xim/test/NewCitizenQueryResultTest.java @@ -12,15 +12,17 @@ package com.cpic.xim.test; import org.junit.Test; -import org.apache.shiro.crypto.SecureRandomNumberGenerator; +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 @@ -28,8 +30,23 @@ public class NewCitizenQueryResultTest { String idCardNo = "350402198106130016"; - Md5Hash idCardNoHash = new Md5Hash(idCardNo); + Md5Hash idCardNoHash = new Md5Hash( idCardNo ); - System.out.println("身份证hash值:" + idCardNoHash.toString() ); + System.out.println( "身份证hash值:" + idCardNoHash.toString() ); } -} \ No newline at end of file + + @Test + public void testIdentify() + { + try + { + IdentifyResult result = NewCitizenUitls.identifyNewCitizen( "350403199801027011", "涂弘森" ); + + assertTrue("测试调用成功", result.getCitizenType().isEmpty() == false); + } + catch ( Exception error ) + { + assert( false ); + } + } +} diff --git a/code/console/newcitizen/.vscode/settings.json b/code/console/newcitizen/.vscode/settings.json new file mode 100644 index 0000000..0be1c0c --- /dev/null +++ b/code/console/newcitizen/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "java.configuration.updateBuildConfiguration": "automatic", + "java.compile.nullAnalysis.mode": "automatic" +} \ No newline at end of file diff --git a/code/console/newcitizen/pom.xml b/code/console/newcitizen/pom.xml new file mode 100644 index 0000000..d037351 --- /dev/null +++ b/code/console/newcitizen/pom.xml @@ -0,0 +1,187 @@ + + 4.0.0 + + com.cpic.xim + newcitizen + 1.0-SNAPSHOT + jar + + newcitizen + http://maven.apache.org + + + UTF-8 + 1.8 + 1.8 + 5.3.24 + + + + + + junit + junit + 4.13.2 + test + + + + org.springframework + spring-context + ${spring.version} + + + org.springframework + spring-test + ${spring.version} + test + + + org.springframework + spring-web + ${spring.version} + + + + org.springframework + spring-webmvc + ${spring.version} + + + + javax.servlet + javax.servlet-api + 4.0.1 + provided + + + + + commons-fileupload + commons-fileupload + 1.5 + + + + commons-io + commons-io + 2.11.0 + + + + + com.fasterxml.jackson.core + jackson-databind + 2.14.2 + + + + com.fasterxml.jackson.core + jackson-core + 2.13.4 + + + + com.fasterxml.jackson.core + jackson-annotations + 2.13.4 + + + + com.oracle + ojdbc8 + 19.3.0.0.0 + + + + org.apache.shiro + shiro-all + 1.11.0 + pom + + + + + + + + org.apache.httpcomponents + httpclient + 4.5.14 + + + + org.apache.httpcomponents + httpcore + 4.4.5 + + + + org.apache.commons + commons-lang3 + 3.7 + + + + + compile + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 1.8 + 1.8 + UTF-8 + + ${project.basedir}\lib + + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.0.0-M6 + + true + + + + org.apache.maven.plugins + maven-assembly-plugin + + + jar-with-dependencies + + + + AppMain + + + + + + make-assmenbly + package + + single + + + + + + + \ No newline at end of file diff --git a/code/console/newcitizen/src/main/java/com/cpic/xim/App.java b/code/console/newcitizen/src/main/java/com/cpic/xim/App.java new file mode 100644 index 0000000..dc75339 --- /dev/null +++ b/code/console/newcitizen/src/main/java/com/cpic/xim/App.java @@ -0,0 +1,13 @@ +package com.cpic.xim; + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) + { + System.out.println( "Hello World!" ); + } +} diff --git a/code/console/newcitizen/src/main/java/com/cpic/xim/utils/config/EncryptionParameters.java b/code/console/newcitizen/src/main/java/com/cpic/xim/utils/config/EncryptionParameters.java new file mode 100644 index 0000000..22dbd3b --- /dev/null +++ b/code/console/newcitizen/src/main/java/com/cpic/xim/utils/config/EncryptionParameters.java @@ -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; + } +} \ No newline at end of file diff --git a/code/console/newcitizen/src/main/java/com/cpic/xim/utils/decryption/DecryptionUtils.java b/code/console/newcitizen/src/main/java/com/cpic/xim/utils/decryption/DecryptionUtils.java new file mode 100644 index 0000000..792b219 --- /dev/null +++ b/code/console/newcitizen/src/main/java/com/cpic/xim/utils/decryption/DecryptionUtils.java @@ -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 ); + } +} diff --git a/code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/encryption/EncryptionUtils.java b/code/console/newcitizen/src/main/java/com/cpic/xim/utils/encryption/EncryptionUtils.java similarity index 100% rename from code/backend/NewCitizenQueryResult/src/main/java/com/cpic/xim/utils/encryption/EncryptionUtils.java rename to code/console/newcitizen/src/main/java/com/cpic/xim/utils/encryption/EncryptionUtils.java diff --git a/code/console/newcitizen/src/main/java/com/cpic/xim/utils/newcitizen/IdentifyResult.java b/code/console/newcitizen/src/main/java/com/cpic/xim/utils/newcitizen/IdentifyResult.java new file mode 100644 index 0000000..9bf842f --- /dev/null +++ b/code/console/newcitizen/src/main/java/com/cpic/xim/utils/newcitizen/IdentifyResult.java @@ -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; +} \ No newline at end of file diff --git a/code/console/newcitizen/src/main/java/com/cpic/xim/utils/newcitizen/NewCitizenUitls.java b/code/console/newcitizen/src/main/java/com/cpic/xim/utils/newcitizen/NewCitizenUitls.java new file mode 100644 index 0000000..ff2d578 --- /dev/null +++ b/code/console/newcitizen/src/main/java/com/cpic/xim/utils/newcitizen/NewCitizenUitls.java @@ -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 param = new HashMap(); + + 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 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 bodyMap ) + { + HttpPost post = new HttpPost( url ); + + try + { + // 创建参数集合 + List 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; +} + + diff --git a/code/console/newcitizen/src/main/java/com/cpic/xim/web/controllers/NewCitizen/IdentifyNewCitizenRequest.java b/code/console/newcitizen/src/main/java/com/cpic/xim/web/controllers/NewCitizen/IdentifyNewCitizenRequest.java new file mode 100644 index 0000000..d64144c --- /dev/null +++ b/code/console/newcitizen/src/main/java/com/cpic/xim/web/controllers/NewCitizen/IdentifyNewCitizenRequest.java @@ -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; +} \ No newline at end of file diff --git a/code/console/newcitizen/src/main/java/com/cpic/xim/web/controllers/NewCitizen/QueryResultController.java b/code/console/newcitizen/src/main/java/com/cpic/xim/web/controllers/NewCitizen/QueryResultController.java new file mode 100644 index 0000000..df39087 --- /dev/null +++ b/code/console/newcitizen/src/main/java/com/cpic/xim/web/controllers/NewCitizen/QueryResultController.java @@ -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 ) + { + + } +} \ No newline at end of file diff --git a/code/console/newcitizen/src/main/java/com/cpic/xim/web/controllers/NewCitizen/QueryResultRequest.java b/code/console/newcitizen/src/main/java/com/cpic/xim/web/controllers/NewCitizen/QueryResultRequest.java new file mode 100644 index 0000000..f764cbe --- /dev/null +++ b/code/console/newcitizen/src/main/java/com/cpic/xim/web/controllers/NewCitizen/QueryResultRequest.java @@ -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; +} \ No newline at end of file diff --git a/code/console/newcitizen/src/main/java/com/cpic/xim/web/filters/CrosFilter.java b/code/console/newcitizen/src/main/java/com/cpic/xim/web/filters/CrosFilter.java new file mode 100644 index 0000000..d218312 --- /dev/null +++ b/code/console/newcitizen/src/main/java/com/cpic/xim/web/filters/CrosFilter.java @@ -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 ); + } + +} diff --git a/code/console/newcitizen/src/test/java/com/cpic/xim/test/NewCitizenQueryResultTest.java b/code/console/newcitizen/src/test/java/com/cpic/xim/test/NewCitizenQueryResultTest.java new file mode 100644 index 0000000..3719398 --- /dev/null +++ b/code/console/newcitizen/src/test/java/com/cpic/xim/test/NewCitizenQueryResultTest.java @@ -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()); + } + } +}