hospital-open-api/api/dto/v1/UserDoctor.go

287 lines
17 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package v1
import (
"fmt"
"hospital-open-api/api/model"
"hospital-open-api/utils"
"strconv"
)
// UserDoctorDto 医生详情
type UserDoctorDto struct {
DoctorID string `json:"doctor_id"` // 主键id
UserID string `json:"user_id"` // 用户id
UserName string `json:"user_name"` // 用户名称
Status int `json:"status"` // 状态0:禁用 1:正常 2:删除)
IDCardStatus int `json:"idcard_status"` // 实名认证状态0:未认证 1:认证通过 2:认证失败)
IdenAuthStatus int `json:"iden_auth_status"` // 身份认证状态0:未认证 1:认证通过 2:审核中 3:认证失败)
MultiPointStatus int `json:"multi_point_status"` // 医生多点执业认证状态0:未认证 1:认证通过 2:审核中 3:认证失败)
Avatar string `json:"avatar"` // 头像
DoctorTitle string `json:"doctor_title"` // 医生职称1:主任医师 2:主任中医师 3:副主任医师 4:副主任中医师 5:主治医师 6:住院医师)
DepartmentCustomName string `json:"department_custom_name"` // 科室名称(如未自己输入,填入标准科室名称)
ServedPatientsNum int `json:"served_patients_num"` // 服务患者数量(订单结束时统计)
PraiseRate float64 `json:"praise_rate"` // 好评率百分制。订单平均评价中超过4-5分的订单总数 / 总订单数 * 5
AvgResponseTime float64 `json:"avg_response_time"` // 平均响应时间(分钟制)
NumberOfFans uint `json:"number_of_fans"` // 被关注数量
IsImgExpertReception int `json:"is_img_expert_reception"` // 是否参加专家图文接诊0:否 1:是)
IsImgWelfareReception int `json:"is_img_welfare_reception"` // 是否参加公益图文问诊0:否 1:是)
IsImgQuickReception int `json:"is_img_quick_reception"` // 是否参加快速图文接诊0:否 1:是)
IsPlatformDeepCooperation int `json:"is_platform_deep_cooperation"` // 是否平台深度合作医生0:否 1:是)
IsEnterpriseDeepCooperation int `json:"is_enterprise_deep_cooperation"` // 是否企业深度合作医生0:否 1:是)
QrCode string `json:"qr_code"` // 分享二维码
BeGoodAt string `json:"be_good_at"` // 擅长
BriefIntroduction string `json:"brief_introduction"` // 医生简介
Mobile string `json:"mobile"` // 手机号
Age uint `json:"age"` // 年龄
Sex int `json:"sex"` // 性别0:未知 1:男 2:女)
HospitalName string `json:"hospital_name"` // 医院名称
DoctorInquiryConfig []*DoctorInquiryConfigDto `json:"doctor_inquiry_config"` // 医生问诊配置
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
UpdatedAt model.LocalTime `json:"updated_at"` // 更新时间
}
// MultiUserDoctorDto 多点执业医生详情
type MultiUserDoctorDto struct {
DoctorID string `json:"doctor_id"` // 主键id
UserID string `json:"user_id"` // 用户id
UserName string `json:"user_name"` // 用户名称
Status int `json:"status"` // 状态0:禁用 1:正常 2:删除)
IDCardStatus int `json:"idcard_status"` // 实名认证状态0:未认证 1:认证通过 2:认证失败)
IdenAuthStatus int `json:"iden_auth_status"` // 身份认证状态0:未认证 1:认证通过 2:审核中 3:认证失败)
MultiPointStatus int `json:"multi_point_status"` // 医生多点执业认证状态0:未认证 1:认证通过 2:审核中 3:认证失败)
Avatar string `json:"avatar"` // 头像
DoctorTitle string `json:"doctor_title"` // 医生职称1:主任医师 2:主任中医师 3:副主任医师 4:副主任中医师 5:主治医师 6:住院医师)
DepartmentCustomName string `json:"department_custom_name"` // 科室名称(如未自己输入,填入标准科室名称)
ServedPatientsNum int `json:"served_patients_num"` // 服务患者数量(订单结束时统计)
PraiseRate float64 `json:"praise_rate"` // 好评率百分制。订单平均评价中超过4-5分的订单总数 / 总订单数 * 5
AvgResponseTime float64 `json:"avg_response_time"` // 平均响应时间(分钟制)
NumberOfFans uint `json:"number_of_fans"` // 被关注数量
IsImgExpertReception int `json:"is_img_expert_reception"` // 是否参加专家图文接诊0:否 1:是)
IsImgWelfareReception int `json:"is_img_welfare_reception"` // 是否参加公益图文问诊0:否 1:是)
IsImgQuickReception int `json:"is_img_quick_reception"` // 是否参加快速图文接诊0:否 1:是)
IsPlatformDeepCooperation int `json:"is_platform_deep_cooperation"` // 是否平台深度合作医生0:否 1:是)
IsEnterpriseDeepCooperation int `json:"is_enterprise_deep_cooperation"` // 是否企业深度合作医生0:否 1:是)
QrCode string `json:"qr_code"` // 分享二维码
BeGoodAt string `json:"be_good_at"` // 擅长
BriefIntroduction string `json:"brief_introduction"` // 医生简介
Mobile string `json:"mobile"` // 手机号
Age uint `json:"age"` // 年龄
Sex int `json:"sex"` // 性别0:未知 1:男 2:女)
HospitalName string `json:"hospital_name"` // 医院名称
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
UpdatedAt model.LocalTime `json:"updated_at"` // 更新时间
}
// UserDoctorPageDto 获取医生列表-分页
type UserDoctorPageDto struct {
DoctorID string `json:"doctor_id"` // 主键id
UserID string `json:"user_id"` // 用户id
UserName string `json:"user_name"` // 用户名称
MultiPointStatus int `json:"multi_point_status"` // 医生多点执业认证状态0:未认证 1:认证通过 2:审核中 3:认证失败)
Avatar string `json:"avatar"` // 头像
DoctorTitle string `json:"doctor_title"` // 医生职称1:主任医师 2:主任中医师 3:副主任医师 4:副主任中医师 5:主治医师 6:住院医师)
DepartmentCustomName string `json:"department_custom_name"` // 科室名称(如未自己输入,填入标准科室名称)
ServedPatientsNum int `json:"served_patients_num"` // 服务患者数量(订单结束时统计)
PraiseRate float64 `json:"praise_rate"` // 好评率百分制。订单平均评价中超过4-5分的订单总数 / 总订单数 * 5
AvgResponseTime float64 `json:"avg_response_time"` // 平均响应时间(分钟制)
NumberOfFans uint `json:"number_of_fans"` // 被关注数量
IsPlatformDeepCooperation int `json:"is_platform_deep_cooperation"` // 是否平台深度合作医生0:否 1:是)
IsEnterpriseDeepCooperation int `json:"is_enterprise_deep_cooperation"` // 是否企业深度合作医生0:否 1:是)
QrCode string `json:"qr_code"` // 分享二维码
BeGoodAt string `json:"be_good_at"` // 擅长
BriefIntroduction string `json:"brief_introduction"` // 医生简介
Age uint `json:"age"` // 年龄
Sex int `json:"sex"` // 性别0:未知 1:男 2:女)
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
UpdatedAt model.LocalTime `json:"updated_at"` // 更新时间
HospitalName string `json:"hospital_name"` // 医院名称
HospitalLevelName string `json:"hospital_level_name"` // 医院等级
IsOnline int `json:"is_online"` // 是否在线0:不在线 1:在线)
DoctorInquiryConfig []*DoctorInquiryConfigDto `json:"doctor_inquiry_config"` // 医生问诊配置
}
// GetMultiDoctorDto 获取多点执业医生详情
func GetMultiDoctorDto(m *model.UserDoctor) *MultiUserDoctorDto {
res := &MultiUserDoctorDto{
DoctorID: strconv.Itoa(int(m.DoctorId)),
UserID: strconv.Itoa(int(m.UserId)),
UserName: m.UserName,
Status: m.Status,
IDCardStatus: m.Status,
IdenAuthStatus: m.IdenAuthStatus,
MultiPointStatus: m.MultiPointStatus,
Avatar: utils.AddOssDomain(m.Avatar),
DoctorTitle: utils.DoctorTitleToStr(m.DoctorTitle),
DepartmentCustomName: m.DepartmentCustomName,
ServedPatientsNum: m.ServedPatientsNum,
PraiseRate: m.PraiseRate,
AvgResponseTime: m.AvgResponseTime,
NumberOfFans: m.NumberOfFans,
IsImgExpertReception: m.IsImgExpertReception,
IsImgWelfareReception: m.IsImgWelfareReception,
IsImgQuickReception: m.IsImgQuickReception,
IsPlatformDeepCooperation: m.IsPlatformDeepCooperation,
IsEnterpriseDeepCooperation: m.IsEnterpriseDeepCooperation,
QrCode: utils.AddOssDomain(m.QrCode),
BeGoodAt: m.BeGoodAt,
BriefIntroduction: m.BriefIntroduction,
CreatedAt: m.CreatedAt,
UpdatedAt: m.UpdatedAt,
}
return res
}
// GetDoctorDto 获取医生详情
func GetDoctorDto(m *model.UserDoctor) *UserDoctorDto {
res := &UserDoctorDto{
DoctorID: strconv.Itoa(int(m.DoctorId)),
UserID: strconv.Itoa(int(m.UserId)),
UserName: m.UserName,
Status: m.Status,
IDCardStatus: m.Status,
IdenAuthStatus: m.IdenAuthStatus,
MultiPointStatus: m.MultiPointStatus,
Avatar: utils.AddOssDomain(m.Avatar),
DoctorTitle: utils.DoctorTitleToStr(m.DoctorTitle),
DepartmentCustomName: m.DepartmentCustomName,
ServedPatientsNum: m.ServedPatientsNum,
PraiseRate: m.PraiseRate,
AvgResponseTime: m.AvgResponseTime,
NumberOfFans: m.NumberOfFans,
IsImgExpertReception: m.IsImgExpertReception,
IsImgWelfareReception: m.IsImgWelfareReception,
IsImgQuickReception: m.IsImgQuickReception,
IsPlatformDeepCooperation: m.IsPlatformDeepCooperation,
IsEnterpriseDeepCooperation: m.IsEnterpriseDeepCooperation,
QrCode: utils.AddOssDomain(m.QrCode),
BeGoodAt: m.BeGoodAt,
BriefIntroduction: m.BriefIntroduction,
CreatedAt: m.CreatedAt,
UpdatedAt: m.UpdatedAt,
}
return res
}
// GetUserDoctorPageListDto 获取医生列表-分页
func GetUserDoctorPageListDto(m []*model.UserDoctor) []*UserDoctorPageDto {
// 处理返回值
responses := make([]*UserDoctorPageDto, len(m))
if len(m) > 0 {
for i, v := range m {
response := &UserDoctorPageDto{
DoctorID: fmt.Sprintf("%d", v.DoctorId),
UserID: fmt.Sprintf("%d", v.UserId),
UserName: v.UserName,
MultiPointStatus: v.MultiPointStatus,
Avatar: utils.AddOssDomain(v.Avatar),
DoctorTitle: utils.DoctorTitleToStr(v.DoctorTitle),
DepartmentCustomName: v.DepartmentCustomName,
ServedPatientsNum: v.ServedPatientsNum,
PraiseRate: v.PraiseRate,
AvgResponseTime: v.AvgResponseTime,
NumberOfFans: v.NumberOfFans,
IsPlatformDeepCooperation: v.IsPlatformDeepCooperation,
CreatedAt: v.CreatedAt,
QrCode: utils.AddOssDomain(v.QrCode),
BeGoodAt: v.BeGoodAt,
BriefIntroduction: v.BriefIntroduction,
UpdatedAt: v.UpdatedAt,
}
// 加载用户属性
if v.User != nil {
response = response.LoadUserAttr(v.User)
}
// 加载医院属性数据
if v.Hospital != nil {
response = response.LoadHospitalAttr(v.Hospital)
}
// 加载问诊配置数据
if v.Hospital != nil {
response = response.LoadDoctorInquiryConfig(v.DoctorInquiryConfig)
}
// 将转换后的结构体添加到新切片中
responses[i] = response
}
}
return responses
}
// LoadUserAttr 加载用户属性数据
func (r *UserDoctorDto) LoadUserAttr(m *model.User) *UserDoctorDto {
if m != nil {
r.Mobile = m.Mobile
r.Age = m.Age
r.Sex = m.Sex
}
return r
}
// LoadHospitalName 加载医院名称
func (r *UserDoctorDto) LoadHospitalName(m *model.Hospital) *UserDoctorDto {
if m != nil {
r.HospitalName = m.HospitalName
}
return r
}
// LoadDoctorInquiryConfig 加载问诊配置数据
func (r *UserDoctorDto) LoadDoctorInquiryConfig(m []*model.DoctorInquiryConfig) *UserDoctorDto {
if len(m) > 0 {
r.DoctorInquiryConfig = GetDoctorInquiryConfigListDto(m)
}
return r
}
// LoadUserAttr 加载用户属性数据
func (r *MultiUserDoctorDto) LoadUserAttr(m *model.User) *MultiUserDoctorDto {
if m != nil {
r.Mobile = m.Mobile
r.Age = m.Age
r.Sex = m.Sex
}
return r
}
// LoadHospitalName 加载医院名称
func (r *MultiUserDoctorDto) LoadHospitalName(m *model.Hospital) *MultiUserDoctorDto {
if m != nil {
r.HospitalName = m.HospitalName
}
return r
}
// LoadUserAttr 加载用户属性数据
func (r *UserDoctorPageDto) LoadUserAttr(m *model.User) *UserDoctorPageDto {
if m != nil {
r.Age = m.Age
r.Sex = m.Sex
r.IsOnline = m.IsOnline
}
return r
}
// LoadHospitalAttr 加载医院属性数据
func (r *UserDoctorPageDto) LoadHospitalAttr(m *model.Hospital) *UserDoctorPageDto {
if m != nil {
r.HospitalName = m.HospitalName
r.HospitalLevelName = m.HospitalLevelName
}
return r
}
// LoadDoctorInquiryConfig 加载问诊配置数据
func (r *UserDoctorPageDto) LoadDoctorInquiryConfig(m []*model.DoctorInquiryConfig) *UserDoctorPageDto {
if len(m) > 0 {
r.DoctorInquiryConfig = GetDoctorInquiryConfigListDto(m)
}
return r
}