hospital-admin-api/api/dto/OrderServicePackage.go

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