Compare commits
	
		
			14 Commits
		
	
	
		
			使用宸汐的sdk
			...
			48e816f3ae
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 48e816f3ae | |||
| cd183f6676 | |||
| 7ecbdcdfa9 | |||
| 5acb55ba43 | |||
| 7bdf025bb5 | |||
| 636974c99c | |||
| d25f43db18 | |||
| 5bf6b6f679 | |||
| 47b91d277a | |||
| b2237d3270 | |||
| 9f805266d6 | |||
| c11d80a7bf | |||
| 22b6ed81bd | |||
| a42d742a5e | 
@@ -1,3 +1,10 @@
 | 
				
			|||||||
# cpicxim-huixiabao
 | 
					# cpicxim-huixiabao
 | 
				
			||||||
 | 
					
 | 
				
			||||||
惠厦保相关项目
 | 
					惠厦保相关项目。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					莲富wifi,管理员账号admin,密码Cpic#1234。wifi ssid HXB,密码 CpicXimHXB#2025。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GigabitEthernet0/0/11 柜台右一
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GigabitEthernet0/0/9 柜台右二
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										
											BIN
										
									
								
								code/cpicxim-XMNHSA-repeater/bak/zephyr-api-sdk-cx.jar
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								code/cpicxim-XMNHSA-repeater/bak/zephyr-api-sdk-cx.jar
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								code/cpicxim-XMNHSA-repeater/bak/zephyr-api-sdk-nhs.jar
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								code/cpicxim-XMNHSA-repeater/bak/zephyr-api-sdk-nhs.jar
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								code/cpicxim-XMNHSA-repeater/lib/zephyr-api-sdk-nhs.jar
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								code/cpicxim-XMNHSA-repeater/lib/zephyr-api-sdk-nhs.jar
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							@@ -6,7 +6,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  <groupId>com.cpic.xim</groupId>
 | 
					  <groupId>com.cpic.xim</groupId>
 | 
				
			||||||
  <artifactId>cpicxim-XMNHSA-repeater</artifactId>
 | 
					  <artifactId>cpicxim-XMNHSA-repeater</artifactId>
 | 
				
			||||||
  <version>1.0-SNAPSHOT</version>
 | 
					  <version>v20250314</version>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <name>cpicxim-XMNHSA-repeater</name>
 | 
					  <name>cpicxim-XMNHSA-repeater</name>
 | 
				
			||||||
  <!-- FIXME change it to the project's website -->
 | 
					  <!-- FIXME change it to the project's website -->
 | 
				
			||||||
@@ -45,23 +45,21 @@
 | 
				
			|||||||
    </dependency>
 | 
					    </dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!--jackson-->
 | 
					    <!--jackson-->
 | 
				
			||||||
    <dependency>
 | 
					    <!-- <dependency>
 | 
				
			||||||
      <groupId>com.fasterxml.jackson.core</groupId>
 | 
					      <groupId>com.fasterxml.jackson.core</groupId>
 | 
				
			||||||
      <artifactId>jackson-databind</artifactId>
 | 
					      <artifactId>jackson-databind</artifactId>
 | 
				
			||||||
      <version>2.14.2</version>
 | 
					      <version>2.14.2</version>
 | 
				
			||||||
    </dependency>
 | 
					    </dependency>
 | 
				
			||||||
    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
 | 
					 | 
				
			||||||
    <dependency>
 | 
					    <dependency>
 | 
				
			||||||
      <groupId>com.fasterxml.jackson.core</groupId>
 | 
					      <groupId>com.fasterxml.jackson.core</groupId>
 | 
				
			||||||
      <artifactId>jackson-core</artifactId>
 | 
					      <artifactId>jackson-core</artifactId>
 | 
				
			||||||
      <version>2.13.4</version>
 | 
					      <version>2.13.4</version>
 | 
				
			||||||
    </dependency>
 | 
					    </dependency>
 | 
				
			||||||
    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
 | 
					 | 
				
			||||||
    <dependency>
 | 
					    <dependency>
 | 
				
			||||||
      <groupId>com.fasterxml.jackson.core</groupId>
 | 
					      <groupId>com.fasterxml.jackson.core</groupId>
 | 
				
			||||||
      <artifactId>jackson-annotations</artifactId>
 | 
					      <artifactId>jackson-annotations</artifactId>
 | 
				
			||||||
      <version>2.13.4</version>
 | 
					      <version>2.13.4</version>
 | 
				
			||||||
    </dependency>
 | 
					    </dependency> -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!-- log-4j -->
 | 
					    <!-- log-4j -->
 | 
				
			||||||
    <dependency>
 | 
					    <dependency>
 | 
				
			||||||
@@ -80,35 +78,14 @@
 | 
				
			|||||||
      <version>2.20.0</version>
 | 
					      <version>2.20.0</version>
 | 
				
			||||||
    </dependency>
 | 
					    </dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!-- POI -->
 | 
					 | 
				
			||||||
    <!-- <dependency>
 | 
					 | 
				
			||||||
      <groupId>org.apache.poi</groupId>
 | 
					 | 
				
			||||||
      <artifactId>poi</artifactId>
 | 
					 | 
				
			||||||
      <version>5.2.3</version>
 | 
					 | 
				
			||||||
    </dependency>
 | 
					 | 
				
			||||||
    <dependency>
 | 
					 | 
				
			||||||
      <groupId>org.apache.poi</groupId>
 | 
					 | 
				
			||||||
      <artifactId>poi-ooxml</artifactId>
 | 
					 | 
				
			||||||
      <version>5.2.3</version>
 | 
					 | 
				
			||||||
    </dependency> -->
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <!-- mybatis -->
 | 
					 | 
				
			||||||
    <!-- <dependency>
 | 
					 | 
				
			||||||
      <groupId>org.mybatis</groupId>
 | 
					 | 
				
			||||||
      <artifactId>mybatis</artifactId>
 | 
					 | 
				
			||||||
      <version>3.5.19</version>
 | 
					 | 
				
			||||||
    </dependency> -->
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <dependency>
 | 
					    <dependency>
 | 
				
			||||||
      <groupId> cn.hsa.zephyr</groupId>
 | 
					      <groupId> cn.hsa.zephyr</groupId>
 | 
				
			||||||
      <artifactId>zephyr-api-sdk</artifactId>
 | 
					      <artifactId>zephyr-api-sdk</artifactId>
 | 
				
			||||||
      <version>2.0.1</version>
 | 
					      <version>2.0.1</version>
 | 
				
			||||||
      <scope>system</scope>
 | 
					      <scope>system</scope>
 | 
				
			||||||
      <systemPath>${project.basedir}/lib/zephyr-api-sdk-from-nhs.jar</systemPath>
 | 
					      <systemPath>${project.basedir}/lib/zephyr-api-sdk-nhs.jar</systemPath>
 | 
				
			||||||
    </dependency>
 | 
					    </dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <dependency>
 | 
					    <dependency>
 | 
				
			||||||
      <groupId>com.mysql</groupId>
 | 
					      <groupId>com.mysql</groupId>
 | 
				
			||||||
      <artifactId>mysql-connector-j</artifactId>
 | 
					      <artifactId>mysql-connector-j</artifactId>
 | 
				
			||||||
@@ -125,7 +102,7 @@
 | 
				
			|||||||
      <artifactId>commons-logging</artifactId>
 | 
					      <artifactId>commons-logging</artifactId>
 | 
				
			||||||
      <version>1.3.5</version>
 | 
					      <version>1.3.5</version>
 | 
				
			||||||
    </dependency>
 | 
					    </dependency>
 | 
				
			||||||
        <dependency>
 | 
					    <dependency>
 | 
				
			||||||
      <groupId>com.alibaba</groupId>
 | 
					      <groupId>com.alibaba</groupId>
 | 
				
			||||||
      <artifactId>fastjson</artifactId>
 | 
					      <artifactId>fastjson</artifactId>
 | 
				
			||||||
      <!-- <version>1.2.83</version> -->
 | 
					      <!-- <version>1.2.83</version> -->
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -59,7 +59,7 @@ public class HuixiabaoConfig
 | 
				
			|||||||
    private static final int MAX_COUNT_PER_REQUEST = 500;
 | 
					    private static final int MAX_COUNT_PER_REQUEST = 500;
 | 
				
			||||||
    private static final int SLEEP_SECONDS         = 10;
 | 
					    private static final int SLEEP_SECONDS         = 10;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final String url       = "http://172.18.1.150:9040/h3c/new/test/api/gafe/rest";
 | 
					    private static final String url       = "http://172.18.1.150:9040/h3c/new/api/gafe/rest";
 | 
				
			||||||
    private static final String appid     = "hxb-tb";
 | 
					    private static final String appid     = "hxb-tb";
 | 
				
			||||||
    private static final String appSecret = "60F468FB46170DD4CF6CBECE215DBFC0";
 | 
					    private static final String appSecret = "60F468FB46170DD4CF6CBECE215DBFC0";
 | 
				
			||||||
    private static final String funId     = "XY00.00.00.03";
 | 
					    private static final String funId     = "XY00.00.00.03";
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,12 +13,12 @@
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
package com.cpic.xim.huixiabao.data.pojo;
 | 
					package com.cpic.xim.huixiabao.data.pojo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.fasterxml.jackson.annotation.JsonInclude;
 | 
					// import com.fasterxml.jackson.annotation.JsonInclude;
 | 
				
			||||||
import com.fasterxml.jackson.annotation.JsonProperty;
 | 
					// import com.fasterxml.jackson.annotation.JsonProperty;
 | 
				
			||||||
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
 | 
					// import com.fasterxml.jackson.annotation.JsonPropertyOrder;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@JsonInclude( JsonInclude.Include.NON_EMPTY )
 | 
					// @JsonInclude( JsonInclude.Include.NON_EMPTY )
 | 
				
			||||||
@JsonPropertyOrder( alphabetic = true )
 | 
					// @JsonPropertyOrder( alphabetic = true )
 | 
				
			||||||
public class HmbXyxInfo
 | 
					public class HmbXyxInfo
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -91,19 +91,10 @@ public class HmbXyxInfo
 | 
				
			|||||||
        return "HmbXyxInfo [psnName=" + psnName + ", certNo=" + certNo + ", serviceId=" + serviceId + ", status=" + status + ", xyxNo=" + xyxNo + "]";
 | 
					        return "HmbXyxInfo [psnName=" + psnName + ", certNo=" + certNo + ", serviceId=" + serviceId + ", status=" + status + ", xyxNo=" + xyxNo + "]";
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @JsonProperty( "psnName" )
 | 
					 | 
				
			||||||
    private String psnName;
 | 
					    private String psnName;
 | 
				
			||||||
 | 
					 | 
				
			||||||
    @JsonProperty( "certno" )
 | 
					 | 
				
			||||||
    private String certNo;
 | 
					    private String certNo;
 | 
				
			||||||
 | 
					 | 
				
			||||||
    @JsonProperty( "serviceId" )
 | 
					 | 
				
			||||||
    private String serviceId;
 | 
					    private String serviceId;
 | 
				
			||||||
 | 
					 | 
				
			||||||
    @JsonProperty( "status" )
 | 
					 | 
				
			||||||
    private String status;
 | 
					    private String status;
 | 
				
			||||||
 | 
					 | 
				
			||||||
    @JsonProperty( "xyxNo" )
 | 
					 | 
				
			||||||
    private String xyxNo;
 | 
					    private String xyxNo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -10,12 +10,7 @@
 | 
				
			|||||||
package com.cpic.xim.huixiabao.data.pojo;
 | 
					package com.cpic.xim.huixiabao.data.pojo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.Vector;
 | 
					import java.util.Vector;
 | 
				
			||||||
import com.fasterxml.jackson.annotation.JsonInclude;
 | 
					 | 
				
			||||||
import com.fasterxml.jackson.annotation.JsonProperty;
 | 
					 | 
				
			||||||
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
@JsonInclude( JsonInclude.Include.NON_EMPTY )
 | 
					 | 
				
			||||||
@JsonPropertyOrder( alphabetic = true )
 | 
					 | 
				
			||||||
public class HmbXyxInfoRequest
 | 
					public class HmbXyxInfoRequest
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public HmbXyxInfoRequest()
 | 
					    public HmbXyxInfoRequest()
 | 
				
			||||||
@@ -51,9 +46,6 @@ public class HmbXyxInfoRequest
 | 
				
			|||||||
        this.hmbList = hmbList;
 | 
					        this.hmbList = hmbList;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @JsonProperty("topic")
 | 
					 | 
				
			||||||
    private String topic; // 业务类型
 | 
					    private String topic; // 业务类型
 | 
				
			||||||
 | 
					 | 
				
			||||||
    @JsonProperty("hmbList")
 | 
					 | 
				
			||||||
    private Vector<HmbXyxInfo> hmbList;
 | 
					    private Vector<HmbXyxInfo> hmbList;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,76 +1,101 @@
 | 
				
			|||||||
/*
 | 
					/*
 | 
				
			||||||
 * @Author: Kane
 | 
					 * @Author: Kane
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 * @Date: 2025-03-06 14:17:24
 | 
					 * @Date: 2025-03-06 14:17:24
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 * @LastEditors: Kane
 | 
					 * @LastEditors: Kane
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 * @FilePath: /cpicxim-XMNHSA-repeater/src/main/java/com/cpic/xim/huixiabao/data/pojo/NHACommenRequestBody.java
 | 
					 * @FilePath: /cpicxim-XMNHSA-repeater/src/main/java/com/cpic/xim/huixiabao/data/pojo/NHACommenRequestBody.java
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 * @Description: 易联众请求共通报文结构
 | 
					 * @Description: 易联众请求共通报文结构
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Copyright (c) ${2023} by Kane, All Rights Reserved.
 | 
					 * Copyright (c) ${2023} by Kane, All Rights Reserved.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
package com.cpic.xim.huixiabao.data.pojo;
 | 
					package com.cpic.xim.huixiabao.data.pojo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.fasterxml.jackson.annotation.JsonProperty;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public class NHACommenRequestBody
 | 
					public class NHACommenRequestBody
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   
 | 
					
 | 
				
			||||||
   public String getChs_fjs_appid()
 | 
					   public String getChs_fjs_appid()
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      return chs_fjs_appid;
 | 
					      return chs_fjs_appid;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   public void setChs_fjs_appid( String chs_fjs_appid )
 | 
					   public void setChs_fjs_appid( String chs_fjs_appid )
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      this.chs_fjs_appid = chs_fjs_appid;
 | 
					      this.chs_fjs_appid = chs_fjs_appid;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   public String getChs_fjs_appsecret()
 | 
					   public String getChs_fjs_appsecret()
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      return chs_fjs_appsecret;
 | 
					      return chs_fjs_appsecret;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   public void setChs_fjs_appsecret( String chs_fjs_appsecret )
 | 
					   public void setChs_fjs_appsecret( String chs_fjs_appsecret )
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      this.chs_fjs_appsecret = chs_fjs_appsecret;
 | 
					      this.chs_fjs_appsecret = chs_fjs_appsecret;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   public String getChs_fjs_token()
 | 
					   public String getChs_fjs_token()
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      return chs_fjs_token;
 | 
					      return chs_fjs_token;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   public void setChs_fjs_token( String chs_fjs_token )
 | 
					   public void setChs_fjs_token( String chs_fjs_token )
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      this.chs_fjs_token = chs_fjs_token;
 | 
					      this.chs_fjs_token = chs_fjs_token;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   public String getChs_fjs_funid()
 | 
					   public String getChs_fjs_funid()
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      return chs_fjs_funid;
 | 
					      return chs_fjs_funid;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   public void setChs_fjs_funid( String chs_fjs_funid )
 | 
					   public void setChs_fjs_funid( String chs_fjs_funid )
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      this.chs_fjs_funid = chs_fjs_funid;
 | 
					      this.chs_fjs_funid = chs_fjs_funid;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   public String getChs_fjs_encdata()
 | 
					   public String getChs_fjs_encdata()
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      return chs_fjs_encdata;
 | 
					      return chs_fjs_encdata;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   public void setChs_fjs_encdata( String chs_fjs_encdata )
 | 
					   public void setChs_fjs_encdata( String chs_fjs_encdata )
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      this.chs_fjs_encdata = chs_fjs_encdata;
 | 
					      this.chs_fjs_encdata = chs_fjs_encdata;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   public String getChs_fjs_sign()
 | 
					   public String getChs_fjs_sign()
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      return chs_fjs_sign;
 | 
					      return chs_fjs_sign;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   public void setChs_fjs_sign( String chs_fjs_sign )
 | 
					   public void setChs_fjs_sign( String chs_fjs_sign )
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      this.chs_fjs_sign = chs_fjs_sign;
 | 
					      this.chs_fjs_sign = chs_fjs_sign;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   public int getChs_fjs_timestamp()
 | 
					   public int getChs_fjs_timestamp()
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      return chs_fjs_timestamp;
 | 
					      return chs_fjs_timestamp;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   public void setChs_fjs_timestamp( int chs_fjs_timestamp )
 | 
					   public void setChs_fjs_timestamp( int chs_fjs_timestamp )
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      this.chs_fjs_timestamp = chs_fjs_timestamp;
 | 
					      this.chs_fjs_timestamp = chs_fjs_timestamp;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   public String getData()
 | 
				
			||||||
 | 
					   {
 | 
				
			||||||
 | 
					      return data;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   public void setData( String data )
 | 
				
			||||||
 | 
					   {
 | 
				
			||||||
 | 
					      this.data = data;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   private String chs_fjs_appid; // 渠道id
 | 
					   private String chs_fjs_appid; // 渠道id
 | 
				
			||||||
   private String chs_fjs_appsecret; // 渠道私钥
 | 
					   private String chs_fjs_appsecret; // 渠道私钥
 | 
				
			||||||
   private String chs_fjs_token; // 请求时携带的动态令牌
 | 
					   private String chs_fjs_token; // 请求时携带的动态令牌
 | 
				
			||||||
@@ -78,5 +103,6 @@ public class NHACommenRequestBody
 | 
				
			|||||||
   private String chs_fjs_encdata; // 加密后的数据
 | 
					   private String chs_fjs_encdata; // 加密后的数据
 | 
				
			||||||
   private String chs_fjs_sign; // 签名数据串
 | 
					   private String chs_fjs_sign; // 签名数据串
 | 
				
			||||||
   private String data; // 未加密的数据
 | 
					   private String data; // 未加密的数据
 | 
				
			||||||
   private int chs_fjs_timestamp; // 时间戳
 | 
					   private int    chs_fjs_timestamp; // 时间戳
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -76,7 +76,7 @@ public class CpicximToXMNHS
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            String sql = "select info.psnName, info.certNo, info.serviceId, info.status, info.xyxNo \n" +
 | 
					            String sql = "select info.psnName, info.certNo, info.serviceId, info.status, info.xyxNo \n" +
 | 
				
			||||||
                         "  from HmbXyxInfo info, \n" +
 | 
					                         "  from HmbXyxInfo info, \n" +
 | 
				
			||||||
                         "       HmbXyxInfo_Update u  \n" +
 | 
					                         "       HmbXyxInfo_Update u \n" +
 | 
				
			||||||
                         "  where info.xyxNo = u.xyxNo";
 | 
					                         "  where info.xyxNo = u.xyxNo";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            connection = DriverManager.getConnection( url, userName, password );
 | 
					            connection = DriverManager.getConnection( url, userName, password );
 | 
				
			||||||
@@ -258,6 +258,7 @@ public class CpicximToXMNHS
 | 
				
			|||||||
        DefaultZephyrResponse resp   = null;
 | 
					        DefaultZephyrResponse resp   = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 数据
 | 
					        // 数据
 | 
				
			||||||
 | 
					        JSONObject         data = new JSONObject();
 | 
				
			||||||
        JSONObject         requestObject = new JSONObject();
 | 
					        JSONObject         requestObject = new JSONObject();
 | 
				
			||||||
        JSONObject         xyxInfo       = null;
 | 
					        JSONObject         xyxInfo       = null;
 | 
				
			||||||
        JSONArray          xyxInfoList   = new JSONArray();
 | 
					        JSONArray          xyxInfoList   = new JSONArray();
 | 
				
			||||||
@@ -294,6 +295,8 @@ public class CpicximToXMNHS
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                try
 | 
					                try
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
 | 
					                    data.remove("data");
 | 
				
			||||||
 | 
					                    data.put("data", requestObject);
 | 
				
			||||||
                    logger.info( "发送请求内容:" + requestObject.toJSONString() );
 | 
					                    logger.info( "发送请求内容:" + requestObject.toJSONString() );
 | 
				
			||||||
                    logger.info( "请求地址:" + HuixiabaoConfig.getUrl() );
 | 
					                    logger.info( "请求地址:" + HuixiabaoConfig.getUrl() );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -302,7 +305,9 @@ public class CpicximToXMNHS
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                    if ( resp != null )
 | 
					                    if ( resp != null )
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        logger.info( "发送成功,返回消息:" + resp.getData() );
 | 
					                        logger.info( "发送成功,返回消息Body:" + resp.getBody() );
 | 
				
			||||||
 | 
					                        logger.info( "发送成功,返回消息data:" + resp.getData() );
 | 
				
			||||||
 | 
					                        logger.info( "发送成功,返回消息message:" + resp.getMessage() );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        // 将已发送的数据从HmbXyxInfo_update表中清理掉
 | 
					                        // 将已发送的数据从HmbXyxInfo_update表中清理掉
 | 
				
			||||||
                        removePostedHmbXyxInfo( postedInfo );
 | 
					                        removePostedHmbXyxInfo( postedInfo );
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,7 +15,6 @@ package com.cpic.xim.huixiabao;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import static org.junit.jupiter.api.Assertions.assertTrue;
 | 
					import static org.junit.jupiter.api.Assertions.assertTrue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.sql.*;
 | 
					 | 
				
			||||||
import java.util.Vector;
 | 
					import java.util.Vector;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import org.junit.jupiter.api.Test;
 | 
					import org.junit.jupiter.api.Test;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										3
									
								
								code/cpicxim-huixiabao/.idea/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								code/cpicxim-huixiabao/.idea/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					# 默认忽略的文件
 | 
				
			||||||
 | 
					/shelf/
 | 
				
			||||||
 | 
					/workspace.xml
 | 
				
			||||||
							
								
								
									
										13
									
								
								code/cpicxim-huixiabao/.idea/compiler.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								code/cpicxim-huixiabao/.idea/compiler.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<project version="4">
 | 
				
			||||||
 | 
					  <component name="CompilerConfiguration">
 | 
				
			||||||
 | 
					    <annotationProcessing>
 | 
				
			||||||
 | 
					      <profile name="Maven default annotation processors profile" enabled="true">
 | 
				
			||||||
 | 
					        <sourceOutputDir name="target/generated-sources/annotations" />
 | 
				
			||||||
 | 
					        <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
 | 
				
			||||||
 | 
					        <outputRelativeToContentRoot value="true" />
 | 
				
			||||||
 | 
					        <module name="cpicxim-huixiabao" />
 | 
				
			||||||
 | 
					      </profile>
 | 
				
			||||||
 | 
					    </annotationProcessing>
 | 
				
			||||||
 | 
					  </component>
 | 
				
			||||||
 | 
					</project>
 | 
				
			||||||
							
								
								
									
										7
									
								
								code/cpicxim-huixiabao/.idea/encodings.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								code/cpicxim-huixiabao/.idea/encodings.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<project version="4">
 | 
				
			||||||
 | 
					  <component name="Encoding">
 | 
				
			||||||
 | 
					    <file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
 | 
				
			||||||
 | 
					    <file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
 | 
				
			||||||
 | 
					  </component>
 | 
				
			||||||
 | 
					</project>
 | 
				
			||||||
							
								
								
									
										20
									
								
								code/cpicxim-huixiabao/.idea/jarRepositories.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								code/cpicxim-huixiabao/.idea/jarRepositories.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<project version="4">
 | 
				
			||||||
 | 
					  <component name="RemoteRepositoriesConfiguration">
 | 
				
			||||||
 | 
					    <remote-repository>
 | 
				
			||||||
 | 
					      <option name="id" value="central" />
 | 
				
			||||||
 | 
					      <option name="name" value="Maven Central repository" />
 | 
				
			||||||
 | 
					      <option name="url" value="https://repo1.maven.org/maven2" />
 | 
				
			||||||
 | 
					    </remote-repository>
 | 
				
			||||||
 | 
					    <remote-repository>
 | 
				
			||||||
 | 
					      <option name="id" value="jboss.community" />
 | 
				
			||||||
 | 
					      <option name="name" value="JBoss Community repository" />
 | 
				
			||||||
 | 
					      <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
 | 
				
			||||||
 | 
					    </remote-repository>
 | 
				
			||||||
 | 
					    <remote-repository>
 | 
				
			||||||
 | 
					      <option name="id" value="central" />
 | 
				
			||||||
 | 
					      <option name="name" value="Central Repository" />
 | 
				
			||||||
 | 
					      <option name="url" value="https://maven.aliyun.com/repository/public" />
 | 
				
			||||||
 | 
					    </remote-repository>
 | 
				
			||||||
 | 
					  </component>
 | 
				
			||||||
 | 
					</project>
 | 
				
			||||||
							
								
								
									
										12
									
								
								code/cpicxim-huixiabao/.idea/misc.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								code/cpicxim-huixiabao/.idea/misc.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<project version="4">
 | 
				
			||||||
 | 
					  <component name="ExternalStorageConfigurationManager" enabled="true" />
 | 
				
			||||||
 | 
					  <component name="MavenProjectsManager">
 | 
				
			||||||
 | 
					    <option name="originalFiles">
 | 
				
			||||||
 | 
					      <list>
 | 
				
			||||||
 | 
					        <option value="$PROJECT_DIR$/pom.xml" />
 | 
				
			||||||
 | 
					      </list>
 | 
				
			||||||
 | 
					    </option>
 | 
				
			||||||
 | 
					  </component>
 | 
				
			||||||
 | 
					  <component name="ProjectRootManager" version="2" project-jdk-name="22" project-jdk-type="JavaSDK" />
 | 
				
			||||||
 | 
					</project>
 | 
				
			||||||
							
								
								
									
										6
									
								
								code/cpicxim-huixiabao/.idea/vcs.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								code/cpicxim-huixiabao/.idea/vcs.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<project version="4">
 | 
				
			||||||
 | 
					  <component name="VcsDirectoryMappings">
 | 
				
			||||||
 | 
					    <mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
 | 
				
			||||||
 | 
					  </component>
 | 
				
			||||||
 | 
					</project>
 | 
				
			||||||
							
								
								
									
										0
									
								
								code/cpicxim-huixiabao/.mvn/jvm.config
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								code/cpicxim-huixiabao/.mvn/jvm.config
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								code/cpicxim-huixiabao/.mvn/maven.config
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								code/cpicxim-huixiabao/.mvn/maven.config
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										87
									
								
								code/cpicxim-huixiabao/.vscode/fileheader.template.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								code/cpicxim-huixiabao/.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];
 | 
				
			||||||
							
								
								
									
										4
									
								
								code/cpicxim-huixiabao/.vscode/settings.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								code/cpicxim-huixiabao/.vscode/settings.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					    "java.configuration.updateBuildConfiguration": "automatic",
 | 
				
			||||||
 | 
					    "java.compile.nullAnalysis.mode": "automatic"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										178
									
								
								code/cpicxim-huixiabao/pom.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										178
									
								
								code/cpicxim-huixiabao/pom.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,178 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<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>cpicxim-huixiabao</artifactId>
 | 
				
			||||||
 | 
					  <version>1.0-SNAPSHOT</version>
 | 
				
			||||||
 | 
					  <packaging>war</packaging>
 | 
				
			||||||
 | 
					  <name>cpicxim-huixiabao-backend</name>
 | 
				
			||||||
 | 
					  <url>http://www.cpic.com.cn</url>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <properties>
 | 
				
			||||||
 | 
					    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 | 
				
			||||||
 | 
					    <maven.compiler.source>18</maven.compiler.source>
 | 
				
			||||||
 | 
					    <maven.compiler.target>18</maven.compiler.target>
 | 
				
			||||||
 | 
					    <spring.version>6.2.4</spring.version>
 | 
				
			||||||
 | 
					    <log4j.version>2.24.3</log4j.version>
 | 
				
			||||||
 | 
					    <jackson.version>2.18.3</jackson.version>
 | 
				
			||||||
 | 
					  </properties>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <dependencies>
 | 
				
			||||||
 | 
					    <dependency>
 | 
				
			||||||
 | 
					      <groupId>junit</groupId>
 | 
				
			||||||
 | 
					      <artifactId>junit</artifactId>
 | 
				
			||||||
 | 
					      <version>4.13.1</version>
 | 
				
			||||||
 | 
					      <scope>test</scope>
 | 
				
			||||||
 | 
					    </dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- springmvc -->
 | 
				
			||||||
 | 
					    <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>org.apache.commons</groupId>
 | 
				
			||||||
 | 
					      <artifactId>commons-fileupload2-jakarta-servlet6</artifactId>
 | 
				
			||||||
 | 
					      <version>2.0.0-M2</version>
 | 
				
			||||||
 | 
					    </dependency>
 | 
				
			||||||
 | 
					    <dependency>
 | 
				
			||||||
 | 
					      <groupId>commons-io</groupId>
 | 
				
			||||||
 | 
					      <artifactId>commons-io</artifactId>
 | 
				
			||||||
 | 
					      <version>2.18.0</version>
 | 
				
			||||||
 | 
					    </dependency> -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- <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.18.0</version>
 | 
				
			||||||
 | 
					    </dependency> -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- <dependency>
 | 
				
			||||||
 | 
					      <groupId>javax.servlet</groupId>
 | 
				
			||||||
 | 
					      <artifactId>javax.servlet-api</artifactId>
 | 
				
			||||||
 | 
					      <version>4.0.1</version>
 | 
				
			||||||
 | 
					      <scope>provided</scope>
 | 
				
			||||||
 | 
					    </dependency> -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <dependency>
 | 
				
			||||||
 | 
					      <groupId>jakarta.servlet</groupId>
 | 
				
			||||||
 | 
					      <artifactId>jakarta.servlet-api</artifactId>
 | 
				
			||||||
 | 
					      <version>6.1.0</version>
 | 
				
			||||||
 | 
					      <scope>provided</scope>
 | 
				
			||||||
 | 
					    </dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- log4j -->
 | 
				
			||||||
 | 
					    <dependency>
 | 
				
			||||||
 | 
					      <groupId>org.apache.logging.log4j</groupId>
 | 
				
			||||||
 | 
					      <artifactId>log4j-core</artifactId>
 | 
				
			||||||
 | 
					      <version>${log4j.version}</version>
 | 
				
			||||||
 | 
					    </dependency>
 | 
				
			||||||
 | 
					    <dependency>
 | 
				
			||||||
 | 
					      <groupId>org.apache.logging.log4j</groupId>
 | 
				
			||||||
 | 
					      <artifactId>log4j-slf4j2-impl</artifactId>
 | 
				
			||||||
 | 
					      <version>${log4j.version}</version>
 | 
				
			||||||
 | 
					    </dependency>
 | 
				
			||||||
 | 
					    <dependency>
 | 
				
			||||||
 | 
					      <groupId>org.apache.logging.log4j</groupId>
 | 
				
			||||||
 | 
					      <artifactId>log4j-api</artifactId>
 | 
				
			||||||
 | 
					      <version>${log4j.version}</version>
 | 
				
			||||||
 | 
					    </dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <dependency>
 | 
				
			||||||
 | 
					      <groupId>org.apache.directory.studio</groupId>
 | 
				
			||||||
 | 
					      <artifactId>org.apache.commons.codec</artifactId>
 | 
				
			||||||
 | 
					      <version>1.8</version>
 | 
				
			||||||
 | 
					    </dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- jackson -->
 | 
				
			||||||
 | 
					    <dependency>
 | 
				
			||||||
 | 
					      <groupId>com.fasterxml.jackson.core</groupId>
 | 
				
			||||||
 | 
					      <artifactId>jackson-databind</artifactId>
 | 
				
			||||||
 | 
					      <version>${jackson.version}</version>
 | 
				
			||||||
 | 
					    </dependency>
 | 
				
			||||||
 | 
					    <dependency>
 | 
				
			||||||
 | 
					      <groupId>com.fasterxml.jackson.core</groupId>
 | 
				
			||||||
 | 
					      <artifactId>jackson-core</artifactId>
 | 
				
			||||||
 | 
					      <version>${jackson.version}</version>
 | 
				
			||||||
 | 
					    </dependency>
 | 
				
			||||||
 | 
					    <dependency>
 | 
				
			||||||
 | 
					      <groupId>com.fasterxml.jackson.core</groupId>
 | 
				
			||||||
 | 
					      <artifactId>jackson-annotations</artifactId>
 | 
				
			||||||
 | 
					      <version>${jackson.version}</version>
 | 
				
			||||||
 | 
					    </dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  </dependencies>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <build>
 | 
				
			||||||
 | 
					    <finalName>cpicxim-huixiabao</finalName>
 | 
				
			||||||
 | 
					    <resources>
 | 
				
			||||||
 | 
					      <resource>
 | 
				
			||||||
 | 
					        <directory>src/main/resources</directory>
 | 
				
			||||||
 | 
					        <includes>
 | 
				
			||||||
 | 
					          <include>**/*.properties</include>
 | 
				
			||||||
 | 
					          <include>**/*.xml</include>
 | 
				
			||||||
 | 
					        </includes>
 | 
				
			||||||
 | 
					        <filtering>false</filtering>
 | 
				
			||||||
 | 
					      </resource>
 | 
				
			||||||
 | 
					    </resources>
 | 
				
			||||||
 | 
					    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to
 | 
				
			||||||
 | 
					      parent pom) -->
 | 
				
			||||||
 | 
					      <plugins>
 | 
				
			||||||
 | 
					        <plugin>
 | 
				
			||||||
 | 
					          <groupId>org.apache.maven.plugins</groupId>
 | 
				
			||||||
 | 
					          <artifactId>maven-war-plugin</artifactId>
 | 
				
			||||||
 | 
					          <version>3.4.0</version>
 | 
				
			||||||
 | 
					          <!-- <configuration>
 | 
				
			||||||
 | 
					            <outputDirectory>${project.build.directory}/../../../输出/back/</outputDirectory>
 | 
				
			||||||
 | 
					          </configuration> -->
 | 
				
			||||||
 | 
					        </plugin>
 | 
				
			||||||
 | 
					        <plugin>
 | 
				
			||||||
 | 
					          <groupId>org.apache.maven.plugins</groupId>
 | 
				
			||||||
 | 
					          <artifactId>maven-surefire-plugin</artifactId>
 | 
				
			||||||
 | 
					          <version>3.5.2</version>
 | 
				
			||||||
 | 
					          <configuration>
 | 
				
			||||||
 | 
					            <skipTests>true</skipTests>
 | 
				
			||||||
 | 
					          </configuration>
 | 
				
			||||||
 | 
					        </plugin>
 | 
				
			||||||
 | 
					        <plugin>
 | 
				
			||||||
 | 
					          <groupId>org.apache.maven.plugins</groupId>
 | 
				
			||||||
 | 
					          <artifactId>maven-compiler-plugin</artifactId>
 | 
				
			||||||
 | 
					          <version>3.14.0</version>
 | 
				
			||||||
 | 
					          <configuration>
 | 
				
			||||||
 | 
					            <source>18</source>
 | 
				
			||||||
 | 
					            <target>18</target>
 | 
				
			||||||
 | 
					            <encoding>UTF-8</encoding>
 | 
				
			||||||
 | 
					          </configuration>
 | 
				
			||||||
 | 
					        </plugin>
 | 
				
			||||||
 | 
					      </plugins>
 | 
				
			||||||
 | 
					    </pluginManagement>
 | 
				
			||||||
 | 
					  </build>
 | 
				
			||||||
 | 
					</project>
 | 
				
			||||||
@@ -0,0 +1,84 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @Author: Kane Wang <wangkane@qq.com>
 | 
				
			||||||
 | 
					 * @Date: 2025-03-15 18:40:54
 | 
				
			||||||
 | 
					 * @LastEditors: Kane Wang
 | 
				
			||||||
 | 
					 * @LastModified: 2025-03-16 08:59:16
 | 
				
			||||||
 | 
					 * @FilePath: src/main/java/com/cpic/xim/huixiabao/web/controllers/MediCover/MediCoverController.java
 | 
				
			||||||
 | 
					 * @Description:
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 *               Copyright (c) 2025 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.JsonMappingException;
 | 
				
			||||||
 | 
					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.*;
 | 
				
			||||||
 | 
					import com.cpic.xim.huixiabao.web.data.nhs.xyx.HmbXyxInfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@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";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 接收医保局财政支持小药箱数据。
 | 
				
			||||||
 | 
					     * 
 | 
				
			||||||
 | 
					     * @param request
 | 
				
			||||||
 | 
					     * @return
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @PostMapping( "/xyx" )
 | 
				
			||||||
 | 
					    @ResponseBody
 | 
				
			||||||
 | 
					    public static MediCoverResponse getHmbXyxInfo(
 | 
				
			||||||
 | 
					            @RequestBody MediCoverRequestBody request
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        ObjectMapper      jsonMapper = new ObjectMapper();
 | 
				
			||||||
 | 
					        MediCoverResponse response   = null;
 | 
				
			||||||
 | 
					        HmbXyxInfo        xyxInfo    = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        String decryptData = AESUtils.decryptData( request.getKey(), privateKey, request.getBizContent() );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        logger.info( "【接收小药箱数据】请求参数<{}>", request.toString() );
 | 
				
			||||||
 | 
					        logger.info( "【接收小药箱数据】解密参数<{}>", decryptData );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        try
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            xyxInfo = jsonMapper.readValue( decryptData, HmbXyxInfo.class );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        catch ( Exception error )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            // 解析json错误。
 | 
				
			||||||
 | 
					            response = new MediCoverResponse( "500",
 | 
				
			||||||
 | 
					                                              "解析JSON失败:" + error.getMessage(),
 | 
				
			||||||
 | 
					                                              "",
 | 
				
			||||||
 | 
					                                              "",
 | 
				
			||||||
 | 
					                                              "",
 | 
				
			||||||
 | 
					                                              false );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return response;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        response = new MediCoverResponse( "20000",
 | 
				
			||||||
 | 
					                                          "处理成功",
 | 
				
			||||||
 | 
					                                          "",
 | 
				
			||||||
 | 
					                                          "",
 | 
				
			||||||
 | 
					                                          "",
 | 
				
			||||||
 | 
					                                          true );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return response;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,106 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @Author: Kane Wang <wangkane@qq.com>
 | 
				
			||||||
 | 
					 * @Date: 2025-03-15 18:40:54
 | 
				
			||||||
 | 
					 * @LastEditors: Kane Wang
 | 
				
			||||||
 | 
					 * @LastModified: 2025-03-17 07:21:58
 | 
				
			||||||
 | 
					 * @FilePath: src/main/java/com/cpic/xim/huixiabao/web/controllers/MediCover/MediCoverRequestBody.java
 | 
				
			||||||
 | 
					 * @Description:
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 *               Copyright (c) 2025 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 MediCoverRequestBody()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    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 + "]";
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,55 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * @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;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,59 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @Author: Kane
 | 
				
			||||||
 | 
					 * @Date: 2025-03-15 21:01:56
 | 
				
			||||||
 | 
					 * @LastEditors: Kane
 | 
				
			||||||
 | 
					 * @FilePath: /cpicxim-huixiabao/src/main/java/com/cpic/xim/huixiabao/web/controllers/MediCover/MediCoverResultInResponse.java
 | 
				
			||||||
 | 
					 * @Description:
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 *               Copyright (c) ${2023} by Kane, All Rights Reserved.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @Author: Kane Wang <wangkane@qq.com>
 | 
				
			||||||
 | 
					 * @Date: 2025-03-15 18:40:54
 | 
				
			||||||
 | 
					 * @LastEditors: Kane Wang
 | 
				
			||||||
 | 
					 * @LastModified: 2025-03-16 01:13:50
 | 
				
			||||||
 | 
					 * @FilePath: src/main/java/com/cpic/xim/huixiabao/web/controllers/MediCover/MediCoverResultInResponse.java
 | 
				
			||||||
 | 
					 * @Description:
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 *               Copyright (c) 2025 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;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,53 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @Author: Kane Wang <wangkane@qq.com>
 | 
				
			||||||
 | 
					 * @Date: 2025-03-16 08:41:32
 | 
				
			||||||
 | 
					 * @LastEditors: Kane Wang
 | 
				
			||||||
 | 
					 * @LastModified: 2025-03-16 20:00:26
 | 
				
			||||||
 | 
					 * @FilePath: src/main/java/com/cpic/xim/huixiabao/web/data/nhs/xyx/HmbXyxInfo.java
 | 
				
			||||||
 | 
					 * @Description:
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 *               Copyright (c) 2025 by Kane All rights reserved
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					package com.cpic.xim.huixiabao.web.data.nhs.xyx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.Vector;
 | 
				
			||||||
 | 
					import com.fasterxml.jackson.annotation.JsonProperty;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class HmbXyxInfo
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public HmbXyxInfo()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public HmbXyxInfo( String topic, Vector<HmbXyxInfoItem> hmbList )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        this.topic   = topic;
 | 
				
			||||||
 | 
					        this.hmbList = hmbList;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getTopic()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return topic;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setTopic( String topic )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        this.topic = topic;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Vector<HmbXyxInfoItem> getHmbList()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return hmbList;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setHmbList( Vector<HmbXyxInfoItem> hmbList )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        this.hmbList = hmbList;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @JsonProperty( "topic" )
 | 
				
			||||||
 | 
					    private String topic;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @JsonProperty( "hmbList" )
 | 
				
			||||||
 | 
					    private Vector<HmbXyxInfoItem> hmbList;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,84 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @Author: Kane
 | 
				
			||||||
 | 
					 * @Date: 2025-03-15 21:01:56
 | 
				
			||||||
 | 
					 * @LastEditors: Kane
 | 
				
			||||||
 | 
					 * @FilePath: /cpicxim-huixiabao/src/main/java/com/cpic/xim/huixiabao/web/data/nhs/xyx/HmbXyxInfoItem.java
 | 
				
			||||||
 | 
					 * @Description:
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 *               Copyright (c) ${2023} by Kane, All Rights Reserved.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package com.cpic.xim.huixiabao.web.data.nhs.xyx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.fasterxml.jackson.annotation.JsonProperty;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class HmbXyxInfoItem
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public HmbXyxInfoItem() {}
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    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;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,112 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @Author: Kane Wang <wangkane@qq.com>
 | 
				
			||||||
 | 
					 * @Date: 2025-03-15 12:50:53
 | 
				
			||||||
 | 
					 * @LastEditors: Kane Wang
 | 
				
			||||||
 | 
					 * @LastModified: 2025-03-16 08:44:52
 | 
				
			||||||
 | 
					 * @FilePath: src/main/java/com/cpic/xim/utils/secrecy/AESUtils.java
 | 
				
			||||||
 | 
					 * @Description:
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 *               Copyright (c) 2025 by Kane All rights reserved
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					package com.cpic.xim.utils.secrecy;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.crypto.Cipher;
 | 
				
			||||||
 | 
					import javax.crypto.spec.IvParameterSpec;
 | 
				
			||||||
 | 
					import javax.crypto.spec.SecretKeySpec;
 | 
				
			||||||
 | 
					import java.util.HashMap;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					import java.util.UUID;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * AESUtils
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public class AESUtils
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 偏移量,必须是16位字符串
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private static final String IV_STRING = "16-Bytes--String";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 产生随机密钥(这里产生密钥必须是16位)
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private static String generateKey()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        String key = UUID.randomUUID().toString();
 | 
				
			||||||
 | 
					        key = key.replace( "-", "" ).substring( 0, 16 );// 替换掉-号
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return key;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 加密
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param publicKey 公钥
 | 
				
			||||||
 | 
					     * @param content   加密数据
 | 
				
			||||||
 | 
					     * @return
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static Map<String, String> encryptData( String publicKey, String content )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        byte[] encryptedBytes;
 | 
				
			||||||
 | 
					        try
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            byte[] byteContent = content.getBytes( "UTF-8" );
 | 
				
			||||||
 | 
					            // 注意,为了能与 iOS 统一
 | 
				
			||||||
 | 
					            // 这里的 key 不可以使用 KeyGenerator、SecureRandom、SecretKey 生成
 | 
				
			||||||
 | 
					            String          key             = generateKey();
 | 
				
			||||||
 | 
					            byte[]          enCodeFormat    = key.getBytes();
 | 
				
			||||||
 | 
					            SecretKeySpec   secretKeySpec   = new SecretKeySpec( enCodeFormat, "AES" );
 | 
				
			||||||
 | 
					            byte[]          initParam       = IV_STRING.getBytes();
 | 
				
			||||||
 | 
					            IvParameterSpec ivParameterSpec = new IvParameterSpec( initParam );
 | 
				
			||||||
 | 
					            // 指定加密的算法、工作模式和填充方式
 | 
				
			||||||
 | 
					            Cipher cipher = Cipher.getInstance( "AES/CBC/PKCS5Padding" );
 | 
				
			||||||
 | 
					            cipher.init( Cipher.ENCRYPT_MODE, secretKeySpec, ivParameterSpec );
 | 
				
			||||||
 | 
					            encryptedBytes = cipher.doFinal( byteContent );
 | 
				
			||||||
 | 
					            // 同样对加密后数据进行 base64 编码
 | 
				
			||||||
 | 
					            key = RSAUtils.encryptByPublicKey( key, publicKey );
 | 
				
			||||||
 | 
					            Map<String, String> result = new HashMap<>( 2 );
 | 
				
			||||||
 | 
					            result.put( "key", key );
 | 
				
			||||||
 | 
					            result.put( "content", Base64Utils.encode( encryptedBytes ) );
 | 
				
			||||||
 | 
					            return result;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        catch ( Exception e )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            throw new RuntimeException( "加密失败:" + e.getMessage(), e );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 解密
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param key
 | 
				
			||||||
 | 
					     * @param privateKey
 | 
				
			||||||
 | 
					     * @param content
 | 
				
			||||||
 | 
					     * @return
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static String decryptData( String key, String privateKey, String content )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        try
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            System.out.println( "KEY:" + key );
 | 
				
			||||||
 | 
					            System.out.println( "privateKey:" + privateKey );
 | 
				
			||||||
 | 
					            System.out.println( "content:" + content );
 | 
				
			||||||
 | 
					            // base64 解码
 | 
				
			||||||
 | 
					            byte[] encryptedBytes = Base64Utils.decode( content );
 | 
				
			||||||
 | 
					            key = RSAUtils.decryptByPrivateKey( privateKey, key );
 | 
				
			||||||
 | 
					            byte[]          enCodeFormat    = key.getBytes();
 | 
				
			||||||
 | 
					            SecretKeySpec   secretKey       = new SecretKeySpec( enCodeFormat, "AES" );
 | 
				
			||||||
 | 
					            byte[]          initParam       = IV_STRING.getBytes();
 | 
				
			||||||
 | 
					            IvParameterSpec ivParameterSpec = new IvParameterSpec( initParam );
 | 
				
			||||||
 | 
					            Cipher          cipher          = Cipher.getInstance( "AES/CBC/PKCS5Padding" );
 | 
				
			||||||
 | 
					            cipher.init( Cipher.DECRYPT_MODE, secretKey, ivParameterSpec );
 | 
				
			||||||
 | 
					            byte[] result = cipher.doFinal( encryptedBytes );
 | 
				
			||||||
 | 
					            return new String( result, "UTF-8" );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        catch ( Exception e )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            throw new RuntimeException( "解密失败:" + e.getMessage(), e );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,165 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @Author: Kane Wang <wangkane@qq.com>
 | 
				
			||||||
 | 
					 * @Date: 2025-03-15 12:50:53
 | 
				
			||||||
 | 
					 * @LastEditors: Kane
 | 
				
			||||||
 | 
					 * @LastModified: 2025-03-16 08:40:07
 | 
				
			||||||
 | 
					 * @FilePath: /cpicxim-huixiabao/src/main/java/com/cpic/xim/utils/secrecy/Base64Utils.java
 | 
				
			||||||
 | 
					 * @Description:
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 *               Copyright (c) 2025 by Kane All rights reserved
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					package com.cpic.xim.utils.secrecy;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.apache.commons.codec.binary.Base64;
 | 
				
			||||||
 | 
					import java.io.*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Base64Utils
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public class Base64Utils
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** */
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 文件读取缓冲区大小
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private static final int CACHE_SIZE = 1024;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** */
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * <p>
 | 
				
			||||||
 | 
					     * BASE64字符串解码为二进制数据
 | 
				
			||||||
 | 
					     * </p>
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param base64
 | 
				
			||||||
 | 
					     * @return
 | 
				
			||||||
 | 
					     * @throws Exception
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static byte[] decode( String base64 )
 | 
				
			||||||
 | 
					                                                 throws Exception
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return Base64.decodeBase64( base64.getBytes() );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static String decode( byte[] b )
 | 
				
			||||||
 | 
					                                            throws Exception
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return new String( Base64.decodeBase64( b ) );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** */
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * <p>
 | 
				
			||||||
 | 
					     * 二进制数据编码为BASE64字符串
 | 
				
			||||||
 | 
					     * </p>
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param bytes
 | 
				
			||||||
 | 
					     * @return
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static String encode( byte[] bytes )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return new String( Base64.encodeBase64( bytes ) );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** */
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * <p>
 | 
				
			||||||
 | 
					     * 将文件编码为BASE64字符串
 | 
				
			||||||
 | 
					     * </p>
 | 
				
			||||||
 | 
					     * <p>
 | 
				
			||||||
 | 
					     * 大文件慎用,可能会导致内存溢出
 | 
				
			||||||
 | 
					     * </p>
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param filePath 文件绝对路径
 | 
				
			||||||
 | 
					     * @return
 | 
				
			||||||
 | 
					     * @throws Exception
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static String encodeFile( String filePath )
 | 
				
			||||||
 | 
					                                                       throws Exception
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        byte[] bytes = fileToByte( filePath );
 | 
				
			||||||
 | 
					        return encode( bytes );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** */
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * <p>
 | 
				
			||||||
 | 
					     * BASE64字符串转回文件
 | 
				
			||||||
 | 
					     * </p>
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param filePath 文件绝对路径
 | 
				
			||||||
 | 
					     * @param base64   编码字符串
 | 
				
			||||||
 | 
					     * @throws Exception
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static void decodeToFile( String filePath, String base64 )
 | 
				
			||||||
 | 
					                                                                      throws Exception
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        byte[] bytes = decode( base64 );
 | 
				
			||||||
 | 
					        byteArrayToFile( bytes, filePath );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** */
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * <p>
 | 
				
			||||||
 | 
					     * 文件转换为二进制数组
 | 
				
			||||||
 | 
					     * </p>
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param filePath 文件路径
 | 
				
			||||||
 | 
					     * @return
 | 
				
			||||||
 | 
					     * @throws Exception
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static byte[] fileToByte( String filePath )
 | 
				
			||||||
 | 
					                                                       throws Exception
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        byte[] data = new byte[0];
 | 
				
			||||||
 | 
					        File   file = new File( filePath );
 | 
				
			||||||
 | 
					        if ( file.exists() )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            FileInputStream       in    = new FileInputStream( file );
 | 
				
			||||||
 | 
					            ByteArrayOutputStream out   = new ByteArrayOutputStream( 2048 );
 | 
				
			||||||
 | 
					            byte[]                cache = new byte[CACHE_SIZE];
 | 
				
			||||||
 | 
					            int                   nRead = 0;
 | 
				
			||||||
 | 
					            while ( (nRead = in.read( cache )) != -1 )
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                out.write( cache, 0, nRead );
 | 
				
			||||||
 | 
					                out.flush();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            out.close();
 | 
				
			||||||
 | 
					            in.close();
 | 
				
			||||||
 | 
					            data = out.toByteArray();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return data;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** */
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * <p>
 | 
				
			||||||
 | 
					     * 二进制数据写文件
 | 
				
			||||||
 | 
					     * </p>
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param bytes    二进制数据
 | 
				
			||||||
 | 
					     * @param filePath 文件生成目录
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static void byteArrayToFile( byte[] bytes, String filePath )
 | 
				
			||||||
 | 
					                                                                        throws Exception
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        InputStream in       = new ByteArrayInputStream( bytes );
 | 
				
			||||||
 | 
					        File        destFile = new File( filePath );
 | 
				
			||||||
 | 
					        if ( !destFile.getParentFile().exists() )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            destFile.getParentFile().mkdirs();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        destFile.createNewFile();
 | 
				
			||||||
 | 
					        OutputStream out   = new FileOutputStream( destFile );
 | 
				
			||||||
 | 
					        byte[]       cache = new byte[CACHE_SIZE];
 | 
				
			||||||
 | 
					        int          nRead = 0;
 | 
				
			||||||
 | 
					        while ( (nRead = in.read( cache )) != -1 )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            out.write( cache, 0, nRead );
 | 
				
			||||||
 | 
					            out.flush();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        out.close();
 | 
				
			||||||
 | 
					        in.close();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,202 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @Author:        Kane Wang <wangkane@qq.com>
 | 
				
			||||||
 | 
					 * @Date:          2025-03-15 12:50:53
 | 
				
			||||||
 | 
					 * @LastEditors:   Kane Wang
 | 
				
			||||||
 | 
					 * @LastModified:  2025-03-16 08:43:56
 | 
				
			||||||
 | 
					 * @FilePath:      src/main/java/com/cpic/xim/utils/secrecy/RSAUtils.java
 | 
				
			||||||
 | 
					 * @Description:
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Copyright (c) 2025 by Kane All rights reserved
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					package com.cpic.xim.utils.secrecy;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.crypto.Cipher;
 | 
				
			||||||
 | 
					import java.io.ByteArrayOutputStream;
 | 
				
			||||||
 | 
					import java.math.BigInteger;
 | 
				
			||||||
 | 
					import java.security.*;
 | 
				
			||||||
 | 
					import java.security.interfaces.RSAPrivateKey;
 | 
				
			||||||
 | 
					import java.security.interfaces.RSAPublicKey;
 | 
				
			||||||
 | 
					import java.security.spec.PKCS8EncodedKeySpec;
 | 
				
			||||||
 | 
					import java.security.spec.RSAPrivateKeySpec;
 | 
				
			||||||
 | 
					import java.security.spec.X509EncodedKeySpec;
 | 
				
			||||||
 | 
					import java.util.HashMap;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * RSAUtils
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public class RSAUtils
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * RSA最大加密明文大小
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private static final int MAX_ENCRYPT_BLOCK = 117;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * RSA最大解密密文大小
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private static final int MAX_DECRYPT_BLOCK = 128;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 加密算法RSA
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private static final String KEY_ALGORITHM = "RSA";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 生成公钥和私钥
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @throws Exception
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static Map<String, String> getKeys()
 | 
				
			||||||
 | 
					                                                throws Exception
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance( "RSA" );
 | 
				
			||||||
 | 
					        keyPairGen.initialize( 1024 );
 | 
				
			||||||
 | 
					        KeyPair       keyPair    = keyPairGen.generateKeyPair();
 | 
				
			||||||
 | 
					        RSAPublicKey  publicKey  = ( RSAPublicKey ) keyPair.getPublic();
 | 
				
			||||||
 | 
					        RSAPrivateKey privateKey = ( RSAPrivateKey ) keyPair.getPrivate();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        String publicKeyStr  = getPublicKeyStr( publicKey );
 | 
				
			||||||
 | 
					        String privateKeyStr = getPrivateKeyStr( privateKey );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Map<String, String> result = new HashMap<>( 2 );
 | 
				
			||||||
 | 
					        result.put( "publicKeyStr", publicKeyStr );
 | 
				
			||||||
 | 
					        result.put( "privateKeyStr", privateKeyStr );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return result;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static void main( String[] args )
 | 
				
			||||||
 | 
					                                             throws Exception
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        Map<String, String> keys = getKeys();
 | 
				
			||||||
 | 
					        System.out.println( "publicKeyStr=" + keys.get( "publicKeyStr" ) );
 | 
				
			||||||
 | 
					        System.out.println( "privateKeyStr=" + keys.get( "privateKeyStr" ) );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 使用模和指数生成RSA私钥
 | 
				
			||||||
 | 
					     * 注意:【此代码用了默认补位方式,为RSA/None/PKCS1Padding,不同JDK默认的补位方式可能不同,如Android默认是RSA
 | 
				
			||||||
 | 
					     * /None/NoPadding】
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param modulus  模
 | 
				
			||||||
 | 
					     * @param exponent 指数
 | 
				
			||||||
 | 
					     * @return
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static RSAPrivateKey getPrivateKey( String modulus, String exponent )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        try
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            BigInteger        b1         = new BigInteger( modulus );
 | 
				
			||||||
 | 
					            BigInteger        b2         = new BigInteger( exponent );
 | 
				
			||||||
 | 
					            KeyFactory        keyFactory = KeyFactory.getInstance( "RSA" );
 | 
				
			||||||
 | 
					            RSAPrivateKeySpec keySpec    = new RSAPrivateKeySpec( b1, b2 );
 | 
				
			||||||
 | 
					            return ( RSAPrivateKey ) keyFactory.generatePrivate( keySpec );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        catch ( Exception e )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            e.printStackTrace();
 | 
				
			||||||
 | 
					            return null;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 公钥加密
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param data      加密数据
 | 
				
			||||||
 | 
					     * @param publicKey 加密key
 | 
				
			||||||
 | 
					     * @return
 | 
				
			||||||
 | 
					     * @throws Exception
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static String encryptByPublicKey( String data, String publicKey )
 | 
				
			||||||
 | 
					                                                                             throws Exception
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        byte[]             dataByte    = data.getBytes();
 | 
				
			||||||
 | 
					        byte[]             keyBytes    = Base64Utils.decode( publicKey );
 | 
				
			||||||
 | 
					        X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec( keyBytes );
 | 
				
			||||||
 | 
					        KeyFactory         keyFactory  = KeyFactory.getInstance( KEY_ALGORITHM );
 | 
				
			||||||
 | 
					        Key                publicK     = keyFactory.generatePublic( x509KeySpec );
 | 
				
			||||||
 | 
					        // 对数据加密
 | 
				
			||||||
 | 
					        Cipher cipher = Cipher.getInstance( "RSA/ECB/PKCS1Padding" );
 | 
				
			||||||
 | 
					        cipher.init( Cipher.ENCRYPT_MODE, publicK );
 | 
				
			||||||
 | 
					        int                   inputLen = dataByte.length;
 | 
				
			||||||
 | 
					        ByteArrayOutputStream out      = new ByteArrayOutputStream();
 | 
				
			||||||
 | 
					        int                   offSet   = 0;
 | 
				
			||||||
 | 
					        byte[]                cache;
 | 
				
			||||||
 | 
					        int                   i        = 0;
 | 
				
			||||||
 | 
					        // 对数据分段加密
 | 
				
			||||||
 | 
					        while ( inputLen - offSet > 0 )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if ( inputLen - offSet > MAX_ENCRYPT_BLOCK )
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                cache = cipher.doFinal( dataByte, offSet, MAX_ENCRYPT_BLOCK );
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                cache = cipher.doFinal( dataByte, offSet, inputLen - offSet );
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            out.write( cache, 0, cache.length );
 | 
				
			||||||
 | 
					            i++;
 | 
				
			||||||
 | 
					            offSet = i * MAX_ENCRYPT_BLOCK;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        byte[] encryptedData = out.toByteArray();
 | 
				
			||||||
 | 
					        out.close();
 | 
				
			||||||
 | 
					        return Base64Utils.encode( encryptedData );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 私钥解密
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param privateKey 私钥
 | 
				
			||||||
 | 
					     * @param data       加密数据
 | 
				
			||||||
 | 
					     * @return
 | 
				
			||||||
 | 
					     * @throws Exception
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static String decryptByPrivateKey( String privateKey, String data )
 | 
				
			||||||
 | 
					                                                                               throws Exception
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        byte[]              encryptedData = Base64Utils.decode( data );
 | 
				
			||||||
 | 
					        byte[]              keyBytes      = Base64Utils.decode( privateKey );
 | 
				
			||||||
 | 
					        PKCS8EncodedKeySpec pkcs8KeySpec  = new PKCS8EncodedKeySpec( keyBytes );
 | 
				
			||||||
 | 
					        KeyFactory          keyFactory    = KeyFactory.getInstance( KEY_ALGORITHM );
 | 
				
			||||||
 | 
					        Key                 privateK      = keyFactory.generatePrivate( pkcs8KeySpec );
 | 
				
			||||||
 | 
					        // Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
 | 
				
			||||||
 | 
					        Cipher cipher = Cipher.getInstance( "RSA/ECB/PKCS1Padding" );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        cipher.init( Cipher.DECRYPT_MODE, privateK );
 | 
				
			||||||
 | 
					        int                   inputLen = encryptedData.length;
 | 
				
			||||||
 | 
					        ByteArrayOutputStream out      = new ByteArrayOutputStream();
 | 
				
			||||||
 | 
					        int                   offSet   = 0;
 | 
				
			||||||
 | 
					        byte[]                cache;
 | 
				
			||||||
 | 
					        int                   i        = 0;
 | 
				
			||||||
 | 
					        // 对数据分段解密
 | 
				
			||||||
 | 
					        while ( inputLen - offSet > 0 )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if ( inputLen - offSet > MAX_DECRYPT_BLOCK )
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                cache = cipher.doFinal( encryptedData, offSet, MAX_DECRYPT_BLOCK );
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                cache = cipher.doFinal( encryptedData, offSet, inputLen - offSet );
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            out.write( cache, 0, cache.length );
 | 
				
			||||||
 | 
					            i++;
 | 
				
			||||||
 | 
					            offSet = i * MAX_DECRYPT_BLOCK;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        byte[] decryptedData = out.toByteArray();
 | 
				
			||||||
 | 
					        out.close();
 | 
				
			||||||
 | 
					        return new String( decryptedData );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static String getPrivateKeyStr( PrivateKey privateKey )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return Base64Utils.encode( privateKey.getEncoded() );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static String getPublicKeyStr( PublicKey publicKey )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return Base64Utils.encode( publicKey.getEncoded() );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,66 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @Author: Kane Wang <wangkane@qq.com>
 | 
				
			||||||
 | 
					 * @Date: 2025-03-15 18:40:54
 | 
				
			||||||
 | 
					 * @LastEditors: Kane Wang
 | 
				
			||||||
 | 
					 * @LastModified: 2025-03-16 08:56:20
 | 
				
			||||||
 | 
					 * @FilePath: src/main/java/com/cpic/xim/web/filters/cros/CrosFilter.java
 | 
				
			||||||
 | 
					 * @Description:
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 *               Copyright (c) 2025 by Kane All rights reserved
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					package com.cpic.xim.web.filters.cros;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.IOException;
 | 
				
			||||||
 | 
					import jakarta.servlet.Filter;
 | 
				
			||||||
 | 
					import jakarta.servlet.FilterChain;
 | 
				
			||||||
 | 
					import jakarta.servlet.ServletException;
 | 
				
			||||||
 | 
					import jakarta.servlet.ServletRequest;
 | 
				
			||||||
 | 
					import jakarta.servlet.ServletResponse;
 | 
				
			||||||
 | 
					import jakarta.servlet.http.HttpServletRequest;
 | 
				
			||||||
 | 
					import jakarta.servlet.http.HttpServletResponse;
 | 
				
			||||||
 | 
					import org.slf4j.Logger;
 | 
				
			||||||
 | 
					import org.slf4j.LoggerFactory;
 | 
				
			||||||
 | 
					import org.springframework.http.HttpMethod;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class CrosFilter implements Filter
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    private static Logger logger = LoggerFactory.getLogger( CrosFilter.class );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * @param req
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @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" );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        logger.info( "收到" + 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 );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										40
									
								
								code/cpicxim-huixiabao/src/main/resources/log4j2.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								code/cpicxim-huixiabao/src/main/resources/log4j2.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
				
			|||||||
 | 
					<Configuration status="WARN" monitorInterval="300">
 | 
				
			||||||
 | 
					    <Appenders>
 | 
				
			||||||
 | 
					        <Console name="Console" target="SYSTEM_OUT">
 | 
				
			||||||
 | 
					            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} ### %msg%n" />
 | 
				
			||||||
 | 
					            <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" />
 | 
				
			||||||
 | 
					        </Console>
 | 
				
			||||||
 | 
					        <RollingFile name="rolling_file_win" 
 | 
				
			||||||
 | 
					            filePattern="./logs/huixiabao/$${date:yyyy-MM}/huixiabao-%d{MM-dd-yyyy}-%i.log.gz">
 | 
				
			||||||
 | 
					            <PatternLayout>
 | 
				
			||||||
 | 
					                <Pattern>[%t][%level][%d{HH:mm:ss.SSS}][%logger.%M{36}#%L] %msg%n</Pattern>
 | 
				
			||||||
 | 
					            </PatternLayout>
 | 
				
			||||||
 | 
					            <Policies>
 | 
				
			||||||
 | 
					                <TimeBasedTriggeringPolicy interval="1" />
 | 
				
			||||||
 | 
					                <SizeBasedTriggeringPolicy size="20MB" />
 | 
				
			||||||
 | 
					                <DefaultRolloverStrategy max="20" />
 | 
				
			||||||
 | 
					            </Policies>
 | 
				
			||||||
 | 
					        </RollingFile>
 | 
				
			||||||
 | 
					        <RollingFile name="rolling_file_linux"
 | 
				
			||||||
 | 
					            filePattern="/logs/huixiabao/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
 | 
				
			||||||
 | 
					            <PatternLayout>
 | 
				
			||||||
 | 
					                <Pattern>[%t][%level][%d{HH:mm:ss.SSS}][%logger.%M{36}#%L] %msg%n</Pattern>
 | 
				
			||||||
 | 
					            </PatternLayout>
 | 
				
			||||||
 | 
					            <Policies>
 | 
				
			||||||
 | 
					                <TimeBasedTriggeringPolicy interval="1" />
 | 
				
			||||||
 | 
					                <SizeBasedTriggeringPolicy size="20MB" />
 | 
				
			||||||
 | 
					                <DefaultRolloverStrategy max="20" />
 | 
				
			||||||
 | 
					            </Policies>
 | 
				
			||||||
 | 
					        </RollingFile>
 | 
				
			||||||
 | 
					    </Appenders>
 | 
				
			||||||
 | 
					    <Loggers>
 | 
				
			||||||
 | 
					        <!-- <Logger name="mylog" level="info">
 | 
				
			||||||
 | 
					            <AppenderRef ref="rolling_file" />
 | 
				
			||||||
 | 
					        </Logger> -->
 | 
				
			||||||
 | 
					        <Root level="debug">
 | 
				
			||||||
 | 
					            <AppenderRef ref="rolling_file_linux" />
 | 
				
			||||||
 | 
					            <AppenderRef ref="rolling_file_win" />
 | 
				
			||||||
 | 
					            <AppenderRef ref="Console" />
 | 
				
			||||||
 | 
					        </Root>
 | 
				
			||||||
 | 
					    </Loggers>
 | 
				
			||||||
 | 
					</Configuration>
 | 
				
			||||||
@@ -0,0 +1,38 @@
 | 
				
			|||||||
 | 
					<beans xmlns="http://www.springframework.org/schema/beans"
 | 
				
			||||||
 | 
					    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 | 
				
			||||||
 | 
					    xmlns:context="http://www.springframework.org/schema/context"
 | 
				
			||||||
 | 
					    xmlns:jdbc="http://www.springframework.org/schema/jdbc"
 | 
				
			||||||
 | 
					    xmlns:jee="http://www.springframework.org/schema/jee"
 | 
				
			||||||
 | 
					    xmlns:tx="http://www.springframework.org/schema/tx"
 | 
				
			||||||
 | 
					    xmlns:aop="http://www.springframework.org/schema/aop"
 | 
				
			||||||
 | 
					    xmlns:mvc="http://www.springframework.org/schema/mvc"
 | 
				
			||||||
 | 
					    xmlns:util="http://www.springframework.org/schema/util"
 | 
				
			||||||
 | 
					    xmlns:jpa="http://www.springframework.org/schema/data/jpa"
 | 
				
			||||||
 | 
					    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
 | 
				
			||||||
 | 
					                        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
 | 
				
			||||||
 | 
					                        http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
 | 
				
			||||||
 | 
					                        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
 | 
				
			||||||
 | 
					                        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
 | 
				
			||||||
 | 
					                        http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
 | 
				
			||||||
 | 
					                        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
 | 
				
			||||||
 | 
					                        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
 | 
				
			||||||
 | 
					                        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <context:component-scan base-package="com.cpic.xim" />
 | 
				
			||||||
 | 
					    <mvc:annotation-driven />
 | 
				
			||||||
 | 
					    <mvc:default-servlet-handler />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
 | 
				
			||||||
 | 
					        <property
 | 
				
			||||||
 | 
					    name="prefix" value="/WEB-INF/jsp/" />
 | 
				
			||||||
 | 
					        <property name="suffix" value=".jsp" />
 | 
				
			||||||
 | 
					    </bean> -->
 | 
				
			||||||
 | 
					    <bean id="multipartResolver"
 | 
				
			||||||
 | 
					        class="org.springframework.web.multipart.support.StandardServletMultipartResolver" />
 | 
				
			||||||
 | 
					    <!-- <bean id="multipartResolver"
 | 
				
			||||||
 | 
					        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
 | 
				
			||||||
 | 
					        <property name="defaultEncoding" value="UTF-8" />
 | 
				
			||||||
 | 
					        <property name="maxUploadSize" value="-1" />
 | 
				
			||||||
 | 
					    </bean> -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</beans>
 | 
				
			||||||
							
								
								
									
										34
									
								
								code/cpicxim-huixiabao/src/main/webapp/WEB-INF/web.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								code/cpicxim-huixiabao/src/main/webapp/WEB-INF/web.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
				
			|||||||
 | 
					<?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_4_0.xsd">
 | 
				
			||||||
 | 
					  <display-name>Archetype Created Web Application</display-name>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <servlet>
 | 
				
			||||||
 | 
					    <servlet-name>springmvc</servlet-name>
 | 
				
			||||||
 | 
					    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 | 
				
			||||||
 | 
					    <init-param>
 | 
				
			||||||
 | 
					      <param-name>contextConfigLocation</param-name>
 | 
				
			||||||
 | 
					      <param-value>classpath:spring.xml</param-value>
 | 
				
			||||||
 | 
					    </init-param>
 | 
				
			||||||
 | 
					    <load-on-startup>1</load-on-startup>
 | 
				
			||||||
 | 
					  </servlet>
 | 
				
			||||||
 | 
					  <servlet-mapping>
 | 
				
			||||||
 | 
					    <servlet-name>springmvc</servlet-name>
 | 
				
			||||||
 | 
					    <url-pattern>/</url-pattern>
 | 
				
			||||||
 | 
					  </servlet-mapping>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <filter>
 | 
				
			||||||
 | 
					    <filter-name>CrosFilter</filter-name>
 | 
				
			||||||
 | 
					    <filter-class>com.cpic.xim.web.filters.cros.CrosFilter</filter-class>
 | 
				
			||||||
 | 
					  </filter>
 | 
				
			||||||
 | 
					  <filter-mapping>
 | 
				
			||||||
 | 
					    <filter-name>CrosFilter</filter-name>
 | 
				
			||||||
 | 
					    <url-pattern>*</url-pattern>
 | 
				
			||||||
 | 
					  </filter-mapping>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</web-app>
 | 
				
			||||||
							
								
								
									
										5
									
								
								code/cpicxim-huixiabao/src/main/webapp/index.jsp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								code/cpicxim-huixiabao/src/main/webapp/index.jsp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					<html>
 | 
				
			||||||
 | 
					<body>
 | 
				
			||||||
 | 
					<h2><%= "Hello World!" %></h2>
 | 
				
			||||||
 | 
					</body>
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
		Reference in New Issue
	
	Block a user