From d3432062b8ab69703c97932bfed7435030021c00 Mon Sep 17 00:00:00 2001 From: yuejiajun <1530620364@qq.com> Date: Wed, 15 Oct 2025 17:56:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=87=BA=E5=8A=A0=E5=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/common/domain/BaseXPortData.java | 69 +++++++++++++++++++ .../demo/common/typography/BaseService.java | 6 ++ .../common/typography/BaseServiceImpl.java | 51 ++++++++++---- 3 files changed, 114 insertions(+), 12 deletions(-) create mode 100644 src/main/java/com/example/demo/common/domain/BaseXPortData.java diff --git a/src/main/java/com/example/demo/common/domain/BaseXPortData.java b/src/main/java/com/example/demo/common/domain/BaseXPortData.java new file mode 100644 index 0000000..e60168e --- /dev/null +++ b/src/main/java/com/example/demo/common/domain/BaseXPortData.java @@ -0,0 +1,69 @@ +package com.example.demo.common.domain; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.experimental.Accessors; +import lombok.experimental.SuperBuilder; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 导入导出加密传输对象 + * 用于封装导入导出的统一数据结构 + * + * @author 岳佳君 (2025年10月15日 16:29:01) + * @version 1.0.0 + */ +@Schema(description = "导入导出加密传输对象") +@Getter +@Setter +@SuperBuilder +@Accessors(chain=true) +@NoArgsConstructor +@AllArgsConstructor +public class BaseXPortData implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * ID + */ + @Schema(description = "ID") + private String id; + + /** + * 时间戳 + */ + @Schema(description = "时间戳") + private String ts; + + /** + * 签名 + */ + @Schema(description = "签名") + private String sign; + + /** + * 完整性 + */ + @Schema(description = "完整性") + private String gritty; + + /** + * 版本 + */ + @Schema(description = "版本") + private String version; + + /** + * 数据 + */ + @Schema(description = "数据") + private String data; + +} diff --git a/src/main/java/com/example/demo/common/typography/BaseService.java b/src/main/java/com/example/demo/common/typography/BaseService.java index cbe6713..a25acc8 100644 --- a/src/main/java/com/example/demo/common/typography/BaseService.java +++ b/src/main/java/com/example/demo/common/typography/BaseService.java @@ -62,6 +62,12 @@ public interface BaseService list = new ArrayList<>(); for (String id : ids) { try { // 使用detail方法验证ID是否存在,并获取数据 - Object templateVO = exportDetail(id); - if (templateVO == null) { + Object obj = exportDetail(id); + if (obj == null) { throw new BusinessException("不存在: " + id); } + String content = JSON.toJSONString(obj); + // 加密 + sm4.encryptHex(content); + // 统一结构体 + BaseXPortData xPortData = BaseXPortData.builder() + .id(id) + .ts(ts) + .data(content) + .build(); // 添加到导出列表 - list.add(templateVO); + list.add(xPortData); } catch (Exception e) { // ignore } @@ -298,9 +317,17 @@ public abstract class BaseServiceImpl< StringBuilder jsonlContent = new StringBuilder(); for (Object object : list) { String jsonContent = JSON.toJSONString(object); - // TODO 加密 jsonlContent.append(jsonContent).append("\n"); } + InputStream is = IoUtil.toStream(jsonlContent.toString(), StandardCharsets.UTF_8); + fileNameUniqueList.add( + String.format("%s-%s-%s.jsonl", + // getOperationName(), + "数据", + DateUtil.format(new Date(), "yyyyMMdd"), + IdUtil.simpleUUID() + )); + inputStreams.add(is); // 转换为数组 String[] fileNamesArr = fileNameUniqueList.toArray(new String[0]); InputStream[] inputStreamsArr = inputStreams.toArray(new InputStream[0]);