From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master

---
 jnpf-biz-common/jnpf-audit-api/src/main/java/jnpf/audit/AuditOperationIds.java |   34 ++++++++++++++++++++++++++++++++++
 1 files changed, 34 insertions(+), 0 deletions(-)

diff --git a/jnpf-biz-common/jnpf-audit-api/src/main/java/jnpf/audit/AuditOperationIds.java b/jnpf-biz-common/jnpf-audit-api/src/main/java/jnpf/audit/AuditOperationIds.java
new file mode 100644
index 0000000..be58dee
--- /dev/null
+++ b/jnpf-biz-common/jnpf-audit-api/src/main/java/jnpf/audit/AuditOperationIds.java
@@ -0,0 +1,34 @@
+package jnpf.audit;
+
+/** 鐢卞悗绔鍙戠殑 biz_sign 娲剧敓绋冲畾鐨勫璁℃搷浣滃垎缁勯敭銆� */
+public final class AuditOperationIds {
+
+    private static final String PREFIX = "BS-";
+    private static final int MAX_SIGN_LENGTH = 40;
+
+    public static String correlation(String bizSign) {
+        String normalized = normalize(bizSign);
+        return normalized == null ? null : PREFIX + normalized;
+    }
+
+    private static String normalize(String bizSign) {
+        if (bizSign == null) {
+            return null;
+        }
+        String value = bizSign.trim();
+        if (value.isEmpty() || value.length() > MAX_SIGN_LENGTH) {
+            return null;
+        }
+        for (int i = 0; i < value.length(); i++) {
+            char ch = value.charAt(i);
+            boolean asciiLetter = (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z');
+            if (!asciiLetter && (ch < '0' || ch > '9') && ch != '-' && ch != '_') {
+                return null;
+            }
+        }
+        return value;
+    }
+
+    private AuditOperationIds() {
+    }
+}

--
Gitblit v1.8.0