Merge pull request 'feature-mass-identify' (#2) from feature-mass-identify into develop
Reviewed-on: #2
This commit is contained in:
commit
8918bb7e2a
87
code/backend/NewCitizenIdentify/.vscode/fileheader.template.js
vendored
Normal file
87
code/backend/NewCitizenIdentify/.vscode/fileheader.template.js
vendored
Normal file
@ -0,0 +1,87 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2025-03-16 00:35:09
|
||||
* @LastEditors: Kane
|
||||
* @FilePath: /cpicxim-huixiabao/.vscode/fileheader.template.js
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2023} by Kane, All Rights Reserved.
|
||||
*/
|
||||
/**
|
||||
* This file is generated by VSCode extension: Fileheader Pro
|
||||
*/
|
||||
|
||||
/**
|
||||
* These comments can help you write your own template with type hint
|
||||
* @typedef {Object} FileheaderVariable Fileheader variables
|
||||
* @property {string} birthtime file birth time. will get it from VCS or fallback to filesystem when it is not available
|
||||
* @property {string} mtime file modification time. will get it from VCS or fallback to filesystem when it is not available
|
||||
* @property {string} authorName if the file is tracked by VCS, it will get the author name from VCS. else it will get it from current user name
|
||||
* @property {string} authorEmail if the file is tracked by VCS, it will get the author email from VCS. else it will get it from current user email
|
||||
* @property {string} userName else it will get it from current user name
|
||||
* @property {string} userEmail user email is from VSCode config, and fallback to VCS config
|
||||
* @property {string} companyName
|
||||
* @property {string} projectName name of current project
|
||||
* @property {string} filePath the file path, relative to project root with POSIX path separator
|
||||
* @property {string} dirPath the directory path, relative to project root with POSIX path separator
|
||||
* @property {string} fileName filename with extension
|
||||
*/
|
||||
|
||||
/**
|
||||
* @typedef {string | number | null | undefined | Template | boolean} TemplateInterpolation NOTE: boolean or falsy value will render empty string
|
||||
*
|
||||
* @typedef {{ strings: TemplateStringsArray; interpolations: TemplateInterpolation[]; }} Template
|
||||
* @typedef {(strings: TemplateStringsArray, ...values: any[]) => string} ITemplateFunction
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Please confirm your provider extends from globalThis.FileheaderLanguageProvider
|
||||
*/
|
||||
class CustomLanguageProvider extends globalThis.FileheaderLanguageProvider {
|
||||
/**
|
||||
* @type {string[]}
|
||||
*/
|
||||
languages = [
|
||||
"java",
|
||||
"javascript",
|
||||
"typescript",
|
||||
"javascriptreact",
|
||||
"typescriptreact",
|
||||
];
|
||||
|
||||
/**
|
||||
* @type {string=} the language block comment start string.
|
||||
* this is for future feature: support detect old custom template when custom template changes
|
||||
*/
|
||||
blockCommentStart = "/**";
|
||||
|
||||
/**
|
||||
* @type {string=}
|
||||
*/
|
||||
blockCommentEnd = "*/";
|
||||
|
||||
/**
|
||||
* get your template when document language matched
|
||||
* @param {ITemplateFunction} tpl template function, it is a tagged function, support nested interpolation
|
||||
* @param {FileheaderVariable} variables template variables
|
||||
* @returns {Template}
|
||||
*/
|
||||
getTemplate(tpl, variables) {
|
||||
// prettier-ignore
|
||||
return tpl
|
||||
`/**
|
||||
* @Author: ${variables.authorName} <${variables.authorEmail}>
|
||||
* @Date: ${variables.birthtime}
|
||||
* @LastEditors: ${variables.userName}
|
||||
* @LastModified: ${variables.mtime}
|
||||
* @FilePath: ${variables.filePath}
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2025} by Kane All rights reserved
|
||||
*/`;
|
||||
}
|
||||
}
|
||||
|
||||
// export your provider classes
|
||||
module.exports = [CustomLanguageProvider];
|
@ -1,4 +1,13 @@
|
||||
|
||||
/**
|
||||
* @Author: Kane Wang <wangkane@qq.com>
|
||||
* @Date: 2023-05-26 18:40:36
|
||||
* @LastEditors: Kane Wang
|
||||
* @LastModified: 2025-05-07 22:02:07
|
||||
* @FilePath: src/main/java/com/cpic/xim/utils/config/EncryptionParameters.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) 2025 by Kane All rights reserved
|
||||
*/
|
||||
package com.cpic.xim.utils.config;
|
||||
|
||||
public class EncryptionParameters
|
||||
|
@ -0,0 +1,65 @@
|
||||
/**
|
||||
* @Author: Kane Wang <wangkane@qq.com>
|
||||
* @Date: 2024-04-29 11:09:50
|
||||
* @LastEditors: Kane Wang
|
||||
* @LastModified: 2025-05-07 22:04:08
|
||||
* @FilePath: src/main/java/com/cpic/xim/utils/http/HttpUtils.java
|
||||
* @Description: 用于http的相关工具方法
|
||||
*
|
||||
* Copyright (c) 2025 by Kane All rights reserved
|
||||
*/
|
||||
package com.cpic.xim.utils.http;
|
||||
|
||||
import java.util.ArrayList;
|
||||
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;
|
||||
|
||||
public class HttpUtils
|
||||
{
|
||||
/**
|
||||
*
|
||||
* @param url
|
||||
* @param bodyMap
|
||||
* @return
|
||||
*/
|
||||
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 "";
|
||||
}
|
||||
}
|
||||
}
|
@ -1,39 +1,24 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
/**
|
||||
* @Author: Kane Wang <wangkane@qq.com>
|
||||
* @Date: 2023-05-26 18:40:36
|
||||
* @LastEditors: Kane Wang
|
||||
* @LastModified: 2025-05-08 18:55:36
|
||||
* @FilePath: src/main/java/com/cpic/xim/utils/newcitizen/NewCitizenUitls.java
|
||||
* @Description:
|
||||
*
|
||||
* @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.
|
||||
* Copyright (c) 2025 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.cpic.xim.utils.http.HttpUtils;
|
||||
import com.cpic.xim.utils.security.decode.DecryptionUtils;
|
||||
import com.cpic.xim.utils.security.encode.EncryptionUtils;
|
||||
import com.cpic.xim.utils.security.sign.SignUtils;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.core.JsonParseException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
public class NewCitizenUitls
|
||||
@ -72,7 +57,7 @@ public class NewCitizenUitls
|
||||
params.put( "key", key );
|
||||
params.put( "sign", sign );
|
||||
|
||||
String resultJSON = sendPost( identifyURL, params );
|
||||
String resultJSON = HttpUtils.sendPost( identifyURL, params );
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
IdentifyResult identifyResult = null;
|
||||
ResponseResult response = null;
|
||||
@ -90,39 +75,6 @@ public class NewCitizenUitls
|
||||
|
||||
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 "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,21 +1,24 @@
|
||||
/*
|
||||
* @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:
|
||||
/**
|
||||
* @Author: Kane Wang <wangkane@qq.com>
|
||||
* @Date: 2023-05-26 18:40:36
|
||||
* @LastEditors: Kane Wang
|
||||
* @LastModified: 2025-05-07 14:59:15
|
||||
* @FilePath: src/main/java/com/cpic/xim/web/controllers/NewCitizen/IdentifyNewCitizenRequest.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
* Copyright (c) 2025 by Kane All rights reserved
|
||||
*/
|
||||
package com.cpic.xim.web.controllers.NewCitizen;
|
||||
package com.cpic.xim.web.controllers.newcitizen;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
public class IdentifyNewCitizenRequest
|
||||
{
|
||||
public IdentifyNewCitizenRequest() {}
|
||||
public IdentifyNewCitizenRequest()
|
||||
{
|
||||
}
|
||||
|
||||
public String getIdCardNo()
|
||||
public String getIdCardNo()
|
||||
{
|
||||
return idCardNo;
|
||||
}
|
||||
@ -35,9 +38,9 @@ public class IdentifyNewCitizenRequest
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
@JsonProperty("idcard_no")
|
||||
@JsonProperty( "idcard_no" )
|
||||
private String idCardNo;
|
||||
|
||||
@JsonProperty("name")
|
||||
@JsonProperty( "name" )
|
||||
private String name;
|
||||
}
|
@ -1,13 +1,14 @@
|
||||
/*
|
||||
* @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:
|
||||
/**
|
||||
* @Author: Kane Wang <wangkane@qq.com>
|
||||
* @Date: 2024-04-29 11:09:50
|
||||
* @LastEditors: Kane Wang
|
||||
* @LastModified: 2025-05-07 22:01:21
|
||||
* @FilePath: src/main/java/com/cpic/xim/web/controllers/newcitizen/IdentifyNewCitizenResponse.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
* Copyright (c) 2025 by Kane All rights reserved
|
||||
*/
|
||||
package com.cpic.xim.web.controllers.NewCitizen;
|
||||
package com.cpic.xim.web.controllers.newcitizen;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
|
@ -1,14 +1,14 @@
|
||||
/*
|
||||
* @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:
|
||||
/**
|
||||
* @Author: Kane Wang <wangkane@qq.com>
|
||||
* @Date: 2024-04-29 11:09:50
|
||||
* @LastEditors: Kane Wang
|
||||
* @LastModified: 2025-05-07 22:00:48
|
||||
* @FilePath: src/main/java/com/cpic/xim/web/controllers/newcitizen/QueryResultController.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
* Copyright (c) 2025 by Kane All rights reserved
|
||||
*/
|
||||
|
||||
package com.cpic.xim.web.controllers.NewCitizen;
|
||||
package com.cpic.xim.web.controllers.newcitizen;
|
||||
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import org.springframework.stereotype.Controller;
|
||||
@ -23,37 +23,37 @@ import com.cpic.xim.utils.newcitizen.*;
|
||||
@Controller
|
||||
public class QueryResultController
|
||||
{
|
||||
@RequestMapping("/save_score.do")
|
||||
public void saveQueryResult(HttpServletResponse response, @RequestBody QueryResultRequest result )
|
||||
@RequestMapping( "/save_score.do" )
|
||||
public void saveQueryResult( HttpServletResponse response, @RequestBody QueryResultRequest result )
|
||||
{
|
||||
response.setStatus(HttpServletResponse.SC_OK);
|
||||
response.setStatus( HttpServletResponse.SC_OK );
|
||||
}
|
||||
|
||||
@RequestMapping("/identify.do")
|
||||
@RequestMapping( "/identify.do" )
|
||||
@ResponseBody
|
||||
public IdentifyNewCitizenResponse identifyNewCitizen(@RequestBody IdentifyNewCitizenRequest request )
|
||||
public IdentifyNewCitizenResponse identifyNewCitizen( @RequestBody IdentifyNewCitizenRequest request )
|
||||
{
|
||||
String idCardNo = request.getIdCardNo();
|
||||
String name = request.getName();
|
||||
IdentifyResult result = null;
|
||||
String idCardNo = request.getIdCardNo();
|
||||
String name = request.getName();
|
||||
IdentifyResult result = null;
|
||||
IdentifyNewCitizenResponse response = new IdentifyNewCitizenResponse();
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
result = NewCitizenUitls.identifyNewCitizen(idCardNo, name);
|
||||
result = NewCitizenUitls.identifyNewCitizen( idCardNo, name );
|
||||
|
||||
response.setSuccess(true);
|
||||
response.setMessage("调用成功");
|
||||
response.setCitizenType(result.getCitizenType());
|
||||
response.setScore(result.getScore());
|
||||
response.setExpireDate(result.getExpireDate());
|
||||
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());
|
||||
response.setSuccess( false );
|
||||
response.setMessage( error.getMessage() );
|
||||
}
|
||||
|
||||
return response;
|
||||
|
@ -1,5 +1,14 @@
|
||||
|
||||
package com.cpic.xim.web.controllers.NewCitizen;
|
||||
/**
|
||||
* @Author: Kane Wang <wangkane@qq.com>
|
||||
* @Date: 2024-04-29 11:09:50
|
||||
* @LastEditors: Kane Wang
|
||||
* @LastModified: 2025-05-07 22:00:35
|
||||
* @FilePath: src/main/java/com/cpic/xim/web/controllers/newcitizen/QueryResultRequest.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) 2025 by Kane All rights reserved
|
||||
*/
|
||||
package com.cpic.xim.web.controllers.newcitizen;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-05-25 11:02:53
|
||||
* @LastEditors: Kane
|
||||
* @FilePath: /NewCitizenQueryResult/src/main/java/com/cpic/xim/web/filters/CrosFilter.java
|
||||
* @Description:
|
||||
/**
|
||||
* @Author: Kane Wang <wangkane@qq.com>
|
||||
* @Date: 2023-05-26 18:40:36
|
||||
* @LastEditors: Kane Wang
|
||||
* @LastModified: 2025-05-07 22:00:26
|
||||
* @FilePath: src/main/java/com/cpic/xim/web/filters/CrosFilter.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
* Copyright (c) 2025 by Kane All rights reserved
|
||||
*/
|
||||
|
||||
package com.cpic.xim.web.filters;
|
||||
|
||||
import java.io.IOException;
|
||||
@ -24,26 +24,27 @@ public class CrosFilter implements Filter
|
||||
{
|
||||
@Override
|
||||
public void doFilter( ServletRequest req, ServletResponse resp, FilterChain chain )
|
||||
throws ServletException, IOException
|
||||
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);
|
||||
|
||||
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()) )
|
||||
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" );
|
||||
"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" );
|
||||
|
@ -1,7 +1,11 @@
|
||||
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<web-app
|
||||
version="4.0"
|
||||
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
|
||||
xmlns:javaee="http://xmlns.jcp.org/xml/ns/javaee"
|
||||
xmlns:xml="http://www.w3.org/XML/1998/namespace"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
|
||||
version="3.1">
|
||||
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd">
|
||||
|
||||
<display-name>Archetype Created Web Application</display-name>
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user