修正银行卡问题

This commit is contained in:
wucongxing 2023-07-20 09:28:53 +08:00
parent 845ea4a000
commit e9e03b22ea
9 changed files with 268 additions and 109 deletions

View File

@ -84,17 +84,26 @@ func (r *UserDoctor) GetUserDoctor(c *gin.Context) {
// PutUserDoctor 修改医生 // PutUserDoctor 修改医生
func (r *UserDoctor) PutUserDoctor(c *gin.Context) { func (r *UserDoctor) PutUserDoctor(c *gin.Context) {
userDoctorRequest := requests.UserDoctorRequest{} userDoctorRequest := requests.UserDoctorRequest{}
if err := c.ShouldBindJSON(&userDoctorRequest.PutUserDoctor); err != nil { req := userDoctorRequest.PutUserDoctor
if err := c.ShouldBindJSON(&req); err != nil {
responses.FailWithMessage(err.Error(), c) responses.FailWithMessage(err.Error(), c)
return return
} }
// 参数验证 // 参数验证
if err := global.Validate.Struct(userDoctorRequest.PutUserDoctor); err != nil { if err := global.Validate.Struct(req); err != nil {
responses.FailWithMessage(utils.Translate(err), c) responses.FailWithMessage(utils.Translate(err), c)
return return
} }
// 签名、身份证数据不为空的情况下,银行卡必填
if req.IdCardFront != "" && req.IdCardBack != "" && req.SignImage != "" {
if req.BankCardCode == "" || req.BankId == "" || req.BankCardProvinceId == 0 || req.BankCardCountyId == 0 || req.BankCardCityId == 0 {
responses.FailWithMessage("请填入银行卡数据", c)
return
}
}
id := c.Param("doctor_id") id := c.Param("doctor_id")
if id == "" { if id == "" {
responses.FailWithMessage("缺少参数", c) responses.FailWithMessage("缺少参数", c)
@ -110,7 +119,7 @@ func (r *UserDoctor) PutUserDoctor(c *gin.Context) {
// 业务处理 // 业务处理
userDoctorService := service.UserDoctorService{} userDoctorService := service.UserDoctorService{}
_, err = userDoctorService.PutUserDoctor(doctorId, userDoctorRequest.PutUserDoctor) _, err = userDoctorService.PutUserDoctor(doctorId, req)
if err != nil { if err != nil {
responses.FailWithMessage(err.Error(), c) responses.FailWithMessage(err.Error(), c)
return return
@ -122,17 +131,26 @@ func (r *UserDoctor) PutUserDoctor(c *gin.Context) {
// AddUserDoctor 新增医生 // AddUserDoctor 新增医生
func (r *UserDoctor) AddUserDoctor(c *gin.Context) { func (r *UserDoctor) AddUserDoctor(c *gin.Context) {
userDoctorRequest := requests.UserDoctorRequest{} userDoctorRequest := requests.UserDoctorRequest{}
if err := c.ShouldBindJSON(&userDoctorRequest.AddUserDoctor); err != nil { req := userDoctorRequest.AddUserDoctor
if err := c.ShouldBindJSON(&req); err != nil {
responses.FailWithMessage(err.Error(), c) responses.FailWithMessage(err.Error(), c)
return return
} }
// 参数验证 // 参数验证
if err := global.Validate.Struct(userDoctorRequest.AddUserDoctor); err != nil { if err := global.Validate.Struct(req); err != nil {
responses.FailWithMessage(utils.Translate(err), c) responses.FailWithMessage(utils.Translate(err), c)
return return
} }
// 签名、身份证数据不为空的情况下,银行卡必填
if req.IdCardFront != "" && req.IdCardBack != "" && req.SignImage != "" {
if req.BankCardCode == "" || req.BankId == "" || req.BankCardProvinceId == 0 || req.BankCardCountyId == 0 || req.BankCardCityId == 0 {
responses.FailWithMessage("请填入银行卡数据", c)
return
}
}
// 获取当前登陆用户id // 获取当前登陆用户id
userId := c.GetInt64("UserId") userId := c.GetInt64("UserId")
if userId == 0 { if userId == 0 {
@ -144,7 +162,7 @@ func (r *UserDoctor) AddUserDoctor(c *gin.Context) {
// 业务处理 // 业务处理
userDoctorService := service.UserDoctorService{} userDoctorService := service.UserDoctorService{}
_, err := userDoctorService.AddUserDoctor(userIdStr, userDoctorRequest.AddUserDoctor) _, err := userDoctorService.AddUserDoctor(userIdStr, req)
if err != nil { if err != nil {
responses.FailWithMessage(err.Error(), c) responses.FailWithMessage(err.Error(), c)
return return

View File

@ -11,7 +11,7 @@ type AreaDao struct {
} }
// GetAreaById 获取地区-地区id // GetAreaById 获取地区-地区id
func (r *AreaDao) GetAreaById(areaId int64) (m *model.Area, err error) { func (r *AreaDao) GetAreaById(areaId int) (m *model.Area, err error) {
err = global.Db.First(&m, areaId).Error err = global.Db.First(&m, areaId).Error
if err != nil { if err != nil {
return nil, err return nil, err
@ -38,7 +38,7 @@ func (r *AreaDao) EditArea(tx *gorm.DB, maps interface{}, data interface{}) erro
} }
// EditAreaById 修改地区-医生id // EditAreaById 修改地区-医生id
func (r *AreaDao) EditAreaById(tx *gorm.DB, areaId int64, data interface{}) error { func (r *AreaDao) EditAreaById(tx *gorm.DB, areaId int, data interface{}) error {
err := tx.Model(&model.Area{}).Where("area_id = ?", areaId).Updates(data).Error err := tx.Model(&model.Area{}).Where("area_id = ?", areaId).Updates(data).Error
if err != nil { if err != nil {
return err return err

View File

@ -49,6 +49,11 @@ type PutUserDoctor struct {
IdCardBack string `json:"id_card_back" form:"id_card_back" label:"身份证背面图片"` IdCardBack string `json:"id_card_back" form:"id_card_back" label:"身份证背面图片"`
SignImage string `json:"sign_image" form:"sign_image" label:"签名图片"` SignImage string `json:"sign_image" form:"sign_image" label:"签名图片"`
DoctorExpertise []string `json:"doctor_expertise" form:"doctor_expertise" label:"专长"` DoctorExpertise []string `json:"doctor_expertise" form:"doctor_expertise" label:"专长"`
BankId string `json:"bank_id" form:"bank_id" validate:"required_with_all=BankCardCode BankCardProvinceId BankCardCityId BankCardCountyId" label:"银行id"`
BankCardCode string `json:"bank_card_code" form:"bank_card_code" validate:"required_with_all=BankId BankCardProvinceId BankCardCityId BankCardCountyId" label:"银行卡号"`
BankCardProvinceId int `json:"bank_card_province_id" form:"bank_card_province_id" validate:"required_with_all=BankId BankCardCode BankCardCityId BankCardCountyId" label:"银行卡省份id"`
BankCardCityId int `json:"bank_card_city_id" form:"bank_card_city_id" validate:"required_with_all=BankId BankCardCode BankCardProvinceId BankCardCountyId" label:"银行卡城市id"`
BankCardCountyId int `json:"bank_card_county_id" form:"bank_card_county_id" validate:"required_with_all=BankId BankCardCode BankCardProvinceId BankCardCityId" label:"银行卡区县id"`
} }
// AddUserDoctor 新增医生 // AddUserDoctor 新增医生
@ -74,6 +79,11 @@ type AddUserDoctor struct {
SignImage string `json:"sign_image" form:"sign_image" label:"签名图片"` SignImage string `json:"sign_image" form:"sign_image" label:"签名图片"`
CardNum string `json:"card_num" form:"card_num" validate:"required" label:"证件号码"` CardNum string `json:"card_num" form:"card_num" validate:"required" label:"证件号码"`
DoctorExpertise []string `json:"doctor_expertise" form:"doctor_expertise" label:"专长"` DoctorExpertise []string `json:"doctor_expertise" form:"doctor_expertise" label:"专长"`
BankId string `json:"bank_id" form:"bank_id" validate:"required_with_all=BankCardCode BankCardProvinceId BankCardCityId BankCardCountyId" label:"银行id"`
BankCardCode string `json:"bank_card_code" form:"bank_card_code" validate:"required_with_all=BankId BankCardProvinceId BankCardCityId BankCardCountyId" label:"银行卡号"`
BankCardProvinceId int `json:"bank_card_province_id" form:"bank_card_province_id" validate:"required_with_all=BankId BankCardCode BankCardCityId BankCardCountyId" label:"银行卡省份id"`
BankCardCityId int `json:"bank_card_city_id" form:"bank_card_city_id" validate:"required_with_all=BankId BankCardCode BankCardProvinceId BankCardCountyId" label:"银行卡城市id"`
BankCardCountyId int `json:"bank_card_county_id" form:"bank_card_county_id" validate:"required_with_all=BankId BankCardCode BankCardProvinceId BankCardCityId" label:"银行卡区县id"`
} }
// GetUserDoctorPendingPage 身份审核-获取医生列表-分页 // GetUserDoctorPendingPage 身份审核-获取医生列表-分页

View File

@ -110,7 +110,7 @@ func (r *UserDoctorService) GetUserDoctor(doctorId int64) (getUserDoctorResponse
} }
// PutUserDoctor 修改医生 // PutUserDoctor 修改医生
func (r *UserDoctorService) PutUserDoctor(doctorId int64, putUserDoctorRequest requests.PutUserDoctor) (bool, error) { func (r *UserDoctorService) PutUserDoctor(doctorId int64, req requests.PutUserDoctor) (bool, error) {
// 获取医生数据 // 获取医生数据
userDoctorDao := dao.UserDoctorDao{} userDoctorDao := dao.UserDoctorDao{}
userDoctor, err := userDoctorDao.GetUserDoctorById(doctorId) userDoctor, err := userDoctorDao.GetUserDoctorById(doctorId)
@ -141,19 +141,19 @@ func (r *UserDoctorService) PutUserDoctor(doctorId int64, putUserDoctorRequest r
userData := make(map[string]interface{}) // 用户数据 userData := make(map[string]interface{}) // 用户数据
// 处理头像 // 处理头像
avatar := utils.RemoveOssDomain(putUserDoctorRequest.Avatar) avatar := utils.RemoveOssDomain(req.Avatar)
if userDoctor.Avatar != avatar { if userDoctor.Avatar != avatar {
userDoctorData["avatar"] = avatar userDoctorData["avatar"] = avatar
userData["avatar"] = avatar userData["avatar"] = avatar
} }
// 处理职称 // 处理职称
if userDoctor.DoctorTitle != putUserDoctorRequest.DoctorTitle { if userDoctor.DoctorTitle != req.DoctorTitle {
userDoctorData["doctor_title"] = putUserDoctorRequest.DoctorTitle userDoctorData["doctor_title"] = req.DoctorTitle
} }
// 处理科室 // 处理科室
departmentCustomId, err := strconv.ParseInt(putUserDoctorRequest.DepartmentCustomId, 10, 64) departmentCustomId, err := strconv.ParseInt(req.DepartmentCustomId, 10, 64)
if err != nil { if err != nil {
return false, errors.New("科室错误") return false, errors.New("科室错误")
} }
@ -161,7 +161,7 @@ func (r *UserDoctorService) PutUserDoctor(doctorId int64, putUserDoctorRequest r
if departmentCustomId == 0 && userDoctor.DepartmentCustomId != 0 { if departmentCustomId == 0 && userDoctor.DepartmentCustomId != 0 {
return false, errors.New("未选择新的科室") return false, errors.New("未选择新的科室")
} }
if userDoctor.DepartmentCustomId != departmentCustomId || userDoctor.DepartmentCustomName != putUserDoctorRequest.DepartmentCustomName { if userDoctor.DepartmentCustomId != departmentCustomId || userDoctor.DepartmentCustomName != req.DepartmentCustomName {
// 获取科室数据 // 获取科室数据
hospitalDepartmentCustomDao := dao.HospitalDepartmentCustom{} hospitalDepartmentCustomDao := dao.HospitalDepartmentCustom{}
hospitalDepartmentCustom, err := hospitalDepartmentCustomDao.GetHospitalDepartmentCustomById(departmentCustomId) hospitalDepartmentCustom, err := hospitalDepartmentCustomDao.GetHospitalDepartmentCustomById(departmentCustomId)
@ -169,11 +169,11 @@ func (r *UserDoctorService) PutUserDoctor(doctorId int64, putUserDoctorRequest r
return false, errors.New("科室错误") return false, errors.New("科室错误")
} }
userDoctorData["department_custom_id"] = putUserDoctorRequest.DepartmentCustomId userDoctorData["department_custom_id"] = req.DepartmentCustomId
userDoctorData["department_custom_name"] = hospitalDepartmentCustom.DepartmentCustomName userDoctorData["department_custom_name"] = hospitalDepartmentCustom.DepartmentCustomName
if putUserDoctorRequest.DepartmentCustomName != "" { if req.DepartmentCustomName != "" {
userDoctorData["department_custom_name"] = putUserDoctorRequest.DepartmentCustomName userDoctorData["department_custom_name"] = req.DepartmentCustomName
} }
} }
@ -199,12 +199,12 @@ func (r *UserDoctorService) PutUserDoctor(doctorId int64, putUserDoctorRequest r
} }
// 处理科室电话 // 处理科室电话
if userDoctor.DepartmentCustomMobile != putUserDoctorRequest.DepartmentCustomMobile { if userDoctor.DepartmentCustomMobile != req.DepartmentCustomMobile {
userDoctorData["department_custom_id"] = putUserDoctorRequest.DepartmentCustomMobile userDoctorData["department_custom_id"] = req.DepartmentCustomMobile
} }
// 处理医院 // 处理医院
hospitalId, err := strconv.ParseInt(putUserDoctorRequest.HospitalId, 10, 64) hospitalId, err := strconv.ParseInt(req.HospitalId, 10, 64)
if err != nil { if err != nil {
return false, errors.New("科室错误") return false, errors.New("科室错误")
} }
@ -216,39 +216,39 @@ func (r *UserDoctorService) PutUserDoctor(doctorId int64, putUserDoctorRequest r
if err != nil || hospital == nil { if err != nil || hospital == nil {
return false, errors.New("医院错误") return false, errors.New("医院错误")
} }
userDoctorData["department_custom_id"] = putUserDoctorRequest.HospitalId userDoctorData["department_custom_id"] = req.HospitalId
} }
// 处理深度合作医生 // 处理深度合作医生
if userDoctor.IsPlatformDeepCooperation != putUserDoctorRequest.IsPlatformDeepCooperation { if userDoctor.IsPlatformDeepCooperation != req.IsPlatformDeepCooperation {
userDoctorData["is_platform_deep_cooperation"] = putUserDoctorRequest.IsPlatformDeepCooperation userDoctorData["is_platform_deep_cooperation"] = req.IsPlatformDeepCooperation
} }
// 处理是否先思达合作医生 // 处理是否先思达合作医生
if userDoctor.IsSysDiagnoCooperation != putUserDoctorRequest.IsSysDiagnoCooperation { if userDoctor.IsSysDiagnoCooperation != req.IsSysDiagnoCooperation {
userDoctorData["is_sys_diagno_cooperation"] = putUserDoctorRequest.IsSysDiagnoCooperation userDoctorData["is_sys_diagno_cooperation"] = req.IsSysDiagnoCooperation
} }
// 是否推荐 // 是否推荐
if userDoctor.IsRecommend != putUserDoctorRequest.IsRecommend { if userDoctor.IsRecommend != req.IsRecommend {
userDoctorData["is_recommend"] = putUserDoctorRequest.IsRecommend userDoctorData["is_recommend"] = req.IsRecommend
} }
// 处理擅长 // 处理擅长
if userDoctor.BeGoodAt != putUserDoctorRequest.BeGoodAt { if userDoctor.BeGoodAt != req.BeGoodAt {
userDoctorData["be_good_at"] = putUserDoctorRequest.BeGoodAt userDoctorData["be_good_at"] = req.BeGoodAt
} }
// 医生简介 // 医生简介
if userDoctor.BriefIntroduction != putUserDoctorRequest.BriefIntroduction { if userDoctor.BriefIntroduction != req.BriefIntroduction {
userDoctorData["brief_introduction"] = putUserDoctorRequest.BriefIntroduction userDoctorData["brief_introduction"] = req.BriefIntroduction
} }
// 处理医师执业证 // 处理医师执业证
var licenseCert string var licenseCert string
if len(putUserDoctorRequest.LicenseCert) > 0 { if len(req.LicenseCert) > 0 {
result := make([]string, len(putUserDoctorRequest.LicenseCert)) result := make([]string, len(req.LicenseCert))
for i, url := range putUserDoctorRequest.LicenseCert { for i, url := range req.LicenseCert {
result[i] = strings.TrimPrefix(url, config.C.Oss.OssCustomDomainName) result[i] = strings.TrimPrefix(url, config.C.Oss.OssCustomDomainName)
} }
@ -265,9 +265,9 @@ func (r *UserDoctorService) PutUserDoctor(doctorId int64, putUserDoctorRequest r
// 处理医师资格证 // 处理医师资格证
var qualificationCert string var qualificationCert string
if len(putUserDoctorRequest.QualificationCert) > 0 { if len(req.QualificationCert) > 0 {
result := make([]string, len(putUserDoctorRequest.QualificationCert)) result := make([]string, len(req.QualificationCert))
for i, url := range putUserDoctorRequest.QualificationCert { for i, url := range req.QualificationCert {
result[i] = strings.TrimPrefix(url, config.C.Oss.OssCustomDomainName) result[i] = strings.TrimPrefix(url, config.C.Oss.OssCustomDomainName)
} }
@ -284,9 +284,9 @@ func (r *UserDoctorService) PutUserDoctor(doctorId int64, putUserDoctorRequest r
// 处理医师工作证 // 处理医师工作证
var workCert string var workCert string
if len(putUserDoctorRequest.WorkCert) > 0 { if len(req.WorkCert) > 0 {
result := make([]string, len(putUserDoctorRequest.WorkCert)) result := make([]string, len(req.WorkCert))
for i, url := range putUserDoctorRequest.WorkCert { for i, url := range req.WorkCert {
result[i] = strings.TrimPrefix(url, config.C.Oss.OssCustomDomainName) result[i] = strings.TrimPrefix(url, config.C.Oss.OssCustomDomainName)
} }
@ -302,12 +302,12 @@ func (r *UserDoctorService) PutUserDoctor(doctorId int64, putUserDoctorRequest r
} }
// 处理身份证正面图片 // 处理身份证正面图片
if userDoctorInfo.IdCardFront != "" && putUserDoctorRequest.IdCardFront == "" { if userDoctorInfo.IdCardFront != "" && req.IdCardFront == "" {
return false, errors.New("未上传新的身份证图片") return false, errors.New("未上传新的身份证图片")
} }
if putUserDoctorRequest.IdCardFront != "" { if req.IdCardFront != "" {
idCardFront := strings.Replace(putUserDoctorRequest.IdCardFront, "https://img.applets.igandanyiyuan.com", "", 1) idCardFront := strings.Replace(req.IdCardFront, "https://img.applets.igandanyiyuan.com", "", 1)
if idCardFront != userDoctorInfo.IdCardFront { if idCardFront != userDoctorInfo.IdCardFront {
if userDoctor.MultiPointStatus == 2 { if userDoctor.MultiPointStatus == 2 {
return false, errors.New("多点执业审核中,请操作后进行修改") return false, errors.New("多点执业审核中,请操作后进行修改")
@ -317,11 +317,11 @@ func (r *UserDoctorService) PutUserDoctor(doctorId int64, putUserDoctorRequest r
} }
// 身份证背面图片 // 身份证背面图片
if userDoctorInfo.IdCardBack != "" && putUserDoctorRequest.IdCardBack == "" { if userDoctorInfo.IdCardBack != "" && req.IdCardBack == "" {
return false, errors.New("未上传新的身份证图片") return false, errors.New("未上传新的身份证图片")
} }
if putUserDoctorRequest.IdCardBack != "" { if req.IdCardBack != "" {
idCardBack := strings.Replace(putUserDoctorRequest.IdCardBack, "https://img.applets.igandanyiyuan.com", "", 1) idCardBack := strings.Replace(req.IdCardBack, "https://img.applets.igandanyiyuan.com", "", 1)
if idCardBack != userDoctorInfo.IdCardBack { if idCardBack != userDoctorInfo.IdCardBack {
if userDoctor.MultiPointStatus == 2 { if userDoctor.MultiPointStatus == 2 {
return false, errors.New("多点执业审核中,请操作后进行修改") return false, errors.New("多点执业审核中,请操作后进行修改")
@ -332,11 +332,11 @@ func (r *UserDoctorService) PutUserDoctor(doctorId int64, putUserDoctorRequest r
} }
// 签名图片 // 签名图片
if userDoctorInfo.SignImage != "" && putUserDoctorRequest.SignImage == "" { if userDoctorInfo.SignImage != "" && req.SignImage == "" {
return false, errors.New("未上传新的签名图片") return false, errors.New("未上传新的签名图片")
} }
if putUserDoctorRequest.SignImage != "" { if req.SignImage != "" {
signImage := utils.RemoveOssDomain(putUserDoctorRequest.SignImage) signImage := utils.RemoveOssDomain(req.SignImage)
if signImage != userDoctorInfo.SignImage { if signImage != userDoctorInfo.SignImage {
if userDoctor.MultiPointStatus == 2 { if userDoctor.MultiPointStatus == 2 {
return false, errors.New("多点执业审核中,请操作后进行修改") return false, errors.New("多点执业审核中,请操作后进行修改")
@ -362,10 +362,10 @@ func (r *UserDoctorService) PutUserDoctor(doctorId int64, putUserDoctorRequest r
} }
// 处理专长 // 处理专长
if len(putUserDoctorRequest.DoctorExpertise) > 0 { if len(req.DoctorExpertise) > 0 {
// 检测专长是否存在 // 检测专长是否存在
diseaseClassExpertiseDao := dao.DiseaseClassExpertiseDao{} diseaseClassExpertiseDao := dao.DiseaseClassExpertiseDao{}
for _, v := range putUserDoctorRequest.DoctorExpertise { for _, v := range req.DoctorExpertise {
expertiseId, err := strconv.ParseInt(v, 10, 64) expertiseId, err := strconv.ParseInt(v, 10, 64)
if err != nil { if err != nil {
return false, errors.New("专长错误") return false, errors.New("专长错误")
@ -395,7 +395,7 @@ func (r *UserDoctorService) PutUserDoctor(doctorId int64, putUserDoctorRequest r
} }
} }
// 修改医生详情数据 // 处理医生详情数据
if userDoctorInfo == nil { if userDoctorInfo == nil {
// 新增医生详情表 // 新增医生详情表
if len(userDoctorInfoData) != 0 { if len(userDoctorInfoData) != 0 {
@ -425,7 +425,7 @@ func (r *UserDoctorService) PutUserDoctor(doctorId int64, putUserDoctorRequest r
} }
// 修改专长数据 // 修改专长数据
if len(putUserDoctorRequest.DoctorExpertise) > 0 { if len(req.DoctorExpertise) > 0 {
doctorExpertiseDao := dao.DoctorExpertiseDao{} doctorExpertiseDao := dao.DoctorExpertiseDao{}
// 删除原专长 // 删除原专长
@ -437,7 +437,7 @@ func (r *UserDoctorService) PutUserDoctor(doctorId int64, putUserDoctorRequest r
return false, errors.New("修改失败") return false, errors.New("修改失败")
} }
for _, v := range putUserDoctorRequest.DoctorExpertise { for _, v := range req.DoctorExpertise {
expertiseId, err := strconv.ParseInt(v, 10, 64) expertiseId, err := strconv.ParseInt(v, 10, 64)
if err != nil { if err != nil {
tx.Rollback() tx.Rollback()
@ -463,7 +463,7 @@ func (r *UserDoctorService) PutUserDoctor(doctorId int64, putUserDoctorRequest r
profileItem := []tencentIm.ProfileItem{ profileItem := []tencentIm.ProfileItem{
{ {
Tag: "Tag_Profile_IM_Image", Tag: "Tag_Profile_IM_Image",
Value: putUserDoctorRequest.Avatar, Value: req.Avatar,
}, },
} }
res, err := tencentIm.SetProfile(strconv.FormatInt(userDoctor.UserId, 10), profileItem) res, err := tencentIm.SetProfile(strconv.FormatInt(userDoctor.UserId, 10), profileItem)
@ -474,8 +474,8 @@ func (r *UserDoctorService) PutUserDoctor(doctorId int64, putUserDoctorRequest r
} }
// 处理签名图片-如果更改,查看是否已添加签章配置,会进行删除 // 处理签名图片-如果更改,查看是否已添加签章配置,会进行删除
if putUserDoctorRequest.SignImage != "" { if req.SignImage != "" {
signImage := utils.RemoveOssDomain(putUserDoctorRequest.SignImage) signImage := utils.RemoveOssDomain(req.SignImage)
if signImage != userDoctorInfo.SignImage { if signImage != userDoctorInfo.SignImage {
// 检测是否存在云证书 // 检测是否存在云证书
userCaCertDao := dao.UserCaCert{} userCaCertDao := dao.UserCaCert{}
@ -519,14 +519,14 @@ func (r *UserDoctorService) PutUserDoctor(doctorId int64, putUserDoctorRequest r
} }
// AddUserDoctor 新增医生 // AddUserDoctor 新增医生
func (r *UserDoctorService) AddUserDoctor(userId string, a requests.AddUserDoctor) (bool, error) { func (r *UserDoctorService) AddUserDoctor(userId string, req requests.AddUserDoctor) (bool, error) {
userDoctorDao := dao.UserDoctorDao{} userDoctorDao := dao.UserDoctorDao{}
userDao := dao.UserDao{} userDao := dao.UserDao{}
userDoctorInfoDao := dao.UserDoctorInfoDao{} userDoctorInfoDao := dao.UserDoctorInfoDao{}
// 检测手机号是否重复 // 检测手机号是否重复
maps := make(map[string]interface{}) maps := make(map[string]interface{})
maps["mobile"] = a.Mobile maps["mobile"] = req.Mobile
users, err := userDao.GetUserList(maps) users, err := userDao.GetUserList(maps)
if err != nil { if err != nil {
return false, errors.New("新增失败") return false, errors.New("新增失败")
@ -537,14 +537,14 @@ func (r *UserDoctorService) AddUserDoctor(userId string, a requests.AddUserDocto
} }
// 检测身份证号码 // 检测身份证号码
res, err := utils.CheckCardNum(a.CardNum) res, err := utils.CheckCardNum(req.CardNum)
if !res || err != nil { if !res || err != nil {
return false, errors.New("身份证号错误") return false, errors.New("身份证号错误")
} }
// 检测身份证号是否重复 // 检测身份证号是否重复
maps = make(map[string]interface{}) maps = make(map[string]interface{})
maps["card_num"] = a.CardNum maps["card_num"] = req.CardNum
userDoctorInfos, err := userDoctorInfoDao.GetUserDoctorInfoList(maps) userDoctorInfos, err := userDoctorInfoDao.GetUserDoctorInfoList(maps)
if err != nil { if err != nil {
return false, errors.New("新增失败") return false, errors.New("新增失败")
@ -555,25 +555,25 @@ func (r *UserDoctorService) AddUserDoctor(userId string, a requests.AddUserDocto
} }
// 处理年龄 // 处理年龄
age, err := utils.GetCardAge(a.CardNum) age, err := utils.GetCardAge(req.CardNum)
if err != nil { if err != nil {
return false, errors.New(err.Error()) return false, errors.New(err.Error())
} }
// 处理性别 // 处理性别
sex, err := utils.GetCardSex(a.CardNum) sex, err := utils.GetCardSex(req.CardNum)
if err != nil { if err != nil {
return false, errors.New(err.Error()) return false, errors.New(err.Error())
} }
// 身份证号码脱敏 // 身份证号码脱敏
cardNumMask := utils.GetMaskCardNum(a.CardNum) cardNumMask := utils.GetMaskCardNum(req.CardNum)
// 身份证名称脱敏 // 身份证名称脱敏
cardNameMask := utils.GetMaskCardName(a.CardName) cardNameMask := utils.GetMaskCardName(req.CardName)
// 检测科室 // 检测科室
departmentCustomId, err := strconv.ParseInt(a.DepartmentCustomId, 10, 64) departmentCustomId, err := strconv.ParseInt(req.DepartmentCustomId, 10, 64)
if err != nil { if err != nil {
return false, errors.New("科室错误") return false, errors.New("科室错误")
} }
@ -586,7 +586,7 @@ func (r *UserDoctorService) AddUserDoctor(userId string, a requests.AddUserDocto
} }
// 检测医院 // 检测医院
hospitalId, err := strconv.ParseInt(a.HospitalId, 10, 64) hospitalId, err := strconv.ParseInt(req.HospitalId, 10, 64)
if err != nil { if err != nil {
return false, errors.New("医院错误") return false, errors.New("医院错误")
} }
@ -599,13 +599,13 @@ func (r *UserDoctorService) AddUserDoctor(userId string, a requests.AddUserDocto
} }
// 处理头像 // 处理头像
avatar := utils.RemoveOssDomain(a.Avatar) avatar := utils.RemoveOssDomain(req.Avatar)
// 处理医师执业证 // 处理医师执业证
var licenseCert string var licenseCert string
if len(a.LicenseCert) > 0 { if len(req.LicenseCert) > 0 {
result := make([]string, len(a.LicenseCert)) result := make([]string, len(req.LicenseCert))
for i, url := range a.LicenseCert { for i, url := range req.LicenseCert {
result[i] = utils.RemoveOssDomain(url) result[i] = utils.RemoveOssDomain(url)
} }
@ -614,9 +614,9 @@ func (r *UserDoctorService) AddUserDoctor(userId string, a requests.AddUserDocto
// 处理医师资格证 // 处理医师资格证
var qualificationCert string var qualificationCert string
if len(a.QualificationCert) > 0 { if len(req.QualificationCert) > 0 {
result := make([]string, len(a.QualificationCert)) result := make([]string, len(req.QualificationCert))
for i, url := range a.QualificationCert { for i, url := range req.QualificationCert {
result[i] = utils.RemoveOssDomain(url) result[i] = utils.RemoveOssDomain(url)
} }
@ -625,9 +625,9 @@ func (r *UserDoctorService) AddUserDoctor(userId string, a requests.AddUserDocto
// 处理医师资格证 // 处理医师资格证
var workCert string var workCert string
if len(a.WorkCert) > 0 { if len(req.WorkCert) > 0 {
result := make([]string, len(a.WorkCert)) result := make([]string, len(req.WorkCert))
for i, url := range a.WorkCert { for i, url := range req.WorkCert {
result[i] = utils.RemoveOssDomain(url) result[i] = utils.RemoveOssDomain(url)
} }
@ -638,30 +638,30 @@ func (r *UserDoctorService) AddUserDoctor(userId string, a requests.AddUserDocto
var idCardFront string var idCardFront string
var idCardBack string var idCardBack string
if a.IdCardFront != "" { if req.IdCardFront != "" {
idCardFront = utils.RemoveOssDomain(a.IdCardFront) idCardFront = utils.RemoveOssDomain(req.IdCardFront)
} }
if a.IdCardBack != "" { if req.IdCardBack != "" {
idCardBack = utils.RemoveOssDomain(a.IdCardBack) idCardBack = utils.RemoveOssDomain(req.IdCardBack)
} }
// 处理签名图片 // 处理签名图片
var signImage string var signImage string
if a.SignImage != "" { if req.SignImage != "" {
signImage = utils.RemoveOssDomain(a.SignImage) signImage = utils.RemoveOssDomain(req.SignImage)
} }
// 多点执业状态 // 多点执业状态
var multiPointStatus int var multiPointStatus int
if a.IdCardFront != "" && a.IdCardBack != "" && a.SignImage != "" && departmentCustomId != 0 { if req.IdCardFront != "" && req.IdCardBack != "" && req.SignImage != "" && departmentCustomId != 0 {
multiPointStatus = 2 multiPointStatus = 2
} }
// 处理专长 // 处理专长
if len(a.DoctorExpertise) > 0 { if len(req.DoctorExpertise) > 0 {
// 检测专长是否存在 // 检测专长是否存在
diseaseClassExpertiseDao := dao.DiseaseClassExpertiseDao{} diseaseClassExpertiseDao := dao.DiseaseClassExpertiseDao{}
for _, v := range a.DoctorExpertise { for _, v := range req.DoctorExpertise {
expertiseId, err := strconv.ParseInt(v, 10, 64) expertiseId, err := strconv.ParseInt(v, 10, 64)
if err != nil { if err != nil {
return false, errors.New("专长错误") return false, errors.New("专长错误")
@ -675,6 +675,63 @@ func (r *UserDoctorService) AddUserDoctor(userId string, a requests.AddUserDocto
} }
// 处理银行卡省市区
areaDao := dao.AreaDao{}
var province string
if req.BankCardProvinceId != 0 {
area, err := areaDao.GetAreaById(req.BankCardProvinceId)
if err != nil || area == nil {
return false, errors.New("银行卡省份数据错误")
}
province = area.AreaName
}
var city string
if req.BankCardCityId != 0 {
area, err := areaDao.GetAreaById(req.BankCardCityId)
if err != nil || area == nil {
return false, errors.New("银行卡城市数据错误")
}
city = area.AreaName
}
var county string
if req.BankCardCountyId != 0 {
area, err := areaDao.GetAreaById(req.BankCardCountyId)
if err != nil || area == nil {
return false, errors.New("银行卡城市数据错误")
}
county = area.AreaName
}
// 处理银行卡数据
if req.BankId != "" {
bankId, err := strconv.ParseInt(req.BankId, 10, 64)
if err != nil {
return false, errors.New("银行错误")
}
basicBankDao := dao.BasicBankDao{}
basicBank, err := basicBankDao.GetBasicBankById(bankId)
if err != nil || basicBank == nil {
return false, errors.New("银行数据错误")
}
}
// 处理银行卡号掩码
var bankCardCodeMask string
if req.BankCardCode != "" {
if len(req.BankCardCode) < 8 {
return false, errors.New("银行卡号错误")
}
// 获取银行卡号的前4位和后4位
start := req.BankCardCode[:4]
end := req.BankCardCode[len(req.BankCardCode)-4:]
// 拼接前4位、中间的 * 字符串和后4位
bankCardCodeMask = start + "****" + end
}
// 开始事务 // 开始事务
tx := global.Db.Begin() tx := global.Db.Begin()
defer func() { defer func() {
@ -685,9 +742,9 @@ func (r *UserDoctorService) AddUserDoctor(userId string, a requests.AddUserDocto
// 新增用户表数据 // 新增用户表数据
user := &model.User{ user := &model.User{
UserName: a.CardName, UserName: req.CardName,
Mobile: a.Mobile, Mobile: req.Mobile,
WxMobile: a.Mobile, WxMobile: req.Mobile,
UserType: 2, UserType: 2,
UserStatus: 1, UserStatus: 1,
RegisterMethod: 2, RegisterMethod: 2,
@ -699,35 +756,34 @@ func (r *UserDoctorService) AddUserDoctor(userId string, a requests.AddUserDocto
user, err = userDao.AddUser(tx, user) user, err = userDao.AddUser(tx, user)
if err != nil || user == nil { if err != nil || user == nil {
tx.Rollback() tx.Rollback()
return false, err return false, errors.New(err.Error())
} }
// 新增医生表 // 新增医生表
userDoctor := &model.UserDoctor{ userDoctor := &model.UserDoctor{
UserId: user.UserId, UserId: user.UserId,
UserName: a.CardName, UserName: req.CardName,
Status: 1, Status: 1,
IdcardStatus: 1, // 身份证默认审核通过 IdcardStatus: 1, // 身份证默认审核通过
IdenAuthStatus: 2, IdenAuthStatus: 2,
MultiPointStatus: multiPointStatus, MultiPointStatus: multiPointStatus,
IsBindBank: 0, IsBindBank: 0,
IsRecommend: a.IsRecommend, IsRecommend: req.IsRecommend,
Avatar: avatar, Avatar: avatar,
DoctorTitle: a.DoctorTitle, DoctorTitle: req.DoctorTitle,
DepartmentCustomId: departmentCustomId, DepartmentCustomId: departmentCustomId,
DepartmentCustomName: a.DepartmentCustomName, DepartmentCustomName: req.DepartmentCustomName,
DepartmentCustomMobile: a.DepartmentCustomMobile, DepartmentCustomMobile: req.DepartmentCustomMobile,
HospitalID: hospitalId, HospitalID: hospitalId,
IsPlatformDeepCooperation: a.IsPlatformDeepCooperation, IsPlatformDeepCooperation: req.IsPlatformDeepCooperation,
IsSysDiagnoCooperation: a.IsSysDiagnoCooperation, IsSysDiagnoCooperation: req.IsSysDiagnoCooperation,
BeGoodAt: a.BeGoodAt, BeGoodAt: req.BeGoodAt,
BriefIntroduction: a.BriefIntroduction, BriefIntroduction: req.BriefIntroduction,
} }
userDoctor, err = userDoctorDao.AddUserDoctor(tx, userDoctor) userDoctor, err = userDoctorDao.AddUserDoctor(tx, userDoctor)
if err != nil || userDoctor == nil { if err != nil || userDoctor == nil {
tx.Rollback() tx.Rollback()
return false, err return false, errors.New(err.Error())
} }
// 新增医生详情表 // 新增医生详情表
@ -735,9 +791,9 @@ func (r *UserDoctorService) AddUserDoctor(userId string, a requests.AddUserDocto
UserId: user.UserId, UserId: user.UserId,
DoctorId: userDoctor.DoctorId, DoctorId: userDoctor.DoctorId,
CardType: 1, CardType: 1,
CardName: a.CardName, CardName: req.CardName,
CardNameMask: cardNameMask, CardNameMask: cardNameMask,
CardNum: a.CardNum, CardNum: req.CardNum,
CardNumMask: cardNumMask, CardNumMask: cardNumMask,
LicenseCert: licenseCert, LicenseCert: licenseCert,
QualificationCert: qualificationCert, QualificationCert: qualificationCert,
@ -746,18 +802,45 @@ func (r *UserDoctorService) AddUserDoctor(userId string, a requests.AddUserDocto
IdCardBack: idCardBack, IdCardBack: idCardBack,
SignImage: signImage, SignImage: signImage,
} }
userDoctorInfo, err = userDoctorInfoDao.AddUserDoctorInfo(tx, userDoctorInfo) userDoctorInfo, err = userDoctorInfoDao.AddUserDoctorInfo(tx, userDoctorInfo)
if err != nil || userDoctor == nil { if err != nil || userDoctor == nil {
tx.Rollback() tx.Rollback()
return false, err return false, errors.New(err.Error())
}
// 新增医生银行卡表
if req.BankCardProvinceId != 0 && req.BankCardCityId != 0 && req.BankCardCountyId != 0 && req.BankId != "" && req.BankCardCode != "" {
bankId, err := strconv.ParseInt(req.BankId, 10, 64)
if err != nil {
return false, errors.New("银行错误")
}
doctorBankCard := &model.DoctorBankCard{
DoctorId: userDoctor.DoctorId,
BankId: bankId,
BankCardCode: req.BankCardCode,
BankCardCodeMask: bankCardCodeMask,
ProvinceId: req.BankCardProvinceId,
Province: province,
CityId: req.BankCardCityId,
City: city,
CountyId: req.BankCardCountyId,
County: county,
}
doctorBankCardDao := dao.DoctorBankCardDao{}
doctorBankCard, err = doctorBankCardDao.AddDoctorBankCard(tx, doctorBankCard)
if err != nil || doctorBankCard == nil {
tx.Rollback()
return false, errors.New(err.Error())
}
} }
// 修改专长数据 // 修改专长数据
if len(a.DoctorExpertise) > 0 { if len(req.DoctorExpertise) > 0 {
doctorExpertiseDao := dao.DoctorExpertiseDao{} doctorExpertiseDao := dao.DoctorExpertiseDao{}
for _, v := range a.DoctorExpertise { for _, v := range req.DoctorExpertise {
expertiseId, err := strconv.ParseInt(v, 10, 64) expertiseId, err := strconv.ParseInt(v, 10, 64)
if err != nil { if err != nil {
tx.Rollback() tx.Rollback()
@ -779,7 +862,7 @@ func (r *UserDoctorService) AddUserDoctor(userId string, a requests.AddUserDocto
} }
// 创建im账户 // 创建im账户
res, err = tencentIm.CreateAccount(strconv.FormatInt(userDoctor.UserId, 10), a.CardName, a.Avatar) res, err = tencentIm.CreateAccount(strconv.FormatInt(userDoctor.UserId, 10), req.CardName, req.Avatar)
if err != nil || res != true { if err != nil || res != true {
tx.Rollback() tx.Rollback()
return false, errors.New(err.Error()) return false, errors.New(err.Error())

View File

@ -30,7 +30,7 @@ redis:
# [jwt] # [jwt]
jwt: jwt:
sign-key: 123456 # 私钥 sign-key: 123456 # 私钥
ttl : 48 # 过期时间 小时 ttl : 1 # 过期时间 小时
algo : HS256 # 加密方式 algo : HS256 # 加密方式
oss: oss:

2
extend/aliyun/dysms.go Normal file
View File

@ -0,0 +1,2 @@
// Package aliyun 短信
package aliyun

1
go.mod
View File

@ -19,6 +19,7 @@ require (
) )
require ( require (
github.com/alibabacloud-go/dysmsapi-20170525/v3 v3.0.6 // indirect
github.com/aliyun/aliyun-oss-go-sdk v2.2.7+incompatible // indirect github.com/aliyun/aliyun-oss-go-sdk v2.2.7+incompatible // indirect
github.com/bwmarrin/snowflake v0.3.0 // indirect github.com/bwmarrin/snowflake v0.3.0 // indirect
github.com/bytedance/sonic v1.9.1 // indirect github.com/bytedance/sonic v1.9.1 // indirect

42
go.sum
View File

@ -38,8 +38,26 @@ cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3f
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.4/go.mod h1:sCavSAvdzOjul4cEqeVtvlSaSScfNsTQ+46HwlTL1hc=
github.com/alibabacloud-go/darabonba-openapi/v2 v2.0.2/go.mod h1:5JHVmnHvGzR2wNdgaW1zDLQG8kOC4Uec8ubkMogW7OQ=
github.com/alibabacloud-go/debug v0.0.0-20190504072949-9472017b5c68/go.mod h1:6pb/Qy8c+lqua8cFpEy7g39NRRqOWc3rOwAy8m5Y2BY=
github.com/alibabacloud-go/dysmsapi-20170525/v3 v3.0.6 h1:UTl97mt2qfavxveqCkaVg4tKaZUPzA9RKbFIRaIdtdg=
github.com/alibabacloud-go/dysmsapi-20170525/v3 v3.0.6/go.mod h1:UWpcGrWwTbES9QW7OQ7xDffukMJ/l7lzioixIz8+lgY=
github.com/alibabacloud-go/endpoint-util v1.1.0/go.mod h1:O5FuCALmCKs2Ff7JFJMudHs0I5EBgecXXxZRyswlEjE=
github.com/alibabacloud-go/openapi-util v0.0.11/go.mod h1:sQuElr4ywwFRlCCberQwKRFhRzIyG4QTP/P4y1CJ6Ws=
github.com/alibabacloud-go/openapi-util v0.1.0/go.mod h1:sQuElr4ywwFRlCCberQwKRFhRzIyG4QTP/P4y1CJ6Ws=
github.com/alibabacloud-go/tea v1.1.0/go.mod h1:IkGyUSX4Ba1V+k4pCtJUc6jDpZLFph9QMy2VUPTwukg=
github.com/alibabacloud-go/tea v1.1.7/go.mod h1:/tmnEaQMyb4Ky1/5D+SE1BAsa5zj/KeGOFfwYm3N/p4=
github.com/alibabacloud-go/tea v1.1.8/go.mod h1:/tmnEaQMyb4Ky1/5D+SE1BAsa5zj/KeGOFfwYm3N/p4=
github.com/alibabacloud-go/tea v1.1.17/go.mod h1:nXxjm6CIFkBhwW4FQkNrolwbfon8Svy6cujmKFUq98A=
github.com/alibabacloud-go/tea v1.1.19/go.mod h1:nXxjm6CIFkBhwW4FQkNrolwbfon8Svy6cujmKFUq98A=
github.com/alibabacloud-go/tea-utils v1.3.1/go.mod h1:EI/o33aBfj3hETm4RLiAxF/ThQdSngxrpF8rKUDJjPE=
github.com/alibabacloud-go/tea-utils/v2 v2.0.0/go.mod h1:U5MTY10WwlquGPS34DOeomUGBB0gXbLueiq5Trwu0C4=
github.com/alibabacloud-go/tea-utils/v2 v2.0.3/go.mod h1:sj1PbjPodAVTqGTA3olprfeeqqmwD0A5OQz94o9EuXQ=
github.com/alibabacloud-go/tea-xml v1.1.2/go.mod h1:Rq08vgCcCAjHyRi/M7xlHKUykZCEtyBy9+DPF6GgEu8=
github.com/aliyun/aliyun-oss-go-sdk v2.2.7+incompatible h1:KpbJFXwhVeuxNtBJ74MCGbIoaBok2uZvkD7QXp2+Wis= github.com/aliyun/aliyun-oss-go-sdk v2.2.7+incompatible h1:KpbJFXwhVeuxNtBJ74MCGbIoaBok2uZvkD7QXp2+Wis=
github.com/aliyun/aliyun-oss-go-sdk v2.2.7+incompatible/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= github.com/aliyun/aliyun-oss-go-sdk v2.2.7+incompatible/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8=
github.com/aliyun/credentials-go v1.1.2/go.mod h1:ozcZaMR5kLM7pwtCMEpVmQ242suV6qTJya2bDq4X1Tw=
github.com/bwmarrin/snowflake v0.3.0 h1:xm67bEhkKh6ij1790JB83OujPR5CzNe8QuQqAgISZN0= github.com/bwmarrin/snowflake v0.3.0 h1:xm67bEhkKh6ij1790JB83OujPR5CzNe8QuQqAgISZN0=
github.com/bwmarrin/snowflake v0.3.0/go.mod h1:NdZxfVWX+oR6y2K0o6qAYv6gIOP9rjG0/E9WsDpxqwE= github.com/bwmarrin/snowflake v0.3.0/go.mod h1:NdZxfVWX+oR6y2K0o6qAYv6gIOP9rjG0/E9WsDpxqwE=
github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM= github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM=
@ -54,6 +72,7 @@ github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583j
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/clbanning/mxj/v2 v2.5.5/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
@ -177,6 +196,8 @@ github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
@ -187,10 +208,12 @@ github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk=
@ -212,10 +235,13 @@ github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RR
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/mojocn/base64Captcha v1.3.5 h1:Qeilr7Ta6eDtG4S+tQuZ5+hO+QHbiGAJdi4PfoagaA0= github.com/mojocn/base64Captcha v1.3.5 h1:Qeilr7Ta6eDtG4S+tQuZ5+hO+QHbiGAJdi4PfoagaA0=
github.com/mojocn/base64Captcha v1.3.5/go.mod h1:/tTTXn4WTpX9CfrmipqRytCpJ27Uw3G6I7NcP2WwcmY= github.com/mojocn/base64Captcha v1.3.5/go.mod h1:/tTTXn4WTpX9CfrmipqRytCpJ27Uw3G6I7NcP2WwcmY=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE= github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE=
@ -230,6 +256,9 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
github.com/sirupsen/logrus v1.9.2 h1:oxx1eChJGI6Uks2ZC4W1zpLlVgqB8ner4EuQwV4Ik1Y= github.com/sirupsen/logrus v1.9.2 h1:oxx1eChJGI6Uks2ZC4W1zpLlVgqB8ner4EuQwV4Ik1Y=
github.com/sirupsen/logrus v1.9.2/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/sirupsen/logrus v1.9.2/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
github.com/smartystreets/assertions v1.1.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo=
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM=
github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ=
github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA=
@ -241,6 +270,7 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An
github.com/spf13/viper v1.16.0 h1:rGGH0XDZhdUOryiDWjmIvUSWpbNqisK8Wk0Vyefw8hc= github.com/spf13/viper v1.16.0 h1:rGGH0XDZhdUOryiDWjmIvUSWpbNqisK8Wk0Vyefw8hc=
github.com/spf13/viper v1.16.0/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg= github.com/spf13/viper v1.16.0/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
@ -258,12 +288,14 @@ github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8
github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0=
github.com/tencentcloud/tencentcloud-sdk-go v3.0.233+incompatible h1:q+D/Y9jla3afgsIihtyhwyl0c2W+eRWNM9ohVwPiiPw= github.com/tencentcloud/tencentcloud-sdk-go v3.0.233+incompatible h1:q+D/Y9jla3afgsIihtyhwyl0c2W+eRWNM9ohVwPiiPw=
github.com/tencentcloud/tencentcloud-sdk-go v3.0.233+incompatible/go.mod h1:0PfYow01SHPMhKY31xa+EFz2RStxIqj6JFAJS+IkCi4= github.com/tencentcloud/tencentcloud-sdk-go v3.0.233+incompatible/go.mod h1:0PfYow01SHPMhKY31xa+EFz2RStxIqj6JFAJS+IkCi4=
github.com/tjfoc/gmsm v1.3.2/go.mod h1:HaUcFuY0auTiaHB9MHFGCPx5IaLhTUd2atbCFBQXn9w=
github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU=
github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.30/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
@ -280,6 +312,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191219195013-becbf705a915/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
@ -358,6 +392,7 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M=
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
@ -402,6 +437,7 @@ golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200509044756-6aff5f38e54f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@ -450,6 +486,7 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
@ -478,6 +515,7 @@ golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjs
golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200509030707-2212a7e161a5/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
@ -591,11 +629,15 @@ google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/ini.v1 v1.56.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=

View File

@ -3,6 +3,7 @@ package utils
import ( import (
"errors" "errors"
"fmt"
"regexp" "regexp"
"strconv" "strconv"
"strings" "strings"
@ -37,8 +38,10 @@ func GetCardAge(cardNum string) (int, error) {
// CheckCardNum 检测身份证号 // CheckCardNum 检测身份证号
func CheckCardNum(cardNum string) (bool, error) { 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]$` 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) match, err := regexp.MatchString(regex, cardNum)
fmt.Println(match)
if !match || err != nil { if !match || err != nil {
return false, errors.New("身份证号错误") return false, errors.New("身份证号错误")
} }