新增添加医生

This commit is contained in:
2023-07-11 09:17:21 +08:00
parent fa96649a43
commit 1e5a26b329
10 changed files with 521 additions and 67 deletions
+121
View File
@@ -0,0 +1,121 @@
// Package utils 身份证处理
package utils
import (
"errors"
"regexp"
"strconv"
"strings"
"time"
"unicode/utf8"
)
// GetCardAge 获取身份证年龄
func GetCardAge(cardNum string) (int, error) {
// 获取当前时间
now := time.Now()
// 解析身份证号中的出生日期
birthDateStr := cardNum[6:14]
birthYear, err := strconv.Atoi(birthDateStr[0:4])
if err != nil {
return 0, err
}
birthMonth, err := strconv.Atoi(birthDateStr[4:6])
if err != nil {
return 0, err
}
// 计算年龄
age := now.Year() - birthYear
if now.Month() < time.Month(birthMonth) {
age--
}
return age, nil
}
// CheckCardNum 检测身份证号
func CheckCardNum(cardNum string) (bool, error) {
regex := `^(?:1[1-5]|2[1-3]|3[1-7]|4[1-6]|5[0-4]|6[1-5])\d{4}(?:1[89]|20)\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\d|3[01])\d{3}[\dxX]$`
match, err := regexp.MatchString(regex, cardNum)
if !match || err != nil {
return false, errors.New("身份证号错误")
}
return true, nil
}
// GetCardSex 获取身份证性别
func GetCardSex(cardNum string) (int, error) {
genderStr := cardNum[len(cardNum)-2 : len(cardNum)-1]
genderNum, err := strconv.Atoi(genderStr)
if err != nil {
return 0, err
}
// 判断性别
if genderNum%2 == 0 {
return 2, nil
} else {
return 1, nil
}
}
// GetMaskCardNum 身份证号码脱敏
func GetMaskCardNum(cardNum string) string {
if len(cardNum) != 18 {
return cardNum
}
// 获取身份证号前后部分
frontPart := cardNum[0:6]
backPart := cardNum[14:]
// 替换中间部分数字为 *
middlePart := "****"
// 拼接新的身份证号
maskedIDCard := frontPart + middlePart + backPart
return maskedIDCard
}
// GetMaskCardName 身份证名字脱敏
func GetMaskCardName(cardName string) string {
// 判断姓名长度
length := utf8.RuneCountInString(cardName)
// 判断是否是英文姓名
isEnglish := strings.ContainsAny(cardName, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
if length == 2 {
// 两个字符的姓名
if isEnglish {
// 英文姓名
return string(cardName[0]) + "*"
} else {
// 中文姓名
return string([]rune(cardName)[0]) + "*"
}
} else if length == 3 {
// 三个字符的姓名
if isEnglish {
// 英文姓名
return string(cardName[0]) + "*" + string(cardName[2])
} else {
// 中文姓名
return string([]rune(cardName)[0]) + "*" + string([]rune(cardName)[2])
}
} else if length >= 4 {
// 四个及以上字符的姓名
if isEnglish {
// 英文姓名
return string(cardName[0]) + "*" + string(cardName[length-1])
} else {
// 中文姓名
return string([]rune(cardName)[0]) + "*" + string([]rune(cardName)[length-1])
}
}
return cardName
}
+1 -1
View File
@@ -4,7 +4,7 @@ import "regexp"
// RegexpMobile 手机号匹配
func RegexpMobile(mobile string) bool {
ok, err := regexp.MatchString(`^1[3-9][0-9]{9}$`, mobile)
ok, err := regexp.MatchString(`^1(3\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\d|9[0-35-9])\d{8}$`, mobile)
if err != nil {
return false
}
+11
View File
@@ -0,0 +1,11 @@
package utils
import (
"hospital-admin-api/config"
"strings"
)
// RemoveOssDomain 去除oss地址中的前缀
func RemoveOssDomain(url string) string {
return strings.Replace(url, config.C.Oss.OssCustomDomainName, "", 1)
}