hospital-admin-api/api/service/orderProduct.go

141 lines
5.4 KiB
Go

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,
CancelTime: orderProduct.CancelTime,
CancelRemarks: orderProduct.CancelRemarks,
ReportPreStatus: orderProduct.ReportPreStatus,
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
}