diff --git a/app/user/cmd/api/internal/queue/paySuccessNotify.go b/app/user/cmd/api/internal/queue/paySuccessNotify.go index 1846ff3..23a68f0 100644 --- a/app/user/cmd/api/internal/queue/paySuccessNotify.go +++ b/app/user/cmd/api/internal/queue/paySuccessNotify.go @@ -277,16 +277,25 @@ func containsSensitivePattern(value string) bool { // 姓名脱敏 func maskName(name string) string { - if len(name) <= 1 { + // 将字符串转换为rune切片以正确处理中文字符 + runes := []rune(name) + length := len(runes) + + if length <= 1 { return name } - if len(name) == 2 { - return string(name[0]) + "*" + + if length == 2 { + // 两个字:保留第一个字,第二个字用*替代 + return string(runes[0]) + "*" } - // 中文姓名常见3-4个字,只显示第一个字 - first := string(name[0]) - mask := strings.Repeat("*", len(name)-1) - return first + mask + + // 三个字及以上:保留首尾字,中间用*替代 + first := string(runes[0]) + last := string(runes[length-1]) + mask := strings.Repeat("*", length-2) + + return first + mask + last } // 身份证号脱敏