初始化提交

This commit is contained in:
2023-08-31 17:32:45 +08:00
parent 88dc1bbe74
commit 7826652e11
101 changed files with 6127 additions and 2 deletions
+25
View File
@@ -0,0 +1,25 @@
package utils
// DoctorTitleToStr 医生职称
func DoctorTitleToStr(doctorTitle int) string {
var result string
switch doctorTitle {
case 1:
result = "主任医师"
case 2:
result = "主任中医师"
case 3:
result = "副主任医师"
case 4:
result = "副主任中医师"
case 5:
result = "主治医师"
case 6:
result = "住院医师"
default:
result = "未知"
}
return result
}
+21
View File
@@ -0,0 +1,21 @@
package utils
import (
"errors"
"os"
)
// PathExists 文件是否存在
func PathExists(path string) (bool, error) {
fi, err := os.Stat(path)
if err == nil {
if fi.IsDir() {
return true, nil
}
return false, errors.New("存在同名文件")
}
if os.IsNotExist(err) {
return false, nil
}
return false, err
}
+124
View File
@@ -0,0 +1,124 @@
// Package utils 身份证处理
package utils
import (
"errors"
"fmt"
"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) {
fmt.Println(cardNum)
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)
fmt.Println(match)
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
}
+23
View File
@@ -0,0 +1,23 @@
package utils
import (
"encoding/json"
"fmt"
"github.com/sirupsen/logrus"
"hospital-open-api/global"
)
func LogJsonInfo(v interface{}) {
jsonData, err := json.Marshal(v)
if err != nil {
fmt.Println("Error marshaling struct to JSON:", err)
return
}
jsonString := string(jsonData)
fmt.Println(jsonString)
global.Logger.WithFields(logrus.Fields{
"data": jsonString,
}).Info("info")
}
+12
View File
@@ -0,0 +1,12 @@
package utils
import "regexp"
// RegexpMobile 手机号匹配
func RegexpMobile(mobile string) bool {
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
}
return ok
}
+19
View File
@@ -0,0 +1,19 @@
package utils
import (
"hospital-open-api/config"
"strings"
)
// RemoveOssDomain 去除oss地址中的前缀
func RemoveOssDomain(url string) string {
return strings.Replace(url, config.C.Oss.OssCustomDomainName, "", 1)
}
// AddOssDomain 去除oss地址中的前缀
func AddOssDomain(url string) string {
if url == "" {
return ""
}
return config.C.Oss.OssCustomDomainName + url
}
+15
View File
@@ -0,0 +1,15 @@
package utils
import (
"github.com/go-playground/validator/v10"
"hospital-open-api/global"
)
// Translate 检验并返回检验错误信息
func Translate(err error) (errMsg string) {
errs := err.(validator.ValidationErrors)
for _, err := range errs {
errMsg = err.Translate(global.Trans)
}
return
}