From e9e03b22ea38e582e164efe0b56560560fb6bcab Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Thu, 20 Jul 2023 09:28:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E9=93=B6=E8=A1=8C=E5=8D=A1?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/controller/userDoctor.go | 30 +++- api/dao/area.go | 4 +- api/requests/userDoctor.go | 10 ++ api/service/userDoctor.go | 283 ++++++++++++++++++++++------------- config.yaml | 2 +- extend/aliyun/dysms.go | 2 + go.mod | 1 + go.sum | 42 ++++++ utils/idCard.go | 3 + 9 files changed, 268 insertions(+), 109 deletions(-) create mode 100644 extend/aliyun/dysms.go diff --git a/api/controller/userDoctor.go b/api/controller/userDoctor.go index f6301b8..75bd618 100644 --- a/api/controller/userDoctor.go +++ b/api/controller/userDoctor.go @@ -84,17 +84,26 @@ func (r *UserDoctor) GetUserDoctor(c *gin.Context) { // PutUserDoctor 修改医生 func (r *UserDoctor) PutUserDoctor(c *gin.Context) { 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) return } // 参数验证 - if err := global.Validate.Struct(userDoctorRequest.PutUserDoctor); err != nil { + if err := global.Validate.Struct(req); err != nil { responses.FailWithMessage(utils.Translate(err), c) 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") if id == "" { responses.FailWithMessage("缺少参数", c) @@ -110,7 +119,7 @@ func (r *UserDoctor) PutUserDoctor(c *gin.Context) { // 业务处理 userDoctorService := service.UserDoctorService{} - _, err = userDoctorService.PutUserDoctor(doctorId, userDoctorRequest.PutUserDoctor) + _, err = userDoctorService.PutUserDoctor(doctorId, req) if err != nil { responses.FailWithMessage(err.Error(), c) return @@ -122,17 +131,26 @@ func (r *UserDoctor) PutUserDoctor(c *gin.Context) { // AddUserDoctor 新增医生 func (r *UserDoctor) AddUserDoctor(c *gin.Context) { 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) return } // 参数验证 - if err := global.Validate.Struct(userDoctorRequest.AddUserDoctor); err != nil { + if err := global.Validate.Struct(req); err != nil { responses.FailWithMessage(utils.Translate(err), c) 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 userId := c.GetInt64("UserId") if userId == 0 { @@ -144,7 +162,7 @@ func (r *UserDoctor) AddUserDoctor(c *gin.Context) { // 业务处理 userDoctorService := service.UserDoctorService{} - _, err := userDoctorService.AddUserDoctor(userIdStr, userDoctorRequest.AddUserDoctor) + _, err := userDoctorService.AddUserDoctor(userIdStr, req) if err != nil { responses.FailWithMessage(err.Error(), c) return diff --git a/api/dao/area.go b/api/dao/area.go index 9530cb9..6565ff9 100644 --- a/api/dao/area.go +++ b/api/dao/area.go @@ -11,7 +11,7 @@ type AreaDao struct { } // 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 if err != nil { return nil, err @@ -38,7 +38,7 @@ func (r *AreaDao) EditArea(tx *gorm.DB, maps interface{}, data interface{}) erro } // 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 if err != nil { return err diff --git a/api/requests/userDoctor.go b/api/requests/userDoctor.go index 9d0dd9a..eefa83e 100644 --- a/api/requests/userDoctor.go +++ b/api/requests/userDoctor.go @@ -49,6 +49,11 @@ type PutUserDoctor struct { IdCardBack string `json:"id_card_back" form:"id_card_back" label:"身份证背面图片"` SignImage string `json:"sign_image" form:"sign_image" 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 新增医生 @@ -74,6 +79,11 @@ type AddUserDoctor struct { SignImage string `json:"sign_image" form:"sign_image" label:"签名图片"` CardNum string `json:"card_num" form:"card_num" validate:"required" 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 身份审核-获取医生列表-分页 diff --git a/api/service/userDoctor.go b/api/service/userDoctor.go index f55e629..c6c6e19 100644 --- a/api/service/userDoctor.go +++ b/api/service/userDoctor.go @@ -110,7 +110,7 @@ func (r *UserDoctorService) GetUserDoctor(doctorId int64) (getUserDoctorResponse } // 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{} userDoctor, err := userDoctorDao.GetUserDoctorById(doctorId) @@ -141,19 +141,19 @@ func (r *UserDoctorService) PutUserDoctor(doctorId int64, putUserDoctorRequest r userData := make(map[string]interface{}) // 用户数据 // 处理头像 - avatar := utils.RemoveOssDomain(putUserDoctorRequest.Avatar) + avatar := utils.RemoveOssDomain(req.Avatar) if userDoctor.Avatar != avatar { userDoctorData["avatar"] = avatar userData["avatar"] = avatar } // 处理职称 - if userDoctor.DoctorTitle != putUserDoctorRequest.DoctorTitle { - userDoctorData["doctor_title"] = putUserDoctorRequest.DoctorTitle + if userDoctor.DoctorTitle != req.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 { return false, errors.New("科室错误") } @@ -161,7 +161,7 @@ func (r *UserDoctorService) PutUserDoctor(doctorId int64, putUserDoctorRequest r if departmentCustomId == 0 && userDoctor.DepartmentCustomId != 0 { return false, errors.New("未选择新的科室") } - if userDoctor.DepartmentCustomId != departmentCustomId || userDoctor.DepartmentCustomName != putUserDoctorRequest.DepartmentCustomName { + if userDoctor.DepartmentCustomId != departmentCustomId || userDoctor.DepartmentCustomName != req.DepartmentCustomName { // 获取科室数据 hospitalDepartmentCustomDao := dao.HospitalDepartmentCustom{} hospitalDepartmentCustom, err := hospitalDepartmentCustomDao.GetHospitalDepartmentCustomById(departmentCustomId) @@ -169,11 +169,11 @@ func (r *UserDoctorService) PutUserDoctor(doctorId int64, putUserDoctorRequest r return false, errors.New("科室错误") } - userDoctorData["department_custom_id"] = putUserDoctorRequest.DepartmentCustomId + userDoctorData["department_custom_id"] = req.DepartmentCustomId userDoctorData["department_custom_name"] = hospitalDepartmentCustom.DepartmentCustomName - if putUserDoctorRequest.DepartmentCustomName != "" { - userDoctorData["department_custom_name"] = putUserDoctorRequest.DepartmentCustomName + if req.DepartmentCustomName != "" { + userDoctorData["department_custom_name"] = req.DepartmentCustomName } } @@ -199,12 +199,12 @@ func (r *UserDoctorService) PutUserDoctor(doctorId int64, putUserDoctorRequest r } // 处理科室电话 - if userDoctor.DepartmentCustomMobile != putUserDoctorRequest.DepartmentCustomMobile { - userDoctorData["department_custom_id"] = putUserDoctorRequest.DepartmentCustomMobile + if userDoctor.DepartmentCustomMobile != req.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 { return false, errors.New("科室错误") } @@ -216,39 +216,39 @@ func (r *UserDoctorService) PutUserDoctor(doctorId int64, putUserDoctorRequest r if err != nil || hospital == nil { return false, errors.New("医院错误") } - userDoctorData["department_custom_id"] = putUserDoctorRequest.HospitalId + userDoctorData["department_custom_id"] = req.HospitalId } // 处理深度合作医生 - if userDoctor.IsPlatformDeepCooperation != putUserDoctorRequest.IsPlatformDeepCooperation { - userDoctorData["is_platform_deep_cooperation"] = putUserDoctorRequest.IsPlatformDeepCooperation + if userDoctor.IsPlatformDeepCooperation != req.IsPlatformDeepCooperation { + userDoctorData["is_platform_deep_cooperation"] = req.IsPlatformDeepCooperation } // 处理是否先思达合作医生 - if userDoctor.IsSysDiagnoCooperation != putUserDoctorRequest.IsSysDiagnoCooperation { - userDoctorData["is_sys_diagno_cooperation"] = putUserDoctorRequest.IsSysDiagnoCooperation + if userDoctor.IsSysDiagnoCooperation != req.IsSysDiagnoCooperation { + userDoctorData["is_sys_diagno_cooperation"] = req.IsSysDiagnoCooperation } // 是否推荐 - if userDoctor.IsRecommend != putUserDoctorRequest.IsRecommend { - userDoctorData["is_recommend"] = putUserDoctorRequest.IsRecommend + if userDoctor.IsRecommend != req.IsRecommend { + userDoctorData["is_recommend"] = req.IsRecommend } // 处理擅长 - if userDoctor.BeGoodAt != putUserDoctorRequest.BeGoodAt { - userDoctorData["be_good_at"] = putUserDoctorRequest.BeGoodAt + if userDoctor.BeGoodAt != req.BeGoodAt { + userDoctorData["be_good_at"] = req.BeGoodAt } // 医生简介 - if userDoctor.BriefIntroduction != putUserDoctorRequest.BriefIntroduction { - userDoctorData["brief_introduction"] = putUserDoctorRequest.BriefIntroduction + if userDoctor.BriefIntroduction != req.BriefIntroduction { + userDoctorData["brief_introduction"] = req.BriefIntroduction } // 处理医师执业证 var licenseCert string - if len(putUserDoctorRequest.LicenseCert) > 0 { - result := make([]string, len(putUserDoctorRequest.LicenseCert)) - for i, url := range putUserDoctorRequest.LicenseCert { + if len(req.LicenseCert) > 0 { + result := make([]string, len(req.LicenseCert)) + for i, url := range req.LicenseCert { result[i] = strings.TrimPrefix(url, config.C.Oss.OssCustomDomainName) } @@ -265,9 +265,9 @@ func (r *UserDoctorService) PutUserDoctor(doctorId int64, putUserDoctorRequest r // 处理医师资格证 var qualificationCert string - if len(putUserDoctorRequest.QualificationCert) > 0 { - result := make([]string, len(putUserDoctorRequest.QualificationCert)) - for i, url := range putUserDoctorRequest.QualificationCert { + if len(req.QualificationCert) > 0 { + result := make([]string, len(req.QualificationCert)) + for i, url := range req.QualificationCert { result[i] = strings.TrimPrefix(url, config.C.Oss.OssCustomDomainName) } @@ -284,9 +284,9 @@ func (r *UserDoctorService) PutUserDoctor(doctorId int64, putUserDoctorRequest r // 处理医师工作证 var workCert string - if len(putUserDoctorRequest.WorkCert) > 0 { - result := make([]string, len(putUserDoctorRequest.WorkCert)) - for i, url := range putUserDoctorRequest.WorkCert { + if len(req.WorkCert) > 0 { + result := make([]string, len(req.WorkCert)) + for i, url := range req.WorkCert { 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("未上传新的身份证图片") } - if putUserDoctorRequest.IdCardFront != "" { - idCardFront := strings.Replace(putUserDoctorRequest.IdCardFront, "https://img.applets.igandanyiyuan.com", "", 1) + if req.IdCardFront != "" { + idCardFront := strings.Replace(req.IdCardFront, "https://img.applets.igandanyiyuan.com", "", 1) if idCardFront != userDoctorInfo.IdCardFront { if userDoctor.MultiPointStatus == 2 { 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("未上传新的身份证图片") } - if putUserDoctorRequest.IdCardBack != "" { - idCardBack := strings.Replace(putUserDoctorRequest.IdCardBack, "https://img.applets.igandanyiyuan.com", "", 1) + if req.IdCardBack != "" { + idCardBack := strings.Replace(req.IdCardBack, "https://img.applets.igandanyiyuan.com", "", 1) if idCardBack != userDoctorInfo.IdCardBack { if userDoctor.MultiPointStatus == 2 { 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("未上传新的签名图片") } - if putUserDoctorRequest.SignImage != "" { - signImage := utils.RemoveOssDomain(putUserDoctorRequest.SignImage) + if req.SignImage != "" { + signImage := utils.RemoveOssDomain(req.SignImage) if signImage != userDoctorInfo.SignImage { if userDoctor.MultiPointStatus == 2 { 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{} - for _, v := range putUserDoctorRequest.DoctorExpertise { + for _, v := range req.DoctorExpertise { expertiseId, err := strconv.ParseInt(v, 10, 64) if err != nil { return false, errors.New("专长错误") @@ -395,7 +395,7 @@ func (r *UserDoctorService) PutUserDoctor(doctorId int64, putUserDoctorRequest r } } - // 修改医生详情数据 + // 处理医生详情数据 if userDoctorInfo == nil { // 新增医生详情表 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{} // 删除原专长 @@ -437,7 +437,7 @@ func (r *UserDoctorService) PutUserDoctor(doctorId int64, putUserDoctorRequest r return false, errors.New("修改失败") } - for _, v := range putUserDoctorRequest.DoctorExpertise { + for _, v := range req.DoctorExpertise { expertiseId, err := strconv.ParseInt(v, 10, 64) if err != nil { tx.Rollback() @@ -463,7 +463,7 @@ func (r *UserDoctorService) PutUserDoctor(doctorId int64, putUserDoctorRequest r profileItem := []tencentIm.ProfileItem{ { Tag: "Tag_Profile_IM_Image", - Value: putUserDoctorRequest.Avatar, + Value: req.Avatar, }, } 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 != "" { - signImage := utils.RemoveOssDomain(putUserDoctorRequest.SignImage) + if req.SignImage != "" { + signImage := utils.RemoveOssDomain(req.SignImage) if signImage != userDoctorInfo.SignImage { // 检测是否存在云证书 userCaCertDao := dao.UserCaCert{} @@ -519,14 +519,14 @@ func (r *UserDoctorService) PutUserDoctor(doctorId int64, putUserDoctorRequest r } // 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{} userDao := dao.UserDao{} userDoctorInfoDao := dao.UserDoctorInfoDao{} // 检测手机号是否重复 maps := make(map[string]interface{}) - maps["mobile"] = a.Mobile + maps["mobile"] = req.Mobile users, err := userDao.GetUserList(maps) if err != nil { 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 { return false, errors.New("身份证号错误") } // 检测身份证号是否重复 maps = make(map[string]interface{}) - maps["card_num"] = a.CardNum + maps["card_num"] = req.CardNum userDoctorInfos, err := userDoctorInfoDao.GetUserDoctorInfoList(maps) if err != nil { 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 { return false, errors.New(err.Error()) } // 处理性别 - sex, err := utils.GetCardSex(a.CardNum) + sex, err := utils.GetCardSex(req.CardNum) if err != nil { 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 { 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 { 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 - if len(a.LicenseCert) > 0 { - result := make([]string, len(a.LicenseCert)) - for i, url := range a.LicenseCert { + if len(req.LicenseCert) > 0 { + result := make([]string, len(req.LicenseCert)) + for i, url := range req.LicenseCert { result[i] = utils.RemoveOssDomain(url) } @@ -614,9 +614,9 @@ func (r *UserDoctorService) AddUserDoctor(userId string, a requests.AddUserDocto // 处理医师资格证 var qualificationCert string - if len(a.QualificationCert) > 0 { - result := make([]string, len(a.QualificationCert)) - for i, url := range a.QualificationCert { + if len(req.QualificationCert) > 0 { + result := make([]string, len(req.QualificationCert)) + for i, url := range req.QualificationCert { result[i] = utils.RemoveOssDomain(url) } @@ -625,9 +625,9 @@ func (r *UserDoctorService) AddUserDoctor(userId string, a requests.AddUserDocto // 处理医师资格证 var workCert string - if len(a.WorkCert) > 0 { - result := make([]string, len(a.WorkCert)) - for i, url := range a.WorkCert { + if len(req.WorkCert) > 0 { + result := make([]string, len(req.WorkCert)) + for i, url := range req.WorkCert { result[i] = utils.RemoveOssDomain(url) } @@ -638,30 +638,30 @@ func (r *UserDoctorService) AddUserDoctor(userId string, a requests.AddUserDocto var idCardFront string var idCardBack string - if a.IdCardFront != "" { - idCardFront = utils.RemoveOssDomain(a.IdCardFront) + if req.IdCardFront != "" { + idCardFront = utils.RemoveOssDomain(req.IdCardFront) } - if a.IdCardBack != "" { - idCardBack = utils.RemoveOssDomain(a.IdCardBack) + if req.IdCardBack != "" { + idCardBack = utils.RemoveOssDomain(req.IdCardBack) } // 处理签名图片 var signImage string - if a.SignImage != "" { - signImage = utils.RemoveOssDomain(a.SignImage) + if req.SignImage != "" { + signImage = utils.RemoveOssDomain(req.SignImage) } // 多点执业状态 var multiPointStatus int - if a.IdCardFront != "" && a.IdCardBack != "" && a.SignImage != "" && departmentCustomId != 0 { + if req.IdCardFront != "" && req.IdCardBack != "" && req.SignImage != "" && departmentCustomId != 0 { multiPointStatus = 2 } // 处理专长 - if len(a.DoctorExpertise) > 0 { + if len(req.DoctorExpertise) > 0 { // 检测专长是否存在 diseaseClassExpertiseDao := dao.DiseaseClassExpertiseDao{} - for _, v := range a.DoctorExpertise { + for _, v := range req.DoctorExpertise { expertiseId, err := strconv.ParseInt(v, 10, 64) if err != nil { 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() defer func() { @@ -685,9 +742,9 @@ func (r *UserDoctorService) AddUserDoctor(userId string, a requests.AddUserDocto // 新增用户表数据 user := &model.User{ - UserName: a.CardName, - Mobile: a.Mobile, - WxMobile: a.Mobile, + UserName: req.CardName, + Mobile: req.Mobile, + WxMobile: req.Mobile, UserType: 2, UserStatus: 1, RegisterMethod: 2, @@ -699,35 +756,34 @@ func (r *UserDoctorService) AddUserDoctor(userId string, a requests.AddUserDocto user, err = userDao.AddUser(tx, user) if err != nil || user == nil { tx.Rollback() - return false, err + return false, errors.New(err.Error()) } // 新增医生表 userDoctor := &model.UserDoctor{ UserId: user.UserId, - UserName: a.CardName, + UserName: req.CardName, Status: 1, IdcardStatus: 1, // 身份证默认审核通过 IdenAuthStatus: 2, MultiPointStatus: multiPointStatus, IsBindBank: 0, - IsRecommend: a.IsRecommend, + IsRecommend: req.IsRecommend, Avatar: avatar, - DoctorTitle: a.DoctorTitle, + DoctorTitle: req.DoctorTitle, DepartmentCustomId: departmentCustomId, - DepartmentCustomName: a.DepartmentCustomName, - DepartmentCustomMobile: a.DepartmentCustomMobile, + DepartmentCustomName: req.DepartmentCustomName, + DepartmentCustomMobile: req.DepartmentCustomMobile, HospitalID: hospitalId, - IsPlatformDeepCooperation: a.IsPlatformDeepCooperation, - IsSysDiagnoCooperation: a.IsSysDiagnoCooperation, - BeGoodAt: a.BeGoodAt, - BriefIntroduction: a.BriefIntroduction, + IsPlatformDeepCooperation: req.IsPlatformDeepCooperation, + IsSysDiagnoCooperation: req.IsSysDiagnoCooperation, + BeGoodAt: req.BeGoodAt, + BriefIntroduction: req.BriefIntroduction, } - userDoctor, err = userDoctorDao.AddUserDoctor(tx, userDoctor) if err != nil || userDoctor == nil { 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, DoctorId: userDoctor.DoctorId, CardType: 1, - CardName: a.CardName, + CardName: req.CardName, CardNameMask: cardNameMask, - CardNum: a.CardNum, + CardNum: req.CardNum, CardNumMask: cardNumMask, LicenseCert: licenseCert, QualificationCert: qualificationCert, @@ -746,18 +802,45 @@ func (r *UserDoctorService) AddUserDoctor(userId string, a requests.AddUserDocto IdCardBack: idCardBack, SignImage: signImage, } - userDoctorInfo, err = userDoctorInfoDao.AddUserDoctorInfo(tx, userDoctorInfo) if err != nil || userDoctor == nil { 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{} - for _, v := range a.DoctorExpertise { + for _, v := range req.DoctorExpertise { expertiseId, err := strconv.ParseInt(v, 10, 64) if err != nil { tx.Rollback() @@ -779,7 +862,7 @@ func (r *UserDoctorService) AddUserDoctor(userId string, a requests.AddUserDocto } // 创建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 { tx.Rollback() return false, errors.New(err.Error()) diff --git a/config.yaml b/config.yaml index 7c6b3aa..f3e1b32 100644 --- a/config.yaml +++ b/config.yaml @@ -30,7 +30,7 @@ redis: # [jwt] jwt: sign-key: 123456 # 私钥 - ttl : 48 # 过期时间 小时 + ttl : 1 # 过期时间 小时 algo : HS256 # 加密方式 oss: diff --git a/extend/aliyun/dysms.go b/extend/aliyun/dysms.go new file mode 100644 index 0000000..42321ed --- /dev/null +++ b/extend/aliyun/dysms.go @@ -0,0 +1,2 @@ +// Package aliyun 短信 +package aliyun diff --git a/go.mod b/go.mod index 6f4fc31..80cd2be 100644 --- a/go.mod +++ b/go.mod @@ -19,6 +19,7 @@ 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/bwmarrin/snowflake v0.3.0 // indirect github.com/bytedance/sonic v1.9.1 // indirect diff --git a/go.sum b/go.sum index 4955b4a..847da22 100644 --- a/go.sum +++ b/go.sum @@ -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= 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/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/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/go.mod h1:NdZxfVWX+oR6y2K0o6qAYv6gIOP9rjG0/E9WsDpxqwE= 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/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/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/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= @@ -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.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/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.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= 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/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= 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/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.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/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= 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-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= 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/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/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/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= 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/sirupsen/logrus v1.9.2 h1:oxx1eChJGI6Uks2ZC4W1zpLlVgqB8ner4EuQwV4Ik1Y= 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/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= 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/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg= 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.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= 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/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/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/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/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= 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.30/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.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-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-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-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= 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-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.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/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= 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-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-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-20200515095857-1151b9dac4a9/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-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-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-20190506145303-2d16b83fe98c/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-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-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-20200515010526-7d3b6ebf133d/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 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-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/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/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= 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.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 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.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/utils/idCard.go b/utils/idCard.go index 5c4ad74..72cdafd 100644 --- a/utils/idCard.go +++ b/utils/idCard.go @@ -3,6 +3,7 @@ package utils import ( "errors" + "fmt" "regexp" "strconv" "strings" @@ -37,8 +38,10 @@ func GetCardAge(cardNum string) (int, error) { // 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("身份证号错误") }