feat(all): bjca 增加单独配置文件

pull/544/head
dazer007 2025-03-05 15:39:28 +08:00
parent e8c1bae9f8
commit 2bc6e1171e
10 changed files with 104 additions and 41 deletions

View File

@ -119,6 +119,14 @@
<artifactId>gson</artifactId>
<version>2.11.0</version>
</dependency>
<!-- sql性能分析插件 -->
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
<version>3.9.1</version>
</dependency>
</dependencies>
<build>

View File

@ -4,6 +4,7 @@ import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
/**
* CA
@ -13,6 +14,7 @@ import org.springframework.context.annotation.Configuration;
**/
@Configuration
@ConfigurationProperties(prefix = "nhit.dc.ca.bjxt01")
@PropertySource(value = { "classpath:bjca.properties" })
@Getter
@Setter
public class BjCaConfig {
@ -40,6 +42,11 @@ public class BjCaConfig {
* nhit.dc.ca.bjxt01.app-secret=MDAwNjY1MTZmMjczNDk4MDk2MzJhMTQ4OWYyZTdlNGE=
* </pre>
*/
private String serverBase;
private String appId;
private String appSecret;
private String userId;
private String serverQueryUserInfo;
private String serverStartAuthSign;
private String serverGetSignResult;
@ -48,6 +55,4 @@ public class BjCaConfig {
private String serverQueryImage;
private String serverTssInfo;
private String serverVerifyTss;
private String appId;
private String appSecret;
}

View File

@ -0,0 +1,26 @@
package com.neuhis.his.common.config;
import com.alibaba.fastjson.JSONObject;
import com.p6spy.engine.spy.appender.MessageFormattingStrategy;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* P6SpySQL使SQL
*
* @author dazer
* @date 2025/3/5 14:46
**/
public class P6SPYConfig implements MessageFormattingStrategy {
@Override
public String formatMessage(int connectionId, String now, long elapsed, String category, String prepared, String sql, String url) {
Map<String, Object> message = new LinkedHashMap<>(8);
String newPrepared = prepared.replace(" ", "").replace("\n", " ");
message.put("prepared", newPrepared);
String newSql = sql.replace(" ", "").replace("\n", " ");
message.put("sql", newSql);
return JSONObject.toJSONString(message, true);
}
}

View File

@ -1,6 +1,8 @@
package com.neuhis.his.controller;
import java.util.List;
import com.p6spy.engine.spy.P6ModuleManager;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

View File

@ -3,7 +3,7 @@ package com.neuhis.his.service;
/**
* <pre>
* CA
* 1 3.4.3.1 (startAutoSign)
* 1 3.4.3.1 (startAutoSign) 使app: []
* 2 3.4.3.3 (autoSign)signResultsignCert
* 3 3.4.7.1 (createAndGetTssInfo) oriData?
* </pre>

View File

@ -28,17 +28,17 @@ import java.util.Map;
public class BjCaServiceImpl implements IBjCaService {
@Autowired
private BjCaConfig bjCaConfig;
/**
* CAUSER_ID
*/
private final String USER_ID = "XXX";
/**
* https://demo-system.isignet.cn/signHelper/sign.html 校验签名值是否正确
* @return
*/
@Override
public String startAutoSign() {
Map<String, String> params = getBjCaCommonParams();
params.put("userId", USER_ID);//用户 Id
params.put("userId", bjCaConfig.getUserId());//用户 Id医生的CA系统协同用户iD
params.put("timeRegion", " 86400");//自动签名的过期时间,单位为秒(默认最长 86400秒即 24 小时,也可以通过管理端系统重新设置)
params.put("requireQrCode", "N");//是否返回二维码(只能传入 Y、N 两种类型,如果 传 Y会将二维码图片 base64 编码后返回)
params.put("requireQrCode", "Y");//是否返回二维码(只能传入 Y、N 两种类型,如果 传 Y会将二维码图片 base64 编码后返回)
BjCaResult<CaStartAutoSignVo> result = postBjCa(bjCaConfig.getServerStartAuthSign(), params);
if (result.isSuccess()) {
return result.getData().getSignDataId();
@ -49,7 +49,7 @@ public class BjCaServiceImpl implements IBjCaService {
@Override
public void autoSign(String signDataId, String oriDataBase64) {
Map<String, String> params = getBjCaCommonParams();
params.put("userId", USER_ID);//用户 Id
params.put("userId", bjCaConfig.getUserId());//用户 Id用户 Id医生的CA系统协同用户iD
params.put("dataType", "DATA");//原文类型DATA原文HASHhash 数据WEB_SEAL网页签章
params.put("algo", "SM3withSM2");//签名算法(SM3withSM2)
params.put("data", oriDataBase64);//待签数据(必须是 base64编码
@ -73,7 +73,7 @@ public class BjCaServiceImpl implements IBjCaService {
BjCaResult<T> bjCaResult = new BjCaResult<>();
try {
requestJson = BjcaUtil.RequestUtils.generateRequestJson(params, bjCaConfig.getAppSecret());
result = BjcaUtil.HTTPUtils.post(bjCaConfig.getServerStartAuthSign(), requestJson);
result = BjcaUtil.HTTPUtils.post(bjCaConfig.getServerBase() + bjCaConfig.getServerStartAuthSign(), requestJson);
bjCaResult = JSON.parseObject(result, BjCaResult.class);
} catch (Exception e) {
result = "请求CA报错" + e.getMessage();

View File

@ -3,6 +3,7 @@ package com.neuhis.utils;
import cn.hutool.core.codec.Base64;
import com.alibaba.fastjson.JSON;
import com.google.gson.GsonBuilder;
import lombok.extern.slf4j.Slf4j;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
@ -16,10 +17,11 @@ import java.util.*;
/**
* CA
*
* CA线https://demo-system.isignet.cn/signHelper/sign.html
* @author dazer
* @date 2025/3/3 19:07
**/
@Slf4j
public class BjcaUtil {
public static class RequestUtils {
@ -29,7 +31,7 @@ public class BjcaUtil {
public static String generateRequestJson(Map<String, String> request, String key) throws Exception {
String jsonData = JSON.toJSONString(request);
String data = generateSignString(request);
System.out.println("hashData>>>>>"+data);
System.out.println("hashData>>>>>"+data);
String signature;
signature = getHMAC(data.getBytes(), key.getBytes(), "HmacSHA256");//签名方式名称不能修改

View File

@ -1,29 +1,2 @@
# \u5317\u4EACCA
# CA\u670D\u52A1\u5730\u5740
nhit.dc.ca.bjxt01.server-query-user-info=http://192.168.216.112:10201/coss/service/v1/queryUserInfo
# \u5F00\u542F\u81EA\u52A8\u7B7E\u540D
nhit.dc.ca.bjxt01.server-start-auth-sign=http://192.168.216.112:10201/coss/service/v1/startAutoSign
# \u83B7\u53D6\u7B7E\u540D\u7ED3\u679C
nhit.dc.ca.bjxt01.server-get-sign-result=http://192.168.216.112:10201/coss/service/v1/getSignResult
# \u81EA\u52A8\u7B7E\u540D
nhit.dc.ca.bjxt01.server-auth-sign=http://192.168.216.112:10201/coss/service/v1/autoSign
# \u9A8C\u8BC1\u6570\u636E\u7B7E\u540D
nhit.dc.ca.bjxt01.server-verify-sign=http://192.168.216.112:10201/coss/service/v1/verifySign
# \u83B7\u53D6\u5370\u7AE0\u56FE\u7247
nhit.dc.ca.bjxt01.server-query-image=http://192.168.216.112:10201/coss/service/v1/queryImage
# \u65F6\u95F4\u6233\u7B7E\u540D
nhit.dc.ca.bjxt01.server-tss-info=http://192.168.216.112:10201/coss/service/v1/createAndGetTssInfo
# \u9A8C\u8BC1\u65F6\u95F4\u6233\u7B7E\u540D
nhit.dc.ca.bjxt01.server-verify-tss=http://192.168.216.112:10201/coss/service/v1/verifyTS
### \u54B8\u9633\u624B\u9EBB
# \u7B2C\u4E09\u65B9\u8D26\u53F7\u6807\u8BC6
nhit.dc.ca.bjxt01.app-id=APP_3FAE577489B649F78F70C861AA991AEE
# \u7B2C\u4E09\u65B9\u8D26\u53F7\u79D8\u94A5
nhit.dc.ca.bjxt01.app-secret=MDAwNjY1MTZmMjczNDk4MDk2MzJhMTQ4OWYyZTdlNGE=
### \u54B8\u9633\u75C5\u5386
#nhit.dc.ca.bjxt01.app-id=APP_95BF9D123FCF498A83C344ED42473675
#nhit.dc.ca.bjxt01.app-secret=MzI1ODNlYTI2ZjkwNDkzZjg3MDhjOTMwMDBlZDYwOTQ=
#\u5FC5\u73B0\u589E\u52A0\u8BE5\u6761\u76EE\uFF0C\u5426\u5219 springboot 2.7 \u96C6\u6210\uFF0Cswagger\u52A0\u8F7D\u4E0D\u5230\uFF0C\u63D0\u793A\uFF1ANo operations defined in spec!
spring.mvc.pathmatch.matching-strategy=ant_path_matcher

View File

@ -59,7 +59,7 @@ spring:
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
profiles:
active: xyzxhis #druid、xyzxhis
active: xyzxhis,bjca #druid、xyzxhis
# 文件上传
servlet:
multipart:
@ -141,3 +141,9 @@ xss:
swagger:
# 是否开启swagger
enabled: true
# p6spy sql打印
decorator:
datasource:
enabled: true # 是否启用

View File

@ -0,0 +1,41 @@
# \u5317\u4EACCA
# CA\u670D\u52A1\u5730\u5740
nhit.dc.ca.bjxt01.server-base:http://192.168.216.112:10201/coss
#nhit.dc.ca.bjxt01.server-base:http://61.134.26.120:10201/coss #\u5916\u7F51\u5730\u5740
#\u5317\u4EACCA\u534F\u540C\u5E73\u53F0\u7684USER_ID, \u5B59\u9759 \u68C0\u9A8C\u79D1 000616
#\u5237\u6570\u636E\uFF0C\u4F7F\u7528\u56FA\u5B9A\u4E00\u4E2A\u533B\u5E08\u7684user_id
nhit.dc.ca.bjxt01.user_id:2122e89265cc291a00f8d20800bfd24c0f7f72db9225cb69a208dc7183ac2849
## \u5237\u6570\u636E\uFF0C\u4E3B\u8981\u8C03\u7528\u63A5\u53E3\uFF1A
###1\u3001 \u5F00\u542F\u81EA\u52A8\u7B7E(startAutoSign)\uFF0C\u8FD4\u56DE\u7B7E\u540D\u4E8C\u7EF4\u7801\uFF0C\u4F7F\u7528\u3010\u534F\u540C\u7B7E\u540D\u3011\u6709CA\u7684\u7528\u6237\u626B\u63CF\uFF0C\u626B\u63CF\u540E\u53EF\u6301\u7EED\u4E00\u6BB5\u65F6\u95F4
###2\u3001 \u81EA\u52A8\u7B7E\u540D(autoSign)\u7684\u53CD\u53C2\u8FD9\u4E8C\u4E2A\u6570\u636E\u5B58\u5E93signResult\u7B7E\u540D\u7ED3\u679C\uFF0CsignCert\u7B7E\u540D\u8BC1\u4E66\uFF0C
###3\u3001 \u4EA7\u751F\u65F6\u95F4\u6233(createAndGetTssInfo) \u7B2C\u4E09\u4E2A\u63A5\u53E3\u8FD4\u56DE\u65F6\u95F4\u6233\u7ED3\u679C\uFF1A\u5165\u53C2\uFF1AoriData\uFF1A \u6570\u636E\u539F\u6587\u548C\u81EA\u52A8\u7B7E\u540D\u63A5\u53E3\u91CC\u9762\u4F20\u7684\u6570\u636E\u539F\u6587\u4FDD\u6301\u4E00\u81F4\u5C31\u884C
### \u54B8\u9633\u624B\u9EBB
# \u7B2C\u4E09\u65B9\u8D26\u53F7\u6807\u8BC6
#nhit.dc.ca.bjxt01.app-id=APP_3FAE577489B649F78F70C861AA991AEE
# \u7B2C\u4E09\u65B9\u8D26\u53F7\u79D8\u94A5
#nhit.dc.ca.bjxt01.app-secret=MDAwNjY1MTZmMjczNDk4MDk2MzJhMTQ4OWYyZTdlNGE=
### \u54B8\u9633\u75C5\u5386
nhit.dc.ca.bjxt01.app-id=APP_95BF9D123FCF498A83C344ED42473675
nhit.dc.ca.bjxt01.app-secret=MzI1ODNlYTI2ZjkwNDkzZjg3MDhjOTMwMDBlZDYwOTQ=
# \u67E5\u8BE2\u7528\u6237\u4FE1\u606F
nhit.dc.ca.bjxt01.server-query-user-info=/service/v1/queryUserInfo
# \u5F00\u542F\u81EA\u52A8\u7B7E\u540D
nhit.dc.ca.bjxt01.server-start-auth-sign=/service/v1/startAutoSign
# \u83B7\u53D6\u7B7E\u540D\u7ED3\u679C
nhit.dc.ca.bjxt01.server-get-sign-result=/service/v1/getSignResult
# \u81EA\u52A8\u7B7E\u540D
nhit.dc.ca.bjxt01.server-auth-sign=/service/v1/autoSign
# \u9A8C\u8BC1\u6570\u636E\u7B7E\u540D
nhit.dc.ca.bjxt01.server-verify-sign=/service/v1/verifySign
# \u83B7\u53D6\u5370\u7AE0\u56FE\u7247
nhit.dc.ca.bjxt01.server-query-image=/service/v1/queryImage
# \u65F6\u95F4\u6233\u7B7E\u540D
nhit.dc.ca.bjxt01.server-tss-info=/service/v1/createAndGetTssInfo
# \u9A8C\u8BC1\u65F6\u95F4\u6233\u7B7E\u540D
nhit.dc.ca.bjxt01.server-verify-tss=/service/v1/verifyTS