f
This commit is contained in:
60
app/main/api/internal/pkg/querysubject/extract.go
Normal file
60
app/main/api/internal/pkg/querysubject/extract.go
Normal file
@@ -0,0 +1,60 @@
|
||||
package querysubject
|
||||
|
||||
import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
func isNameField(key string) bool {
|
||||
key = strings.ToLower(key)
|
||||
if isPhoneField(key) || isIDCardField(key) {
|
||||
return false
|
||||
}
|
||||
return strings.Contains(key, "name") || strings.Contains(key, "姓名") ||
|
||||
strings.Contains(key, "owner") || strings.Contains(key, "main")
|
||||
}
|
||||
|
||||
func isIDCardField(key string) bool {
|
||||
key = strings.ToLower(key)
|
||||
return strings.Contains(key, "idcard") || strings.Contains(key, "id_card") ||
|
||||
strings.Contains(key, "身份证") || strings.Contains(key, "证件号")
|
||||
}
|
||||
|
||||
func isPhoneField(key string) bool {
|
||||
key = strings.ToLower(key)
|
||||
return strings.Contains(key, "phone") || strings.Contains(key, "mobile") ||
|
||||
strings.Contains(key, "手机") || strings.Contains(key, "电话")
|
||||
}
|
||||
|
||||
// ExtractPlainSubject 从解密后的 query 参数 map 中提取被查询人姓名、手机、身份证(首次匹配优先)
|
||||
func ExtractPlainSubject(m map[string]interface{}) (name, mobile, idCard string) {
|
||||
walkMap(m, &name, &mobile, &idCard)
|
||||
return name, mobile, idCard
|
||||
}
|
||||
|
||||
func walkMap(m map[string]interface{}, name, mobile, idCard *string) {
|
||||
for k, v := range m {
|
||||
switch val := v.(type) {
|
||||
case string:
|
||||
assignSubjectField(k, val, name, mobile, idCard)
|
||||
case map[string]interface{}:
|
||||
walkMap(val, name, mobile, idCard)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func assignSubjectField(key, val string, name, mobile, idCard *string) {
|
||||
if val == "" {
|
||||
return
|
||||
}
|
||||
if *idCard == "" && isIDCardField(key) {
|
||||
*idCard = val
|
||||
return
|
||||
}
|
||||
if *mobile == "" && isPhoneField(key) {
|
||||
*mobile = val
|
||||
return
|
||||
}
|
||||
if *name == "" && isNameField(key) {
|
||||
*name = val
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user