From 74ddfcae3c781d1ad5b9051dd4fada6e52ad292f Mon Sep 17 00:00:00 2001 From: liulu Date: Tue, 29 Oct 2024 14:13:18 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=86=E9=92=A5=E6=81=A2=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/KeyInfoAsymController.java | 2 +- .../chsm/controller/KeyInfoController.java | 2 +- .../sunyard/chsm/service/KeyInfoService.java | 3 +- .../chsm/service/impl/KeyInfoServiceImpl.java | 63 +++++++++---------- 4 files changed, 35 insertions(+), 35 deletions(-) diff --git a/chsm-web-manage/src/main/java/com/sunyard/chsm/controller/KeyInfoAsymController.java b/chsm-web-manage/src/main/java/com/sunyard/chsm/controller/KeyInfoAsymController.java index 929e06e..9e89698 100644 --- a/chsm-web-manage/src/main/java/com/sunyard/chsm/controller/KeyInfoAsymController.java +++ b/chsm-web-manage/src/main/java/com/sunyard/chsm/controller/KeyInfoAsymController.java @@ -52,7 +52,7 @@ public class KeyInfoAsymController { */ @PostMapping("/backup") public ResponseEntity backupKey(@Valid @RequestBody KeyInfoDTO.Backup backup) { - backup.setKeyType(KeyCategory.SYM_KEY.getCode()); + backup.setKeyType(KeyCategory.ASYM_KEY.getCode()); byte[] content = keyInfoService.backupKey(backup); String fileName = String.join("-", diff --git a/chsm-web-manage/src/main/java/com/sunyard/chsm/controller/KeyInfoController.java b/chsm-web-manage/src/main/java/com/sunyard/chsm/controller/KeyInfoController.java index 8512036..b4b4ab0 100644 --- a/chsm-web-manage/src/main/java/com/sunyard/chsm/controller/KeyInfoController.java +++ b/chsm-web-manage/src/main/java/com/sunyard/chsm/controller/KeyInfoController.java @@ -78,7 +78,7 @@ public class KeyInfoController { @PostMapping("/recovery") public R recoveryKey(MultipartFile file) { try { - String s = keyInfoService.recoveryKey(file.getBytes()); + String s = keyInfoService.recoveryKey(file.getInputStream()); return R.ok(s); } catch (IOException e) { throw new SspwebException("获取文件内容异常"); diff --git a/chsm-web-manage/src/main/java/com/sunyard/chsm/service/KeyInfoService.java b/chsm-web-manage/src/main/java/com/sunyard/chsm/service/KeyInfoService.java index 431a4e2..1e6233b 100644 --- a/chsm-web-manage/src/main/java/com/sunyard/chsm/service/KeyInfoService.java +++ b/chsm-web-manage/src/main/java/com/sunyard/chsm/service/KeyInfoService.java @@ -3,6 +3,7 @@ package com.sunyard.chsm.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.sunyard.chsm.dto.KeyInfoDTO; +import java.io.InputStream; import java.util.List; /** @@ -19,7 +20,7 @@ public interface KeyInfoService { byte[] backupKey(KeyInfoDTO.Backup backup); - String recoveryKey(byte[] content); + String recoveryKey(InputStream is); void enableKey(List ids); diff --git a/chsm-web-manage/src/main/java/com/sunyard/chsm/service/impl/KeyInfoServiceImpl.java b/chsm-web-manage/src/main/java/com/sunyard/chsm/service/impl/KeyInfoServiceImpl.java index 9111b21..ea433c9 100644 --- a/chsm-web-manage/src/main/java/com/sunyard/chsm/service/impl/KeyInfoServiceImpl.java +++ b/chsm-web-manage/src/main/java/com/sunyard/chsm/service/impl/KeyInfoServiceImpl.java @@ -20,7 +20,6 @@ import com.sunyard.chsm.sdf.model.EccKey; import com.sunyard.chsm.service.KeyInfoService; import com.sunyard.chsm.utils.JsonUtils; import com.sunyard.ssp.common.exception.SspwebException; -import lombok.Cleanup; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.binary.Hex; import org.springframework.beans.BeanUtils; @@ -33,8 +32,8 @@ import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.io.BufferedReader; -import java.io.ByteArrayInputStream; import java.io.IOException; +import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import java.time.LocalDate; @@ -252,42 +251,42 @@ public class KeyInfoServiceImpl implements KeyInfoService { } @Override - public String recoveryKey(byte[] content) { + public String recoveryKey(InputStream is) { int suc = 0, count = 0, err = 0, exd = 0; - ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(content); - @Cleanup BufferedReader reader = new BufferedReader(new InputStreamReader(byteArrayInputStream, StandardCharsets.UTF_8)); - - String line; - while (true) { - try { - if ((line = reader.readLine()) == null) break; - } catch (IOException e) { - throw new SspwebException("文件读取异常"); - } - if (ObjectUtils.isEmpty(line)) { - continue; - } - count++; - try { - KeyInfo info = JsonUtils.parse(line, KeyInfo.class); - KeyInfo exist = keyInfoMapper.selectById(info.getId()); - if (exist != null) { - exd++; + try (BufferedReader reader = new BufferedReader(new InputStreamReader(is))){ + String line; + while (true) { + try { + if ((line = reader.readLine()) == null) break; + } catch (IOException e) { + throw new SspwebException("文件读取异常"); + } + if (ObjectUtils.isEmpty(line)) { continue; } - spKeyRecordMapper.delete( - new LambdaQueryWrapper() - .eq(KeyRecord::getKeyId, info.getId()) - ); - keyInfoMapper.insert(info); - info.getRecords().forEach(spKeyRecordMapper::insert); - suc++; - } catch (Exception ex) { - err++; + count++; + try { + KeyInfo info = JsonUtils.parse(line, KeyInfo.class); + KeyInfo exist = keyInfoMapper.selectById(info.getId()); + if (exist != null) { + exd++; + continue; + } + spKeyRecordMapper.delete( + new LambdaQueryWrapper() + .eq(KeyRecord::getKeyId, info.getId()) + ); + keyInfoMapper.insert(info); + info.getRecords().forEach(spKeyRecordMapper::insert); + suc++; + } catch (Exception ex) { + err++; + } } + } catch (IOException e) { + throw new SspwebException(e.getMessage()); } - return String.format("恢复完成,共%d条数据,跳过已经存在的密钥%d条,恢复成功%d条,解析失败%d条", count, exd, suc, err); }