This commit is contained in:
牛子源 2025-05-23 14:26:42 +08:00
parent bf9770f552
commit c3417d5b94
3 changed files with 112 additions and 1 deletions

16
pom.xml
View File

@ -108,7 +108,21 @@
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>com.syjiaer.common</groupId>
<artifactId>bcpkix</artifactId>
<version>1.60</version>
</dependency>
<dependency>
<groupId>com.syjiaer.common</groupId>
<artifactId>bcprov</artifactId>
<version>1.60</version>
</dependency>
<dependency>
<groupId>com.syjiaer.common</groupId>
<artifactId>EncUtil</artifactId>
<version>1.00</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>

View File

@ -0,0 +1,88 @@
package com.syjiaer.clinic.server.common.util;
import cn.hsaf.common.utils.EasyGmUtils;
import cn.hsaf.common.utils.SignUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.bouncycastle.util.encoders.Hex;
import java.util.Base64;
public class EncUtil {
/**
* 加密
*
* @param data
* @param appId
* @param appSecret
* @return
* @throws Exception
*/
public static String encrypt(String data, String appId, String appSecret) throws Exception {
//加密流程
//用appId加密appSecret获取新秘钥
byte[] appSecretEncData = EasyGmUtils.sm4Encrypt(appId.substring(0, 16).getBytes("UTF-8"), appSecret.getBytes("UTF-8"));
//新秘钥串
byte[] secKey = Hex.toHexString(appSecretEncData).toUpperCase().substring(0, 16).getBytes("UTF-8");
//加密0数据
String encryptDataStr = Hex.toHexString(EasyGmUtils.sm4Encrypt(secKey, data.getBytes("UTF-8"))).toUpperCase();
return encryptDataStr;
}
/**
* 解密
*
* @param data
* @param appId
* @param appSecret
* @return
* @throws Exception
*/
public static String decrypt(String data, String appId, String appSecret) throws Exception {
byte[] appSecretEncDataDecode = EasyGmUtils.sm4Encrypt(appId.substring(0, 16).getBytes("UTF-8"), appSecret.getBytes("UTF-8"));
byte[] secKeyDecode = Hex.toHexString(appSecretEncDataDecode).toUpperCase().substring(0, 16).getBytes("UTF-8");
String decryptDataStr = new String(EasyGmUtils.sm4Decrypt(secKeyDecode, Hex.decode(data)));
return decryptDataStr;
}
/**
* 签名
*
* @param jsonObject
* @param appSecret
* @param privateKey
* @return
* @throws Exception
*/
public static String sign(JSONObject jsonObject, String appSecret, String privateKey) throws Exception {
// 获取签名串
byte[] signText = SignUtil.getSignText(jsonObject, appSecret).getBytes("UTF-8");
byte[] userId = appSecret.getBytes();
byte[] prvkey = Base64.getDecoder().decode(privateKey);
String responseSign = Base64.getEncoder().encodeToString(EasyGmUtils.signSm3WithSm2(signText, userId, prvkey));
return responseSign;
}
/**
* 验签
*
* @param jsonObject
* @param appSecret
* @param publicKey
* @param responseSign
* @return
* @throws Exception
*/
public static boolean verify(JSONObject jsonObject, String appSecret, String publicKey, String responseSign) throws Exception {
//验签
byte[] msg = SignUtil.getSignText(jsonObject, appSecret).getBytes("UTF-8");
byte[] userIdDecode = appSecret.getBytes("UTF-8");
byte[] pubkey = Base64.getDecoder().decode(publicKey);
byte[] signData = Base64.getDecoder().decode(responseSign);
return EasyGmUtils.verifySm3WithSm2(msg, userIdDecode, signData, pubkey);
}
}

View File

@ -102,6 +102,15 @@ public class DiagnosisService extends BaseService {
@Transactional(rollbackFor = Exception.class)
public void save(MedicalRecordSaveDto saveDto) {
int regisId =saveDto.getRegistrationId();
QueryWrapper<Diagnosis> queryWrapperRegis = new QueryWrapper<>();
queryWrapperRegis.eq("registration_id", regisId);
Diagnosis regisDbDiagnosis = diagnosisMapper.selectOne(queryWrapperRegis);
if(regisDbDiagnosis!=null){
throw new MessageException("该挂号已完诊,请不要重复完诊");
}
if (saveDto == null){
throw new MessageException("参数不能为空");
}