300 lines
15 KiB
Go
300 lines
15 KiB
Go
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
|
||
}
|