add
This commit is contained in:
65
internal/domains/api/services/query_whitelist_helpers.go
Normal file
65
internal/domains/api/services/query_whitelist_helpers.go
Normal file
@@ -0,0 +1,65 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"crypto/sha256"
|
||||
"encoding/hex"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// NormalizeIDCard 归一化身份证号(去空格、末位 X 大写)
|
||||
func NormalizeIDCard(idCard string) string {
|
||||
idCard = strings.TrimSpace(idCard)
|
||||
return strings.ToUpper(idCard)
|
||||
}
|
||||
|
||||
// HashIDCard 计算身份证号 SHA256 哈希,用于索引与匹配
|
||||
func HashIDCard(idCard string) string {
|
||||
sum := sha256.Sum256([]byte(NormalizeIDCard(idCard)))
|
||||
return hex.EncodeToString(sum[:])
|
||||
}
|
||||
|
||||
// MaskIDCard 脱敏展示:350681********0611
|
||||
func MaskIDCard(idCard string) string {
|
||||
id := NormalizeIDCard(idCard)
|
||||
if len(id) <= 10 {
|
||||
return id
|
||||
}
|
||||
return id[:6] + "********" + id[len(id)-4:]
|
||||
}
|
||||
|
||||
// IdentityParams 从请求参数中提取的身份证与姓名
|
||||
type IdentityParams struct {
|
||||
IDCard string
|
||||
Name string
|
||||
OK bool
|
||||
}
|
||||
|
||||
// ExtractIdentityParams 从解密后的 params map 提取 id_card + name
|
||||
func ExtractIdentityParams(params map[string]interface{}) IdentityParams {
|
||||
idCard := firstNonEmptyString(params, "id_card", "idCard")
|
||||
name := firstNonEmptyString(params, "name")
|
||||
if idCard == "" {
|
||||
return IdentityParams{OK: false}
|
||||
}
|
||||
return IdentityParams{
|
||||
IDCard: NormalizeIDCard(idCard),
|
||||
Name: strings.TrimSpace(name),
|
||||
OK: true,
|
||||
}
|
||||
}
|
||||
|
||||
func firstNonEmptyString(params map[string]interface{}, keys ...string) string {
|
||||
for _, key := range keys {
|
||||
v, ok := params[key]
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
if s, ok := v.(string); ok {
|
||||
s = strings.TrimSpace(s)
|
||||
if s != "" {
|
||||
return s
|
||||
}
|
||||
}
|
||||
}
|
||||
return ""
|
||||
}
|
||||
Reference in New Issue
Block a user