diff --git a/code/cpicxim-huixiabao/pom.xml b/code/cpicxim-huixiabao/pom.xml index 4aa4c08..da6c93e 100644 --- a/code/cpicxim-huixiabao/pom.xml +++ b/code/cpicxim-huixiabao/pom.xml @@ -9,10 +9,8 @@ cpicxim-huixiabao 1.0-SNAPSHOT war - - cpicxim-huixiabao Maven Webapp - - http://www.example.com + cpicxim-huixiabao-backend + http://www.cpic.com.cn UTF-8 @@ -20,6 +18,7 @@ 18 6.2.4 2.24.3 + 2.18.3 @@ -30,6 +29,7 @@ test + org.springframework spring-context @@ -46,7 +46,6 @@ spring-web ${spring.version} - org.springframework spring-webmvc @@ -60,6 +59,7 @@ provided + org.apache.logging.log4j log4j-core @@ -75,12 +75,30 @@ log4j-api ${log4j.version} - + org.apache.directory.studio org.apache.commons.codec 1.8 + + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + com.fasterxml.jackson.core + jackson-core + ${jackson.version} + + + com.fasterxml.jackson.core + jackson-annotations + ${jackson.version} + + @@ -103,7 +121,7 @@ maven-war-plugin 3.4.0 - ${project.build.directory}/../../../../输出/back/ + ${project.build.directory}/../../../输出/back/ diff --git a/code/cpicxim-huixiabao/src/main/java/com/cpic/xim/huixiabao/web/controllers/MediCover/MediCoverController.java b/code/cpicxim-huixiabao/src/main/java/com/cpic/xim/huixiabao/web/controllers/MediCover/MediCoverController.java new file mode 100644 index 0000000..68208f2 --- /dev/null +++ b/code/cpicxim-huixiabao/src/main/java/com/cpic/xim/huixiabao/web/controllers/MediCover/MediCoverController.java @@ -0,0 +1,54 @@ +/* + * @Author: Kane + * + * @Date: 2025-03-15 17:09:50 + * + * @LastEditors: Kane + * + * @FilePath: /cpicxim-huixiabao/src/main/java/com/cpic/xim/huixiabao/web/controllers/MediCover/MediCoverController.java + * + * @Description: + * + * Copyright (c) ${2023} by Kane, All Rights Reserved. + */ +package com.cpic.xim.huixiabao.web.controllers.MediCover; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import org.springframework.web.bind.annotation.PostMapping; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.cpic.xim.utils.secrecy.*;; + +@Controller +@RequestMapping( "/huixiabao" ) +public class MediCoverController +{ + private static Logger logger = LoggerFactory.getLogger( MediCoverController.class ); + private static String privateKey = "MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAMBanAXTnHChd6W/vYq6eVmmr1R2p25tghivDEb8qrgxHMCY3lqYhJAw3jgQAH3HzSOFxZ3Mz/WcRaW3CzWfAZ0mm5dcVY0qEgyT/1BOsdhLwKa3BBuURRCEp5ZPapErm3Ugl/OBxjEURgtc9JnVBOECc9Kvk3FXvuN4tDWl18lxAgMBAAECgYBBAJ3HLkqomTg4sAIaloeZr0WC0pIkNCeJteX9OzdqBVbFEyPZE7+AhrMh2O6BkvqU7YjpmaQRSR0UMjY8iZ5eaJ8vkPJPFgoJI14dqj3Pby46GYqC8iPHTeFN35RL6Sgktt9i/loLoiRj6ifQ2AqnlE3e66Iaw1Zdnx1Lt9/T7QJBAP6PZatPD4UM9kQ0xO1QmJ+IsgLBhv3fhn2i8X4NSJGJ1yi9+JWnQ+CfBZ2u/V0op1Wz5kIDK7BA40o2Ntlf6acCQQDBcSNGlyE5sSSJS39pnbTqxNjKoakBQ5LFIrk4ld8Vuk0H7dcdfUittHoDnNMn9TKIIAvxo0s4fQe8WMPqH2cnAkEA4x49r6JSTntKHYCXUsTd5zim2h6gulF8RQvkOnrPjEpXVVppN9yMixRWhmFiXIOxCJ4BilQZ3p+GKuhD953DcQJBAKdGjpqcVb7t0AppnuRV2/yn/FA9O0g8hs6yGDk2YJMJZ1NT+JEnpZGQX3KASphjEC9mhu2Np55RgD7/A2uRfEECQQCdyFLVuPMSnCRAXvwb0EegaM0sS4/bT3/fix7RpKqv7tsUfXXsL1bbxxp9b/FBJe834s6wqq0U2wTlfVHXD1Oh"; + private static String publicyKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDAWpwF05xwoXelv72KunlZpq9UdqdubYIYrwxG/Kq4MRzAmN5amISQMN44EAB9x80jhcWdzM/1nEWltws1nwGdJpuXXFWNKhIMk/9QTrHYS8CmtwQblEUQhKeWT2qRK5t1IJfzgcYxFEYLXPSZ1QThAnPSr5NxV77jeLQ1pdfJcQIDAQAB"; + + @PostMapping( "/xyx" ) + @ResponseBody + public static MediCoverResponse getHmbXyxInfo( + @RequestBody MediCoverRequestBody request + ) + { + MediCoverResponse response = new MediCoverResponse(); + ObjectMapper jsonMapper = new ObjectMapper(); + + String decryptData = AESUtils.decryptData( request.getKey(), privateKey, request.getBizContent() ); + + logger.info( "【接收小药箱数据】请求参数<{}>", request.toString() ); + logger.info( "【接收小药箱数据】解密参数<{}>", decryptData ); + + // jsonMapper.readValue(decryptData, null) + return response; + } +} \ No newline at end of file diff --git a/code/cpicxim-huixiabao/src/main/java/com/cpic/xim/huixiabao/web/controllers/MediCover/MediCoverRequestBody.java b/code/cpicxim-huixiabao/src/main/java/com/cpic/xim/huixiabao/web/controllers/MediCover/MediCoverRequestBody.java new file mode 100644 index 0000000..afaf9d1 --- /dev/null +++ b/code/cpicxim-huixiabao/src/main/java/com/cpic/xim/huixiabao/web/controllers/MediCover/MediCoverRequestBody.java @@ -0,0 +1,107 @@ +/* + * @Author: Kane + * + * @Date: 2025-03-15 16:41:05 + * + * @LastEditors: Kane + * + * @FilePath: + * /cpicxim-huixiabao/src/main/java/com/cpic/xim/huixiabao/web/controllers/MediCover/MediCoverRequestBody.java + * /cpicxim-huixiabao/src/main/java/com/cpic/xim/huixiabao/web/controllers/MediCover/MediCoverRequestBody.java + * + * @Description: + * + * Copyright (c) ${2023} by Kane, All Rights Reserved. + */ +package com.cpic.xim.huixiabao.web.controllers.MediCover; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class MediCoverRequestBody +{ + + @JsonProperty( "transId" ) + private String transId; + + @JsonProperty( "format" ) + private String format; + + @JsonProperty( "bizContent" ) + private String bizContent; + + @JsonProperty( "key" ) + private String key; + + @JsonProperty( "timestamp" ) + private String timestamp; + + public MediCoverRequestBody( + String transId, + String format, + String bizContent, + String key, + String timestamp + ) + { + this.transId = transId; + this.format = format; + this.bizContent = bizContent; + this.key = key; + this.timestamp = timestamp; + } + + public String getTransId() + { + return transId; + } + + public void setTransId( String transId ) + { + this.transId = transId; + } + + public String getFormat() + { + return format; + } + + public void setFormat( String format ) + { + this.format = format; + } + + public String getBizContent() + { + return bizContent; + } + + public void setBizContent( String bizContent ) + { + this.bizContent = bizContent; + } + + public String getKey() + { + return key; + } + + public void setKey( String key ) + { + this.key = key; + } + + public String getTimestamp() + { + return timestamp; + } + + public void setTimestamp( String timestamp ) + { + this.timestamp = timestamp; + } + + @Override public String toString() + { + return "MediCoverRequestBody [transId=" + transId + ", format=" + format + ", bizContent=" + bizContent + ", key=" + key + ", timestamp=" + timestamp + "]"; + } +} \ No newline at end of file diff --git a/code/cpicxim-huixiabao/src/main/java/com/cpic/xim/huixiabao/web/controllers/MediCover/MediCoverResponse.java b/code/cpicxim-huixiabao/src/main/java/com/cpic/xim/huixiabao/web/controllers/MediCover/MediCoverResponse.java new file mode 100644 index 0000000..ca32bff --- /dev/null +++ b/code/cpicxim-huixiabao/src/main/java/com/cpic/xim/huixiabao/web/controllers/MediCover/MediCoverResponse.java @@ -0,0 +1,54 @@ +/* + * @Author: Kane + * @Date: 2025-03-15 17:21:50 + * @LastEditors: Kane + * @FilePath: /cpicxim-huixiabao/src/main/java/com/cpic/xim/huixiabao/web/controllers/MediCover/MediCoverResponse.java + * @Description: + * + * Copyright (c) ${2023} by Kane, All Rights Reserved. + */ +package com.cpic.xim.huixiabao.web.controllers.MediCover; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class MediCoverResponse +{ + MediCoverResponse() + { + code = "500"; + message = "未知失败原因"; + subMessage = ""; + result = new MediCoverResultInResponse("", ""); + success = false; + } + + public MediCoverResponse( + String code, + String message, + String subMessage, + String key, + String content, + Boolean success ) + { + this.code = code; + this.message = message; + this.subMessage = subMessage; + this.result = new MediCoverResultInResponse(key, content); + this.success = success; + } + + @JsonProperty("code") + private String code; + + @JsonProperty("message") + private String message; + + @JsonProperty("subMessage") + private String subMessage; + + @JsonProperty("result") + private MediCoverResultInResponse result; + + @JsonProperty("success") + private Boolean success; +} \ No newline at end of file diff --git a/code/cpicxim-huixiabao/src/main/java/com/cpic/xim/huixiabao/web/controllers/MediCover/MediCoverResultInResponse.java b/code/cpicxim-huixiabao/src/main/java/com/cpic/xim/huixiabao/web/controllers/MediCover/MediCoverResultInResponse.java new file mode 100644 index 0000000..7834e98 --- /dev/null +++ b/code/cpicxim-huixiabao/src/main/java/com/cpic/xim/huixiabao/web/controllers/MediCover/MediCoverResultInResponse.java @@ -0,0 +1,55 @@ +/* + * @Author: Kane + * + * @Date: 2025-03-15 17:29:27 + * + * @LastEditors: Kane + * + * @FilePath: + * /cpicxim-huixiabao/src/main/java/com/cpic/xim/huixiabao/web/controllers/MediCover/MediCoverResultInResponse.java + * /cpicxim-huixiabao/src/main/java/com/cpic/xim/huixiabao/web/controllers/MediCover/MediCoverResultInResponse.java + * /cpicxim-huixiabao/src/main/java/com/cpic/xim/huixiabao/web/controllers/MediCover/MediCoverResultInResponse.java + * + * @Description: + * + * Copyright (c) ${2023} by Kane, All Rights Reserved. + */ +package com.cpic.xim.huixiabao.web.controllers.MediCover; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class MediCoverResultInResponse +{ + + public MediCoverResultInResponse( String key, String content ) + { + this.key = key; + this.content = content; + } + + public String getKey() + { + return key; + } + + public void setKey( String key ) + { + this.key = key; + } + + public String getContent() + { + return content; + } + + public void setContent( String content ) + { + this.content = content; + } + + @JsonProperty( "key" ) + private String key; + + @JsonProperty( "content" ) + private String content; +} \ No newline at end of file diff --git a/code/cpicxim-huixiabao/src/main/java/com/cpic/xim/huixiabao/web/data/nhs/HmbXyxInfo.java b/code/cpicxim-huixiabao/src/main/java/com/cpic/xim/huixiabao/web/data/nhs/HmbXyxInfo.java new file mode 100644 index 0000000..79de149 --- /dev/null +++ b/code/cpicxim-huixiabao/src/main/java/com/cpic/xim/huixiabao/web/data/nhs/HmbXyxInfo.java @@ -0,0 +1,86 @@ +/* + * @Author: Kane + * + * @Date: 2025-03-15 18:28:17 + * + * @LastEditors: Kane + * + * @FilePath: /cpicxim-huixiabao/src/main/java/com/cpic/xim/huixiabao/web/data/nhs/HmbXyxInfo.java + * + * @Description: 惠厦保 小药箱数据同步对象。 + * 对应惠厦保理赔规范接口 3.7。 + * Copyright (c) ${2023} by Kane, All Rights Reserved. + */ + +package com.cpic.xim.huixiabao.web.data.nhs; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class HmbXyxInfo +{ + + public String getPsnName() + { + return psnName; + } + + public void setPsnName( String psnName ) + { + this.psnName = psnName; + } + + public String getCertno() + { + return certno; + } + + public void setCertno( String certno ) + { + this.certno = certno; + } + + public String getServiceId() + { + return serviceId; + } + + public void setServiceId( String serviceId ) + { + this.serviceId = serviceId; + } + + public String getStatus() + { + return status; + } + + public void setStatus( String status ) + { + this.status = status; + } + + public String getXyxNo() + { + return xyxNo; + } + + public void setXyxNo( String xyxNo ) + { + this.xyxNo = xyxNo; + } + + @JsonProperty( "psnName" ) + private String psnName; + + @JsonProperty( "certno" ) + private String certno; + + @JsonProperty( "serviceId" ) + private String serviceId; + + @JsonProperty( "status" ) + private String status; + + @JsonProperty( "xyxNo" ) + private String xyxNo; +} \ No newline at end of file diff --git a/code/cpicxim-huixiabao/src/main/java/com/cpic/xim/utils/secrecy/Base64Utils.java b/code/cpicxim-huixiabao/src/main/java/com/cpic/xim/utils/secrecy/Base64Utils.java index 8ae7e8e..78857e5 100644 --- a/code/cpicxim-huixiabao/src/main/java/com/cpic/xim/utils/secrecy/Base64Utils.java +++ b/code/cpicxim-huixiabao/src/main/java/com/cpic/xim/utils/secrecy/Base64Utils.java @@ -1,11 +1,15 @@ /* * @Author: Kane - * @Date: 2025-03-15 12:04:19 - * @LastEditors: Kane - * @FilePath: /cpicxim-huixiabao/src/main/java/com/cpic/xim/utils/secrecy/Base64Utils.java - * @Description: * - * Copyright (c) ${2023} by Kane, All Rights Reserved. + * @Date: 2025-03-15 12:04:19 + * + * @LastEditors: Kane + * + * @FilePath: /cpicxim-huixiabao/src/main/java/com/cpic/xim/utils/secrecy/Base64Utils.java + * + * @Description: + * + * Copyright (c) ${2023} by Kane, All Rights Reserved. */ package com.cpic.xim.utils.secrecy; @@ -34,14 +38,12 @@ public class Base64Utils * @return * @throws Exception */ - public static byte[] decode( String base64 ) - throws Exception + public static byte[] decode( String base64 ) throws Exception { return Base64.decodeBase64( base64.getBytes() ); } - public static String decode( byte[] b ) - throws Exception + public static String decode( byte[] b ) throws Exception { return new String( Base64.decodeBase64( b ) ); } diff --git a/code/cpicxim-huixiabao/src/main/java/com/cpic/xim/huixiabao/web/filters/cros/CrosFilter.java b/code/cpicxim-huixiabao/src/main/java/com/cpic/xim/web/filters/cros/CrosFilter.java similarity index 90% rename from code/cpicxim-huixiabao/src/main/java/com/cpic/xim/huixiabao/web/filters/cros/CrosFilter.java rename to code/cpicxim-huixiabao/src/main/java/com/cpic/xim/web/filters/cros/CrosFilter.java index 5c4b8a4..d21d8d6 100644 --- a/code/cpicxim-huixiabao/src/main/java/com/cpic/xim/huixiabao/web/filters/cros/CrosFilter.java +++ b/code/cpicxim-huixiabao/src/main/java/com/cpic/xim/web/filters/cros/CrosFilter.java @@ -1,14 +1,18 @@ /* * @Author: Kane - * @Date: 2025-03-15 11:56:54 - * @LastEditors: Kane - * @FilePath: /cpicxim-huixiabao/src/main/java/com/cpic/xim/huixiabao/web/filters/cros/CrosFilter.java - * @Description: * - * Copyright (c) ${2023} by Kane, All Rights Reserved. + * @Date: 2025-03-15 11:56:54 + * + * @LastEditors: Kane + * + * @FilePath: /cpicxim-huixiabao/src/main/java/com/cpic/xim/web/filters/cros/CrosFilter.java + * + * @Description: + * + * Copyright (c) ${2023} by Kane, All Rights Reserved. */ -package com.cpic.xim.huixiabao.web.filters.cros; +package com.cpic.xim.web.filters.cros; import java.io.IOException; import javax.servlet.Filter; diff --git a/code/cpicxim-huixiabao/src/main/resources/log4j2.xml b/code/cpicxim-huixiabao/src/main/resources/log4j2.xml new file mode 100644 index 0000000..9e4d4f2 --- /dev/null +++ b/code/cpicxim-huixiabao/src/main/resources/log4j2.xml @@ -0,0 +1,40 @@ + + + + + + + + + [%t][%level][%d{HH:mm:ss.SSS}][%logger.%M{36}#%L] %msg%n + + + + + + + + + + [%t][%level][%d{HH:mm:ss.SSS}][%logger.%M{36}#%L] %msg%n + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/code/cpicxim-huixiabao/src/main/webapp/WEB-INF/web.xml b/code/cpicxim-huixiabao/src/main/webapp/WEB-INF/web.xml index c7b2872..1e6294b 100644 --- a/code/cpicxim-huixiabao/src/main/webapp/WEB-INF/web.xml +++ b/code/cpicxim-huixiabao/src/main/webapp/WEB-INF/web.xml @@ -22,4 +22,13 @@ /huixibao + + CrosFilter + com.cpic.xim.web.filters.cros.CrosFilter + + + CrosFilter + * + + \ No newline at end of file