mirror of https://gitee.com/y_project/RuoYi.git
feat(all): bjca 增加单独配置文件
parent
e8c1bae9f8
commit
2bc6e1171e
|
@ -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>
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
/**
|
||||
* P6Spy有内置的SQL输出格式,如上配置文件。这里我们使用自定义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);
|
||||
}
|
||||
|
||||
}
|
|
@ -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;
|
||||
|
|
|
@ -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)的反参这二个数据存库signResult签名结果,signCert签名证书,
|
||||
* 接口3 3.4.7.1 产生时间戳(createAndGetTssInfo) 第三个接口的时间戳结果:入参:oriData,这个是啥字段? 数据原文和自动签名接口里面传的数据原文保持一致就行
|
||||
* </pre>
|
||||
|
|
|
@ -28,17 +28,17 @@ import java.util.Map;
|
|||
public class BjCaServiceImpl implements IBjCaService {
|
||||
@Autowired
|
||||
private BjCaConfig bjCaConfig;
|
||||
/**
|
||||
* 北京CA协同平台的USER_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:原文,HASH:hash 数据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();
|
||||
|
|
|
@ -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");//签名方式名称不能修改
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 # 是否启用
|
||||
|
|
|
@ -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
|
Loading…
Reference in New Issue