package service import ( "errors" "hospital-admin-api/api/dao" "hospital-admin-api/api/requests" "hospital-admin-api/config" "hospital-admin-api/global" "strconv" "strings" ) type UserDoctorService struct { } // PutPostUserDoctor 修改医生 func (r *UserDoctorService) PutPostUserDoctor(doctorId int64, userDoctorRequest requests.PutPostUserDoctor) (bool, error) { // 获取医生数据 userDoctorDao := dao.UserDoctorDao{} userDoctor, err := userDoctorDao.GetUserDoctorById(doctorId) if err != nil || userDoctor == nil { return false, errors.New("医生数据错误") } // 获取医生详情数据 userDoctorInfoDao := dao.UserDoctorInfoDao{} userDoctorInfo, err := userDoctorInfoDao.GetUserDoctorInfoByDoctorId(doctorId) if err != nil { return false, errors.New("医生详情数据错误") } // 医生数据 var userDoctorData map[string]interface{} // 医生详情数据 var userDoctorInfoData map[string]interface{} // 处理头像 userDoctorRequest.Avatar = strings.Replace(userDoctorRequest.Avatar, config.C.Oss.OssCustomDomainName, "", 1) if userDoctor.Avatar != userDoctorRequest.Avatar { userDoctorData["avatar"] = userDoctorRequest.Avatar userDoctorInfoData["avatar"] = userDoctorRequest.Avatar } // 处理职称 if userDoctor.DoctorTitle != userDoctorRequest.DoctorTitle { userDoctorData["doctor_title"] = userDoctorRequest.DoctorTitle } // 处理科室 departmentCustomId, err := strconv.ParseInt(userDoctorRequest.DepartmentCustomId, 10, 64) if err != nil { return false, errors.New("科室错误") } if userDoctor.DepartmentCustomId != departmentCustomId || userDoctor.DepartmentCustomName != userDoctorRequest.DepartmentCustomName { // 获取科室数据 hospitalDepartmentCustomDao := dao.HospitalDepartmentCustom{} hospitalDepartmentCustom, err := hospitalDepartmentCustomDao.GetHospitalDepartmentCustomById(departmentCustomId) if err != nil || hospitalDepartmentCustom == nil { return false, errors.New("科室错误") } userDoctorData["department_custom_id"] = userDoctorRequest.DepartmentCustomId userDoctorData["department_custom_name"] = hospitalDepartmentCustom.DepartmentCustomName if userDoctorRequest.DepartmentCustomName != "" { userDoctorData["department_custom_name"] = userDoctorRequest.DepartmentCustomName } } // 处理科室电话 if userDoctor.DepartmentCustomMobile != userDoctorRequest.DepartmentCustomMobile { userDoctorData["department_custom_id"] = userDoctorRequest.DepartmentCustomMobile } // 处理医院 hospitalId, err := strconv.ParseInt(userDoctorRequest.HospitalId, 10, 64) if err != nil { return false, errors.New("科室错误") } if userDoctor.HospitalID != hospitalId { // 获取医院数据 hospitalDao := dao.Hospital{} hospital, err := hospitalDao.GetHospitalById(hospitalId) if err != nil || hospital == nil { return false, errors.New("医院错误") } userDoctorData["department_custom_id"] = userDoctorRequest.HospitalId } // 处理擅长 if userDoctor.BeGoodAt != userDoctorRequest.BeGoodAt { userDoctorData["be_good_at"] = userDoctorRequest.BeGoodAt } // 医生简介 if userDoctor.BriefIntroduction != userDoctorRequest.BriefIntroduction { userDoctorData["brief_introduction"] = userDoctorRequest.BriefIntroduction } // 处理医师执业证 var licenseCert string if len(userDoctorRequest.LicenseCert) > 0 { result := make([]string, len(userDoctorRequest.LicenseCert)) for i, url := range userDoctorRequest.LicenseCert { result[i] = strings.TrimPrefix(url, config.C.Oss.OssCustomDomainName) } licenseCert = strings.Join(result, ",") } if userDoctorInfo != nil { if userDoctorInfo.LicenseCert != licenseCert { userDoctorInfoData["license_cert"] = licenseCert } } else { userDoctorInfoData["license_cert"] = licenseCert } // 处理医师资格证 var qualificationCert string if len(userDoctorRequest.QualificationCert) > 0 { result := make([]string, len(userDoctorRequest.QualificationCert)) for i, url := range userDoctorRequest.QualificationCert { result[i] = strings.TrimPrefix(url, config.C.Oss.OssCustomDomainName) } qualificationCert = strings.Join(result, ",") } if userDoctorInfo != nil { if userDoctorInfo.QualificationCert != qualificationCert { userDoctorInfoData["qualification_cert"] = qualificationCert } } else { userDoctorInfoData["qualification_cert"] = qualificationCert } // 处理医师资格证号 if userDoctorInfo != nil { if userDoctorInfo.QualificationCertNum != userDoctorRequest.QualificationCertNum { userDoctorInfoData["qualification_cert_num"] = userDoctorRequest.QualificationCertNum } } else { userDoctorInfoData["qualification_cert_num"] = userDoctorRequest.QualificationCertNum } // 处理医师工作证 var workCert string if len(userDoctorRequest.WorkCert) > 0 { result := make([]string, len(userDoctorRequest.WorkCert)) for i, url := range userDoctorRequest.WorkCert { result[i] = strings.TrimPrefix(url, config.C.Oss.OssCustomDomainName) } workCert = strings.Join(result, ",") } if userDoctorInfo != nil { if userDoctorInfo.WorkCert != workCert { userDoctorInfoData["work_cert"] = workCert } } else { userDoctorInfoData["work_cert"] = workCert } // 处理身份证正面图片 if userDoctorRequest.IdCardFront != "" { idCardFront := strings.Replace(userDoctorRequest.IdCardFront, "https://img.applets.igandanyiyuan.com", "", 1) if idCardFront != userDoctorInfo.IdCardFront { userDoctorInfoData["id_card_front"] = idCardFront } } // 身份证背面图片 if userDoctorRequest.IdCardBack != "" { idCardBack := strings.Replace(userDoctorRequest.IdCardBack, "https://img.applets.igandanyiyuan.com", "", 1) if idCardBack != userDoctorInfo.IdCardBack { userDoctorInfoData["id_card_back"] = idCardBack } } // 签名图片 if userDoctorRequest.SignImage != "" { signImage := strings.Replace(userDoctorRequest.SignImage, "https://img.applets.igandanyiyuan.com", "", 1) if signImage != userDoctorInfo.SignImage { userDoctorInfoData["sign_image"] = signImage } } // 开始事务 tx := global.Db.Begin() defer func() { if r := recover(); r != nil { tx.Rollback() } }() // 修改医生数据 if len(userDoctorData) != 0 { err = userDoctorDao.EditUserDoctorById(tx, doctorId, userDoctorData) if err != nil { tx.Rollback() return false, errors.New("修改失败") } } // 修改医生详情数据 if userDoctorInfo == nil { // 新增医生详情表 if len(userDoctorInfoData) != 0 { userDoctorInfo, err := userDoctorInfoDao.AddUserDoctorInfoByMap(tx, userDoctorInfoData) if userDoctorInfo == nil || err != nil { tx.Rollback() return false, errors.New("修改失败") } } } else { if len(userDoctorInfoData) != 0 { err = userDoctorInfoDao.EditUserDoctorInfoById(tx, userDoctorInfo.DoctorInfoId, userDoctorInfoData) if err != nil { tx.Rollback() return false, errors.New("修改失败") } } } // _, ok := userDoctorData["department_custom_id"] // if ok { // // 变更科室 // // } // // paramMap := map[string]string{ // "userName": "zj", // "age": "19", // } // // sign := ca.GenerateSignature(paramMap) // fmt.Println(sign) tx.Commit() return true, nil // }