248 lines
7.1 KiB
Go
248 lines
7.1 KiB
Go
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
|
|
//
|
|
}
|