159 lines
5.7 KiB
Go
159 lines
5.7 KiB
Go
package dto
|
||
|
||
import (
|
||
"fmt"
|
||
"hospital-admin-api/api/model"
|
||
"hospital-admin-api/utils"
|
||
)
|
||
|
||
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:认证失败)
|
||
UserDoctor *UserDoctorDto `json:"user_doctor"` // 医生数据
|
||
DoctorInquiryTime []*DoctorInquiryTimeDto `json:"doctor_inquiry_time"` // 医生问诊时间配置
|
||
}
|
||
|
||
func GetDoctorInquiryConfigDto(m *model.DoctorInquiryConfig) *DoctorInquiryConfigDto {
|
||
return &DoctorInquiryConfigDto{
|
||
InquiryConfigId: fmt.Sprintf("%d", m.InquiryConfigId),
|
||
DoctorId: fmt.Sprintf("%d", m.DoctorId),
|
||
InquiryType: m.InquiryType,
|
||
InquiryMode: m.InquiryMode,
|
||
IsEnable: m.IsEnable,
|
||
LastEnableMethod: m.LastEnableMethod,
|
||
WorkNumDay: m.WorkNumDay,
|
||
InquiryPrice: m.InquiryPrice,
|
||
CreatedAt: m.CreatedAt,
|
||
UpdatedAt: m.UpdatedAt,
|
||
}
|
||
}
|
||
|
||
func GetDoctorInquiryConfigListDto(m []*model.DoctorInquiryConfig) []*DoctorInquiryConfigDto {
|
||
// 处理返回值
|
||
responses := make([]*DoctorInquiryConfigDto, len(m))
|
||
|
||
if len(m) > 0 {
|
||
for i, v := range m {
|
||
response := &DoctorInquiryConfigDto{
|
||
InquiryConfigId: fmt.Sprintf("%d", v.InquiryConfigId),
|
||
DoctorId: fmt.Sprintf("%d", v.DoctorId),
|
||
InquiryType: v.InquiryType,
|
||
InquiryMode: v.InquiryMode,
|
||
IsEnable: v.IsEnable,
|
||
LastEnableMethod: v.LastEnableMethod,
|
||
WorkNumDay: v.WorkNumDay,
|
||
InquiryPrice: v.InquiryPrice,
|
||
CreatedAt: v.CreatedAt,
|
||
UpdatedAt: v.UpdatedAt,
|
||
}
|
||
|
||
// 加载医生名称
|
||
if v.UserDoctor != nil {
|
||
response.LoadDoctorName(v.UserDoctor)
|
||
}
|
||
|
||
// 加载医生电话
|
||
if v.UserDoctor.User != nil {
|
||
response.LoadDoctorMaskMobile(v.UserDoctor.User)
|
||
}
|
||
|
||
// 加载医生科室名称
|
||
if v.UserDoctor != nil {
|
||
response.LoadDoctorDepartmentCustomName(v.UserDoctor)
|
||
}
|
||
|
||
// 加载医生职称
|
||
if v.UserDoctor != nil {
|
||
response.LoadDoctorTitle(v.UserDoctor)
|
||
}
|
||
|
||
// 加载医生多点执业认证状态
|
||
if v.UserDoctor != nil {
|
||
response.LoadDoctorMultiPointStatus(v.UserDoctor)
|
||
}
|
||
|
||
// 将转换后的结构体添加到新切片中
|
||
responses[i] = response
|
||
}
|
||
}
|
||
|
||
return responses
|
||
}
|
||
|
||
// LoadDoctorName 加载医生名称
|
||
func (r *DoctorInquiryConfigDto) LoadDoctorName(m *model.UserDoctor) *DoctorInquiryConfigDto {
|
||
if m != nil {
|
||
r.DoctorName = m.UserName
|
||
}
|
||
return r
|
||
}
|
||
|
||
// LoadDoctorMaskMobile 加载医生电话
|
||
func (r *DoctorInquiryConfigDto) LoadDoctorMaskMobile(m *model.User) *DoctorInquiryConfigDto {
|
||
if m != nil {
|
||
r.MobileMask = utils.MaskPhoneStr(m.Mobile)
|
||
}
|
||
return r
|
||
}
|
||
|
||
// LoadDoctorDepartmentCustomName 加载医生科室名称
|
||
func (r *DoctorInquiryConfigDto) LoadDoctorDepartmentCustomName(m *model.UserDoctor) *DoctorInquiryConfigDto {
|
||
if m != nil {
|
||
r.DepartmentCustomName = m.DepartmentCustomName
|
||
}
|
||
return r
|
||
}
|
||
|
||
// LoadDoctorTitle 加载医生职称
|
||
func (r *DoctorInquiryConfigDto) LoadDoctorTitle(m *model.UserDoctor) *DoctorInquiryConfigDto {
|
||
if m != nil {
|
||
r.DoctorTitle = &m.DoctorTitle
|
||
}
|
||
return r
|
||
}
|
||
|
||
// LoadDoctorMultiPointStatus 加载医生多点执业认证状态
|
||
func (r *DoctorInquiryConfigDto) LoadDoctorMultiPointStatus(m *model.UserDoctor) *DoctorInquiryConfigDto {
|
||
if m != nil {
|
||
r.MultiPointStatus = m.MultiPointStatus
|
||
}
|
||
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
|
||
}
|