From 572df690f72ed4a077d934823f261dec39b3cc7d Mon Sep 17 00:00:00 2001
From: 刘帅 <rr.iii@qq.com>
Date: 星期二, 08 九月 2026 17:11:34 +0800
Subject: [PATCH] feat&bug:文档内容修改

---
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/ExcelUtil.java |   21 ++++++++++++++++++++-
 1 files changed, 20 insertions(+), 1 deletions(-)

diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/ExcelUtil.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/ExcelUtil.java
index fd44c75..22e26b5 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/ExcelUtil.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/ExcelUtil.java
@@ -32,7 +32,7 @@
 			for (int i = 0; i < values.length; i++) {
 				row = sheet.createRow(i + 1);
 				for (int j = 0; j < values[i].length; j++) {
-					row.createCell(j).setCellValue(values[i][j]);
+					row.createCell(j).setCellValue(maskSensitiveValue(j < title.length ? title[j] : null, values[i][j]));
 				}
 			}
 
@@ -40,6 +40,25 @@
 		return wb;
 	}
 
+	/** Export files are an external disclosure channel and always remain masked. */
+	private static String maskSensitiveValue(String columnName, String value) {
+		if (value == null) return null;
+		String column = columnName == null ? "" : columnName.toLowerCase();
+		if (column.contains("身份证") || column.contains("idcard") || column.contains("identity")) {
+			return value.length() <= 10 ? stars(value.length()) : value.substring(0, 6) + stars(value.length() - 10) + value.substring(value.length() - 4);
+		}
+		if (column.contains("电话") || column.contains("手机") || column.contains("phone") || column.contains("mobile")) {
+			return value.length() <= 7 ? stars(value.length()) : value.substring(0, 3) + "****" + value.substring(7);
+		}
+		return value;
+	}
+
+	private static String stars(int size) {
+		StringBuilder value = new StringBuilder();
+		for (int i = 0; i < size; i++) value.append('*');
+		return value.toString();
+	}
+
 	public static void setResponseHeader(HttpServletResponse response, String fileName) {
 		try {
 			response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName));

--
Gitblit v1.7.1