id-validator/id_validator.go
2021-01-10 14:56:35 +08:00

70 lines
1.6 KiB
Go

package id_validator
import (
"fmt"
"strconv"
"id-validator/data"
)
// 验证身份证号合法性
func IsValid(id string) bool {
if !CheckIdArgument(id) {
return false
}
code := GenerateType(id)
if !CheckAddressCode(code["addressCode"], code["birthdayCode"]) || !CheckBirthdayCode(code["birthdayCode"]) || !CheckOrderCode(code["order"]) {
return false
}
// 15位身份证不含校验码
if code["type"] == "15" {
return true
}
// 验证:校验码
checkBit := GeneratorCheckBit(code["body"])
return code["checkBit"] == checkBit
}
// 获取身份证信息
func GetInfo(id string) map[string]string {
// 验证有效性
if !IsValid(id) {
return map[string]string{}
}
code := GenerateType(id)
addressInfo := GetAddressInfo(code["addressCode"], code["birthdayCode"])
fmt.Println(addressInfo)
address, _ := strconv.Atoi(code["addressCode"])
abandoned := "0"
if data.AddressCode[address] == "" {
abandoned = "1"
}
// birthday, _ := time.Parse("20060102", code["birthdayCode"])
sex := "1"
sexCode, _ := strconv.Atoi(code["order"])
if (sexCode % 2) == 0 {
sex = "0"
}
info := map[string]string{
"addressCode": code["addressCode"],
"abandoned": abandoned,
"address": addressInfo["province"] + addressInfo["city"] + addressInfo["district"],
// "addressTree": addressInfo,
// "birthdayCode": birthday,
"constellation": GetConstellation(code["birthdayCode"]),
"chineseZodiac": GetChineseZodiac(code["birthdayCode"]),
"sex": sex,
"length": code["type"],
"checkBit": code["checkBit"],
}
return info
}