package service import ( "errors" "fmt" "hospital-admin-api/api/dao" "hospital-admin-api/api/responses/orderProductLogisticsResponse" "hospital-admin-api/api/responses/orderProductRefundResponse" "hospital-admin-api/api/responses/orderProductResponse" ) type OrderProductService struct { } // GetOrderProduct 药品订单详情 func (r *OrderProductService) GetOrderProduct(orderProductId int64) (getOrderProductResponse *orderProductResponse.GetOrderProduct, err error) { // 获取问诊订单数据 orderProductDao := dao.OrderProductDao{} orderProduct, err := orderProductDao.GetOrderProductPreloadById(orderProductId) if err != nil || orderProduct == nil { return nil, errors.New(err.Error()) } // 获取退款数据 orderProductRefund, err := r.GetOrderProductRefund(orderProductId) if err != nil { return nil, errors.New(err.Error()) } // 获取商品数据 orderProductItemService := OrderProductItemService{} orderProductItem, err := orderProductItemService.GetOrderProductItemByOrderProductId(orderProductId) if err != nil { return nil, errors.New(err.Error()) } // 获取物流数据 orderProductLogistics, err := r.GetOrderProductLogistics(orderProductId) if err != nil { return nil, errors.New(err.Error()) } // 获取处方数据 orderPrescriptionService := OrderPrescriptionService{} orderPrescription, err := orderPrescriptionService.GetOrderPrescriptionById(orderProduct.OrderPrescriptionId) if err != nil { return nil, errors.New(err.Error()) } // 获取问诊病例 orderInquiryCaseService := OrderInquiryCaseService{} orderInquiryCase, err := orderInquiryCaseService.GetOrderInquiryCaseByOrderInquiryId(orderProduct.OrderInquiryId) if err != nil { return nil, errors.New(err.Error()) } // 医生数据 userDoctorService := UserDoctorService{} userDoctor, err := userDoctorService.GetOrderInquiryUserDoctor(orderProduct.DoctorId) if err != nil { return nil, errors.New(err.Error()) } // 处理返回值 getOrderProductResponse = &orderProductResponse.GetOrderProduct{ OrderProductId: fmt.Sprintf("%v", orderProduct.OrderProductId), OrderInquiryId: fmt.Sprintf("%v", orderProduct.OrderInquiryId), OrderPrescriptionId: fmt.Sprintf("%v", orderProduct.OrderPrescriptionId), DoctorId: fmt.Sprintf("%v", orderProduct.DoctorId), PatientId: fmt.Sprintf("%v", orderProduct.PatientId), FamilyId: fmt.Sprintf("%v", orderProduct.FamilyId), OrderProductNo: orderProduct.OrderProductNo, EscrowTradeNo: orderProduct.EscrowTradeNo, OrderProductStatus: orderProduct.OrderProductStatus, PayChannel: orderProduct.PayChannel, PayStatus: orderProduct.PayStatus, CancelReason: orderProduct.CancelReason, AmountTotal: orderProduct.AmountTotal, PaymentAmountTotal: orderProduct.PaymentAmountTotal, LogisticsFee: orderProduct.LogisticsFee, LogisticsNo: orderProduct.LogisticsNo, LogisticsCompanyCode: orderProduct.LogisticsCompanyCode, DeliveryTime: orderProduct.DeliveryTime, PayTime: orderProduct.PayTime, Remarks: orderProduct.Remarks, RefundStatus: orderProduct.RefundStatus, ReportPreStatus: orderProduct.ReportPreStatus, ConsigneeNameMask: orderProduct.ConsigneeNameMask, ConsigneeTelMask: orderProduct.ConsigneeTelMask, CreatedAt: orderProduct.CreatedAt, UpdatedAt: orderProduct.UpdatedAt, OrderProductRefund: orderProductRefund, OrderProductItem: orderProductItem, OrderProductLogistics: orderProductLogistics, UserDoctor: userDoctor, OrderPrescription: orderPrescription, OrderInquiryCase: orderInquiryCase, } return getOrderProductResponse, nil } // GetOrderProductRefund 获取退款数据 func (r *OrderProductService) GetOrderProductRefund(orderProductId int64) (u *orderProductRefundResponse.OrderProductRefund, err error) { orderProductRefundDao := dao.OrderProductRefundDao{} orderProductRefund, err := orderProductRefundDao.GetOrderProductRefundByOrderProductId(orderProductId) if orderProductRefund == nil { return nil, nil } u = &orderProductRefundResponse.OrderProductRefund{ ProductRefundId: fmt.Sprintf("%d", orderProductRefund.ProductRefundId), PatientId: fmt.Sprintf("%d", orderProductRefund.PatientId), OrderProductId: fmt.Sprintf("%d", orderProductRefund.OrderProductId), OrderProductNo: orderProductRefund.OrderProductNo, ProductRefundNo: orderProductRefund.ProductRefundNo, RefundId: orderProductRefund.RefundId, ProductRefundStatus: orderProductRefund.ProductRefundStatus, RefundTotal: orderProductRefund.RefundTotal, RefundReason: orderProductRefund.RefundReason, SuccessTime: orderProductRefund.SuccessTime, CreatedAt: orderProductRefund.CreatedAt, UpdatedAt: orderProductRefund.UpdatedAt, } return u, nil } // GetOrderProductLogistics 获取物流数据 func (r *OrderProductService) GetOrderProductLogistics(orderProductId int64) (u *orderProductLogisticsResponse.OrderProductLogistics, err error) { orderProductLogisticsDao := dao.OrderProductLogisticsDao{} orderProductLogistics, err := orderProductLogisticsDao.GetOrderProductLogisticsByOrderProductId(orderProductId) if orderProductLogistics == nil { return nil, nil } u = &orderProductLogisticsResponse.OrderProductLogistics{} return u, nil }