package dto import ( "fmt" "hospital-admin-api/api/model" ) // OrderServicePackageDto 订单-服务包 type OrderServicePackageDto struct { OrderServiceId string `json:"order_service_id"` // 主键id OrderId string `json:"order_id"` // 订单id UserId string `json:"user_id"` // 用户id-患者 PatientId string `json:"patient_id"` // 患者id DoctorId string `json:"doctor_id"` // 医生id FamilyId string `json:"family_id"` // 家庭成员id(就诊用户) OrderServiceType int `json:"order_service_type"` // 服务包类型(1:健康包 2:随访包) OrderServiceStatus int `json:"order_service_status"` // 订单状态(1:待支付 2:未开始 3:服务中 4:服务完成 5:服务取消) IsDelete int `json:"is_delete"` // 删除状态(0:否 1:是) RefundStatus int `json:"refund_status"` // 订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭 6:退款异常 7:部分退款) PayChannel int `json:"pay_channel"` // 支付渠道(1:小程序支付 2:微信扫码支付 3:模拟支付) PayStatus int `json:"pay_status"` // 支付状态(1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款) OrderServiceNo string `json:"order_service_no"` // 系统订单编号 EscrowTradeNo string `json:"escrow_trade_no"` // 第三方支付流水号 AmountTotal float64 `json:"amount_total"` // 订单金额 CouponAmountTotal float64 `json:"coupon_amount_total"` // 优惠卷总金额 PaymentAmountTotal float64 `json:"payment_amount_total"` // 实际付款金额 PayTime model.LocalTime `json:"pay_time"` // 支付时间 StartTime model.LocalTime `json:"start_time"` // 开始服务时间 FinishTime model.LocalTime `json:"finish_time"` // 结束服务时间 CancelTime model.LocalTime `json:"cancel_time"` // 订单取消时间 CancelReason int `json:"cancel_reason"` // 取消订单原因(1:医生未接受服务 2:主动取消 4:客服取消 5:支付超时) CancelRemarks string `json:"cancel_remarks"` // 取消订单备注 AddFinishStatus int `json:"add_finish_status"` // 添加完成订单延迟队列状态(0:未添加 1:已添加 2:添加失败) AddFinishTime model.LocalTime `json:"add_finish_time"` // 添加完成订单延迟队列时间 AddFinishFailReason string `json:"add_finish_fail_reason"` // 添加完成订单延迟队列失败原因 PatientName string `json:"patient_name"` // 患者姓名-就诊人 PatientNameMask string `json:"patient_name_mask"` // 患者姓名-就诊人(掩码) PatientSex int `json:"patient_sex"` // 患者性别-就诊人(0:未知 1:男 2:女) PatientAge int `json:"patient_age"` // 患者年龄-就诊人 CreatedAt model.LocalTime `json:"created_at"` // 创建时间 UpdatedAt model.LocalTime `json:"updated_at"` // 更新时间 DoctorName string `json:"doctor_name"` // 医生姓名 UserName string `json:"user_name"` // 用户姓名(患者) UserDoctor *UserDoctorDto `json:"user_doctor"` // 医生数据 OrderServicePackageCase *OrderServicePackageCaseDto `json:"order_service_package_case"` // 病例 OrderServicePackageRefund *OrderServicePackageRefundDto `json:"order_service_package_refund"` // 退款数据 } // OrderServicePackageDetailInfoDto 服务包权益 type OrderServicePackageDetailInfoDto struct { OrderServiceId string `json:"order_service_id"` // 主键id OrderId string `json:"order_id"` // 订单id UserId string `json:"user_id"` // 用户id-患者 PatientId string `json:"patient_id"` // 患者id DoctorId string `json:"doctor_id"` // 医生id FamilyId string `json:"family_id"` // 家庭成员id(就诊用户) OrderServiceType int `json:"order_service_type"` // 服务包类型(1:健康包 2:随访包) OrderServiceStatus int `json:"order_service_status"` // 订单状态(1:待支付 2:未开始 3:服务中 4:服务完成 5:服务取消) IsDelete int `json:"is_delete"` // 删除状态(0:否 1:是) OrderServiceNo string `json:"order_service_no"` // 系统订单编号 PayTime model.LocalTime `json:"pay_time"` // 支付时间 StartTime model.LocalTime `json:"start_time"` // 开始服务时间 FinishTime model.LocalTime `json:"finish_time"` // 结束服务时间 CreatedAt model.LocalTime `json:"created_at"` // 创建时间 OrderProduct []*OrderProductDto `json:"order_product"` // 关联商品订单 OrderInquiry []*OrderInquiryDto `json:"order_inquiry"` // 关联问诊订单 UserCoupon []*UserCouponDto `json:"user_coupon"` // 关联优惠卷 OrderServicePackageCase *OrderServicePackageCaseDto `json:"order_service_package_case"` // 关联病例 OrderServicePackageDetail *OrderServicePackageDetailDto `json:"order_service_package_detail"` // 服务包订单详情 CurrentMonthStartDate string `json:"current_month_start_date"` // 当月开始时间 CurrentMonthFinishDate string `json:"current_month_finish_date"` // 当月结束时间 MonthInquiryCount int `json:"month_inquiry_count"` // 当月问诊次数 RemainingInquiryCount string `json:"remaining_inquiry_count"` // 当月剩余问诊次数 } // GetOrderServicePackageDto 服务包订单详情 func GetOrderServicePackageDto(m *model.OrderServicePackage) *OrderServicePackageDto { return &OrderServicePackageDto{ OrderServiceId: fmt.Sprintf("%d", m.OrderServiceId), OrderId: fmt.Sprintf("%d", m.OrderId), UserId: fmt.Sprintf("%d", m.UserId), PatientId: fmt.Sprintf("%d", m.PatientId), DoctorId: fmt.Sprintf("%d", m.DoctorId), FamilyId: fmt.Sprintf("%d", m.FamilyId), OrderServiceType: m.OrderServiceType, OrderServiceStatus: m.OrderServiceStatus, IsDelete: m.IsDelete, RefundStatus: m.RefundStatus, PayChannel: m.PayChannel, PayStatus: m.PayStatus, OrderServiceNo: m.OrderServiceNo, EscrowTradeNo: m.EscrowTradeNo, AmountTotal: m.AmountTotal, CouponAmountTotal: m.CouponAmountTotal, PaymentAmountTotal: m.PaymentAmountTotal, PayTime: m.PayTime, StartTime: m.StartTime, FinishTime: m.FinishTime, CancelTime: m.CancelTime, CancelReason: m.CancelReason, CancelRemarks: m.CancelRemarks, AddFinishStatus: m.AddFinishStatus, AddFinishTime: m.AddFinishTime, AddFinishFailReason: m.AddFinishFailReason, PatientName: m.PatientName, PatientNameMask: m.PatientNameMask, PatientSex: m.PatientSex, PatientAge: m.PatientAge, CreatedAt: m.CreatedAt, UpdatedAt: m.UpdatedAt, } } // GetOrderServicePackageListDto 服务包订单列表 func GetOrderServicePackageListDto(m []*model.OrderServicePackage) []*OrderServicePackageDto { // 处理返回值 responses := make([]*OrderServicePackageDto, len(m)) if len(m) > 0 { for i, v := range m { response := &OrderServicePackageDto{ OrderServiceId: fmt.Sprintf("%d", v.OrderServiceId), OrderId: fmt.Sprintf("%d", v.OrderId), UserId: fmt.Sprintf("%d", v.UserId), PatientId: fmt.Sprintf("%d", v.PatientId), DoctorId: fmt.Sprintf("%d", v.DoctorId), FamilyId: fmt.Sprintf("%d", v.FamilyId), OrderServiceType: v.OrderServiceType, OrderServiceStatus: v.OrderServiceStatus, IsDelete: v.IsDelete, RefundStatus: v.RefundStatus, PayChannel: v.PayChannel, PayStatus: v.PayStatus, OrderServiceNo: v.OrderServiceNo, EscrowTradeNo: v.EscrowTradeNo, AmountTotal: v.AmountTotal, CouponAmountTotal: v.CouponAmountTotal, PaymentAmountTotal: v.PaymentAmountTotal, PayTime: v.PayTime, StartTime: v.StartTime, FinishTime: v.FinishTime, CancelTime: v.CancelTime, CancelReason: v.CancelReason, CancelRemarks: v.CancelRemarks, AddFinishStatus: v.AddFinishStatus, AddFinishTime: v.AddFinishTime, AddFinishFailReason: v.AddFinishFailReason, PatientName: v.PatientName, PatientNameMask: v.PatientNameMask, PatientSex: v.PatientSex, PatientAge: v.PatientAge, CreatedAt: v.CreatedAt, UpdatedAt: v.UpdatedAt, } // 加载医生名称 if v.UserDoctor != nil { response = response.LoadDoctorName(v.UserDoctor) } // 加载用户姓名(患者) if v.User != nil { response = response.LoadUserName(v.User) } // 将转换后的结构体添加到新切片中 responses[i] = response } } return responses } // GetOrderServicePackageDetailInfoDto 服务包权益详情 func GetOrderServicePackageDetailInfoDto(m *model.OrderServicePackage) *OrderServicePackageDetailInfoDto { return &OrderServicePackageDetailInfoDto{ OrderServiceId: fmt.Sprintf("%d", m.OrderServiceId), OrderId: fmt.Sprintf("%d", m.OrderId), UserId: fmt.Sprintf("%d", m.UserId), PatientId: fmt.Sprintf("%d", m.PatientId), DoctorId: fmt.Sprintf("%d", m.DoctorId), FamilyId: fmt.Sprintf("%d", m.FamilyId), OrderServiceType: m.OrderServiceType, OrderServiceStatus: m.OrderServiceStatus, IsDelete: m.IsDelete, OrderServiceNo: m.OrderServiceNo, PayTime: m.PayTime, StartTime: m.StartTime, FinishTime: m.FinishTime, CreatedAt: m.CreatedAt, } } // LoadDoctorName 加载医生名称 func (r *OrderServicePackageDto) LoadDoctorName(m *model.UserDoctor) *OrderServicePackageDto { if m != nil { r.DoctorName = m.UserName } return r } // LoadUserName 加载用户姓名(患者) func (r *OrderServicePackageDto) LoadUserName(m *model.User) *OrderServicePackageDto { if m != nil { r.UserName = m.UserName } return r } // LoadOrderServicePackageRefund 加载订单退款数据 func (r *OrderServicePackageDto) LoadOrderServicePackageRefund(m *model.OrderServicePackageRefund) *OrderServicePackageDto { if m != nil { d := GetOrderServicePackageRefundDto(m) r.OrderServicePackageRefund = d } return r } // LoadMaskOrderServicePackageCase 加载病例 func (r *OrderServicePackageDto) LoadMaskOrderServicePackageCase(m *model.OrderServicePackageCase) *OrderServicePackageDto { if m != nil { d := GetOrderServicePackageCaseDto(m) r.OrderServicePackageCase = d } return r } // LoadOrderServicePackageProduct 加载关联商品订单 func (r *OrderServicePackageDetailInfoDto) LoadOrderServicePackageProduct(m []*model.OrderServicePackageProduct) *OrderServicePackageDetailInfoDto { if len(m) > 0 { responses := make([]*OrderProductDto, len(m)) for i, product := range m { if product.OrderProduct != nil { // 将转换后的结构体添加到新切片中 response := GetOrderProductDto(product.OrderProduct) // 将转换后的结构体添加到新切片中 responses[i] = response } } r.OrderProduct = responses } return r } // LoadOrderServicePackageInquiry 加载关联问诊订单 func (r *OrderServicePackageDetailInfoDto) LoadOrderServicePackageInquiry(m []*model.OrderServicePackageInquiry) *OrderServicePackageDetailInfoDto { if len(m) > 0 { responses := make([]*OrderInquiryDto, len(m)) for i, inquiry := range m { if inquiry.OrderInquiry != nil { // 将转换后的结构体添加到新切片中 response := GetOrderInquiryDto(inquiry.OrderInquiry) // 将转换后的结构体添加到新切片中 responses[i] = response } } r.OrderInquiry = responses } return r } // LoadUserCoupon 加载优惠卷数据 func (r *OrderServicePackageDetailInfoDto) LoadUserCoupon(m []*model.UserCoupon) *OrderServicePackageDetailInfoDto { if len(m) > 0 { d := GetUserCouponListDto(m) r.UserCoupon = d } return r } // LoadOrderServicePackageDetail 加载服务包订单详情数据 func (r *OrderServicePackageDetailInfoDto) LoadOrderServicePackageDetail(m *model. OrderServicePackageDetail) *OrderServicePackageDetailInfoDto { if m != nil { d := GetOrderServicePackageDetailDto(m) r.OrderServicePackageDetail = d } return r } // LoadOrderServicePackageCase 加载服务包订单关联病例数据 func (r *OrderServicePackageDetailInfoDto) LoadOrderServicePackageCase(m *model.OrderServicePackageCase) *OrderServicePackageDetailInfoDto { if m != nil { d := GetOrderServicePackageCaseDto(m) r.OrderServicePackageCase = d } return r }