From 9d65658ebed43f398d8357bd5c681ee3bfbbb823 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 16 Oct 2023 17:31:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=8C=BB=E7=94=9F=E9=97=AE?= =?UTF-8?q?=E8=AF=8A=E9=85=8D=E7=BD=AE=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/controller/inquiryConfig.go | 28 +++++++++++++++ api/dao/doctorInquiryConfig.go | 9 +++++ api/dao/doctorInquiryTime.go | 63 +++++++++++++++++++++++++++++++++ api/dto/DoctotInquiryConfig.go | 56 +++++++++++++++++++++-------- api/dto/DoctotInquiryTime.go | 58 ++++++++++++++++++++++++++++++ api/model/doctorInquiryTime.go | 37 +++++++++++++++++++ api/requests/inquiryConfig.go | 1 - api/router/router.go | 2 +- api/service/InquiryConfig.go | 61 +++++++++++++++++++++++++++++++ 9 files changed, 298 insertions(+), 17 deletions(-) create mode 100644 api/dao/doctorInquiryTime.go create mode 100644 api/dto/DoctotInquiryTime.go create mode 100644 api/model/doctorInquiryTime.go diff --git a/api/controller/inquiryConfig.go b/api/controller/inquiryConfig.go index 0ef2fba..6a619a9 100644 --- a/api/controller/inquiryConfig.go +++ b/api/controller/inquiryConfig.go @@ -6,8 +6,10 @@ import ( "hospital-admin-api/api/dto" "hospital-admin-api/api/requests" "hospital-admin-api/api/responses" + "hospital-admin-api/api/service" "hospital-admin-api/global" "hospital-admin-api/utils" + "strconv" ) // InquiryConfig 问诊配置 @@ -53,3 +55,29 @@ func (r *InquiryConfig) GetDoctorInquiryConfigPage(c *gin.Context) { result["data"] = res responses.OkWithData(result, c) } + +// GetDoctorInquiryConfig 医生问诊配置详情 +func (r *InquiryConfig) GetDoctorInquiryConfig(c *gin.Context) { + id := c.Param("inquiry_config_id") + if id == "" { + responses.FailWithMessage("缺少参数", c) + return + } + + // 将 id 转换为 int64 类型 + inquiryConfigId, err := strconv.ParseInt(id, 10, 64) + if err != nil { + responses.Fail(c) + return + } + + // 业务处理 + inquiryConfigService := service.InquiryConfigService{} + getUserDoctorResponses, err := inquiryConfigService.GetDoctorInquiryConfig(inquiryConfigId) + if err != nil { + responses.FailWithMessage(err.Error(), c) + return + } + + responses.OkWithData(getUserDoctorResponses, c) +} diff --git a/api/dao/doctorInquiryConfig.go b/api/dao/doctorInquiryConfig.go index fb1c954..1898cdc 100644 --- a/api/dao/doctorInquiryConfig.go +++ b/api/dao/doctorInquiryConfig.go @@ -19,6 +19,15 @@ func (r *DoctorInquiryConfigDao) GetDoctorInquiryConfigListByDoctorId(doctorId i return m, nil } +// GetDoctorInquiryConfigById 获取医生问诊配置数据-问诊配置id +func (r *DoctorInquiryConfigDao) GetDoctorInquiryConfigById(inquiryConfigId int64) (m *model.DoctorInquiryConfig, err error) { + err = global.Db.First(&m, inquiryConfigId).Error + if err != nil { + return nil, err + } + return m, nil +} + // DeleteDoctorInquiryConfig 删除医生问诊配置 func (r *DoctorInquiryConfigDao) DeleteDoctorInquiryConfig(tx *gorm.DB, maps interface{}) error { err := tx.Where(maps).Delete(&model.DoctorInquiryConfig{}).Error diff --git a/api/dao/doctorInquiryTime.go b/api/dao/doctorInquiryTime.go new file mode 100644 index 0000000..96963f8 --- /dev/null +++ b/api/dao/doctorInquiryTime.go @@ -0,0 +1,63 @@ +package dao + +import ( + "gorm.io/gorm" + "hospital-admin-api/api/model" + "hospital-admin-api/global" +) + +type DoctorInquiryTimeDao struct { +} + +// GetDoctorInquiryTimeListByDoctorId 获取医生问诊时间数据列表-医生id +func (r *DoctorInquiryTimeDao) GetDoctorInquiryTimeListByDoctorId(doctorId int64) (m []*model.DoctorInquiryTime, err error) { + err = global.Db.Where("doctor_id = ?", doctorId).Find(&m).Error + if err != nil { + return nil, err + } + return m, nil +} + +// DeleteDoctorInquiryTime 删除医生问诊时间 +func (r *DoctorInquiryTimeDao) DeleteDoctorInquiryTime(tx *gorm.DB, maps interface{}) error { + err := tx.Where(maps).Delete(&model.DoctorInquiryTime{}).Error + if err != nil { + return err + } + return nil +} + +// EditDoctorInquiryTimeById 修改医生问诊时间-问诊配置id +func (r *DoctorInquiryTimeDao) EditDoctorInquiryTimeById(tx *gorm.DB, InquiryTimeId int64, data interface{}) error { + err := tx.Model(&model.DoctorInquiryTime{}).Where("inquiry_time_id = ?", InquiryTimeId).Updates(data).Error + if err != nil { + return err + } + return nil +} + +// GetDoctorInquiryTimeList 获取医生问诊时间列表 +func (r *DoctorInquiryTimeDao) GetDoctorInquiryTimeList(maps interface{}) (m []*model.DoctorInquiryTime, err error) { + err = global.Db.Where(maps).Find(&m).Error + if err != nil { + return nil, err + } + return m, nil +} + +// AddDoctorInquiryTime 新增医生问诊时间 +func (r *DoctorInquiryTimeDao) AddDoctorInquiryTime(tx *gorm.DB, model *model.DoctorInquiryTime) (*model.DoctorInquiryTime, error) { + if err := tx.Create(model).Error; err != nil { + return nil, err + } + return model, nil +} + +// GetDoctorInquiryTime 获取医生问诊时间 +func (r *DoctorInquiryTimeDao) GetDoctorInquiryTime(maps interface{}) (m *model.DoctorInquiryTime, err error) { + err = global.Db.Where(maps).First(&m).Error + if err != nil { + return nil, err + } + return m, nil +} diff --git a/api/dto/DoctotInquiryConfig.go b/api/dto/DoctotInquiryConfig.go index 45ad676..86ed996 100644 --- a/api/dto/DoctotInquiryConfig.go +++ b/api/dto/DoctotInquiryConfig.go @@ -7,21 +7,23 @@ import ( ) type DoctorInquiryConfigDto struct { - InquiryConfigId string `json:"inquiry_config_id"` // 主键id - DoctorId string `json:"doctor_id"` // 医生id - InquiryType int `json:"inquiry_type"` // 接诊类型(1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药);NOT NULL - InquiryMode int `json:"inquiry_mode"` // 接诊方式(1:图文 2:视频 3:语音 4:电话 5:会员);NOT NULL - IsEnable int `json:"is_enable"` // 是否启用(0:否 1:是) - LastEnableMethod int `json:"last_enable_method"` // 最后开启方式(1:自己 2:后台) - WorkNumDay int `json:"work_num_day"` // 每日接诊数量 - InquiryPrice float64 `json:"inquiry_price"` // 接诊价格(专家问诊-公益问诊) - CreatedAt model.LocalTime `json:"created_at"` // 创建时间 - UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间 - DoctorName string `json:"doctor_name"` // 医生姓名 - MobileMask string `json:"mobile_mask"` // 医生电话(掩码) - DepartmentCustomName string `json:"department_custom_name"` // 科室名称 - DoctorTitle *int `json:"doctor_title"` // 医生职称(1:主任医师 2:主任中医师 3:副主任医师 4:副主任中医师 5:主治医师 6:住院医师) - MultiPointStatus int `json:"multi_point_status"` // 医生多点执业认证状态(0:未认证 1:认证通过 2:审核中 3:认证失败) + InquiryConfigId string `json:"inquiry_config_id"` // 主键id + DoctorId string `json:"doctor_id"` // 医生id + InquiryType int `json:"inquiry_type"` // 接诊类型(1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药);NOT NULL + InquiryMode int `json:"inquiry_mode"` // 接诊方式(1:图文 2:视频 3:语音 4:电话 5:会员);NOT NULL + IsEnable int `json:"is_enable"` // 是否启用(0:否 1:是) + LastEnableMethod int `json:"last_enable_method"` // 最后开启方式(1:自己 2:后台) + WorkNumDay int `json:"work_num_day"` // 每日接诊数量 + InquiryPrice float64 `json:"inquiry_price"` // 接诊价格(专家问诊-公益问诊) + CreatedAt model.LocalTime `json:"created_at"` // 创建时间 + UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间 + DoctorName string `json:"doctor_name"` // 医生姓名 + MobileMask string `json:"mobile_mask"` // 医生电话(掩码) + DepartmentCustomName string `json:"department_custom_name"` // 科室名称 + DoctorTitle *int `json:"doctor_title"` // 医生职称(1:主任医师 2:主任中医师 3:副主任医师 4:副主任中医师 5:主治医师 6:住院医师) + MultiPointStatus int `json:"multi_point_status"` // 医生多点执业认证状态(0:未认证 1:认证通过 2:审核中 3:认证失败) + UserDoctor *UserDoctorDto `json:"user_doctor"` // 医生数据 + DoctorInquiryTime []*DoctorInquiryTimeDto `json:"doctor_inquiry_time"` // 医生问诊时间配置 } func GetDoctorInquiryConfigDto(m *model.DoctorInquiryConfig) *DoctorInquiryConfigDto { @@ -130,3 +132,27 @@ func (r *DoctorInquiryConfigDto) LoadDoctorMultiPointStatus(m *model.UserDoctor) } return r } + +// LoadUserDoctor 加载医生数据 +func (r *DoctorInquiryConfigDto) LoadUserDoctor(m *model.UserDoctor) *DoctorInquiryConfigDto { + if m != nil { + r.UserDoctor = GetUserDoctorDto(m) + } + return r +} + +// LoadUserDoctorHospital 加载医生医院数据 +func (r *DoctorInquiryConfigDto) LoadUserDoctorHospital(m *model.Hospital) *DoctorInquiryConfigDto { + if m != nil && r.UserDoctor != nil { + r.UserDoctor.Hospital = GetHospitalDto(m) + } + return r +} + +// LoadDoctorInquiryTime 加载医生问诊时间 +func (r *DoctorInquiryConfigDto) LoadDoctorInquiryTime(m []*model.DoctorInquiryTime) *DoctorInquiryConfigDto { + if len(m) > 0 { + r.DoctorInquiryTime = GetDoctorInquiryTimeListDto(m) + } + return r +} diff --git a/api/dto/DoctotInquiryTime.go b/api/dto/DoctotInquiryTime.go new file mode 100644 index 0000000..facf76a --- /dev/null +++ b/api/dto/DoctotInquiryTime.go @@ -0,0 +1,58 @@ +package dto + +import ( + "fmt" + "hospital-admin-api/api/model" +) + +type DoctorInquiryTimeDto struct { + InquiryTimeId string `json:"inquiry_time_id"` // 主键id + DoctorId string `json:"doctor_id"` // 医生id + InquiryType int `json:"inquiry_type"` // 接诊类型(1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药) + InquiryMode int `json:"inquiry_mode"` // 接诊方式(1:图文 2:视频 3:语音 4:电话 5:会员) + InquiryDate model.LocalTime `json:"inquiry_date"` // 日期(可为空) + StartTime string `json:"start_time"` // 开始时间 + EndTime string `json:"end_time"` // 结束时间 + CreatedAt model.LocalTime `json:"created_at"` // 创建时间 + UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间 +} + +func GetDoctorInquiryTimeDto(m *model.DoctorInquiryTime) *DoctorInquiryTimeDto { + return &DoctorInquiryTimeDto{ + InquiryTimeId: fmt.Sprintf("%d", m.InquiryTimeId), + DoctorId: fmt.Sprintf("%d", m.DoctorId), + InquiryType: m.InquiryType, + InquiryMode: m.InquiryMode, + InquiryDate: m.InquiryDate, + StartTime: m.StartTime, + EndTime: m.EndTime, + CreatedAt: m.CreatedAt, + UpdatedAt: m.UpdatedAt, + } +} + +func GetDoctorInquiryTimeListDto(m []*model.DoctorInquiryTime) []*DoctorInquiryTimeDto { + // 处理返回值 + responses := make([]*DoctorInquiryTimeDto, len(m)) + + if len(m) > 0 { + for i, v := range m { + response := &DoctorInquiryTimeDto{ + InquiryTimeId: fmt.Sprintf("%d", v.InquiryTimeId), + DoctorId: fmt.Sprintf("%d", v.DoctorId), + InquiryType: v.InquiryType, + InquiryMode: v.InquiryMode, + InquiryDate: v.InquiryDate, + StartTime: v.StartTime[:2] + ":" + v.StartTime[2:], + EndTime: v.EndTime[:2] + ":" + v.EndTime[2:], + CreatedAt: v.CreatedAt, + UpdatedAt: v.UpdatedAt, + } + + // 将转换后的结构体添加到新切片中 + responses[i] = response + } + } + + return responses +} diff --git a/api/model/doctorInquiryTime.go b/api/model/doctorInquiryTime.go new file mode 100644 index 0000000..7f32e45 --- /dev/null +++ b/api/model/doctorInquiryTime.go @@ -0,0 +1,37 @@ +package model + +import ( + "gorm.io/gorm" + "hospital-admin-api/global" + "time" +) + +// DoctorInquiryTime 医生问诊时间配置 +type DoctorInquiryTime struct { + InquiryTimeId int64 `gorm:"column:inquiry_time_id;type:bigint(19);primary_key;comment:主键id" json:"inquiry_time_id"` + DoctorId int64 `gorm:"column:doctor_id;type:bigint(19);comment:医生id" json:"doctor_id"` + InquiryType int `gorm:"column:inquiry_type;type:tinyint(1);default:1;comment:接诊类型(1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药)" json:"inquiry_type"` + InquiryMode int `gorm:"column:inquiry_mode;type:tinyint(4);comment:接诊方式(1:图文 2:视频 3:语音 4:电话 5:会员)" json:"inquiry_mode"` + InquiryDate LocalTime `gorm:"column:inquiry_date;type:date;comment:日期(可为空)" json:"inquiry_date"` + StartTime string `gorm:"column:start_time;type:varchar(30);comment:开始时间" json:"start_time"` + EndTime string `gorm:"column:end_time;type:varchar(30);comment:结束时间" json:"end_time"` + Model +} + +func (m *DoctorInquiryTime) TableName() string { + return "gdxz_doctor_inquiry_time" +} + +func (m *DoctorInquiryTime) BeforeCreate(tx *gorm.DB) error { + if m.InquiryTimeId == 0 { + m.InquiryTimeId = global.Snowflake.Generate().Int64() + } + + m.CreatedAt = LocalTime(time.Now()) + tx.Statement.SetColumn("CreatedAt", m.CreatedAt) + + m.UpdatedAt = LocalTime(time.Now()) + tx.Statement.SetColumn("UpdatedAt", m.UpdatedAt) + + return nil +} diff --git a/api/requests/inquiryConfig.go b/api/requests/inquiryConfig.go index d9bf875..7516681 100644 --- a/api/requests/inquiryConfig.go +++ b/api/requests/inquiryConfig.go @@ -2,7 +2,6 @@ package requests type InquiryConfigRequest struct { GetDoctorInquiryConfigPage // 获取开启问诊配置医生列表-分页 - } // GetDoctorInquiryConfigPage 获取开启问诊配置医生列表-分页 diff --git a/api/router/router.go b/api/router/router.go index 1643893..d0657fc 100644 --- a/api/router/router.go +++ b/api/router/router.go @@ -475,7 +475,7 @@ func privateRouter(r *gin.Engine, api controller.Api) { doctorGroup.GET("", api.InquiryConfig.GetDoctorInquiryConfigPage) // 医生问诊配置详情 - doctorGroup.GET("/:doctor_id", api.UserDoctor.GetUserDoctor) + doctorGroup.GET("/:inquiry_config_id", api.InquiryConfig.GetDoctorInquiryConfig) // 修改医生问诊配置 doctorGroup.PUT("/:doctor_id", api.UserDoctor.PutUserDoctor) diff --git a/api/service/InquiryConfig.go b/api/service/InquiryConfig.go index c425790..1ac88dd 100644 --- a/api/service/InquiryConfig.go +++ b/api/service/InquiryConfig.go @@ -4,6 +4,7 @@ import ( "errors" "gorm.io/gorm" "hospital-admin-api/api/dao" + "hospital-admin-api/api/dto" "hospital-admin-api/api/model" "strconv" ) @@ -102,3 +103,63 @@ func (r *DoctorInquiryConfigService) HandleDoctorInquiryConfig(tx *gorm.DB, doct return true, nil } + +// GetDoctorInquiryConfig 医生问诊配置详情 +func (r *DoctorInquiryConfigService) GetDoctorInquiryConfig(inquiryConfigId int64) (res *dto.DoctorInquiryConfigDto, err error) { + doctorInquiryConfigDao := dao.DoctorInquiryConfigDao{} + + // 获取医生问诊配置 + doctorInquiryConfig, err := doctorInquiryConfigDao.GetDoctorInquiryConfigById(inquiryConfigId) + if err != nil || doctorInquiryConfig == nil { + return nil, errors.New(err.Error()) + } + + // 获取医生数据 + userDoctorDao := dao.UserDoctorDao{} + userDoctor, err := userDoctorDao.GetUserDoctorById(doctorInquiryConfig.DoctorId) + if err != nil || userDoctor == nil { + return nil, errors.New(err.Error()) + } + + // 获取医生医院数据 + hospitalDao := dao.Hospital{} + hospital, err := hospitalDao.GetHospitalById(userDoctor.HospitalID) + + // 获取系统问诊配置 + systemInquiryConfigDao := dao.SystemInquiryConfigDao{} + + maps := make(map[string]interface{}) + maps["inquiry_type"] = doctorInquiryConfig.InquiryType + maps["inquiry_mode"] = doctorInquiryConfig.InquiryMode + systemInquiryConfig, err := systemInquiryConfigDao.GetSystemInquiryConfig(maps) + if err != nil || systemInquiryConfig == nil { + return nil, errors.New(err.Error()) + } + + // 获取医生问诊时间 + doctorInquiryTimeDao := dao.DoctorInquiryTimeDao{} + + maps = make(map[string]interface{}) + maps["doctor_id"] = doctorInquiryConfig.DoctorId + maps["inquiry_type"] = doctorInquiryConfig.InquiryType + maps["inquiry_mode"] = doctorInquiryConfig.InquiryMode + doctorInquiryTimes, err := doctorInquiryTimeDao.GetDoctorInquiryTimeList(maps) + + // 处理返回值 + res = dto.GetDoctorInquiryConfigDto(doctorInquiryConfig) + + // 加载医生数据 + res.LoadUserDoctor(userDoctor) + + // 加载医生医院 + if hospital != nil { + res.LoadUserDoctorHospital(hospital) + } + + // 加载医生问诊时间 + if userDoctor.IsPlatformDeepCooperation == 1 { + res.LoadDoctorInquiryTime(doctorInquiryTimes) + } + + return res, nil +}