151 lines
5.9 KiB
Go
151 lines
5.9 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{
|
|
LogisticsId: fmt.Sprintf("%d", orderProductLogistics.LogisticsId),
|
|
OrderProductId: fmt.Sprintf("%d", orderProductLogistics.OrderProductId),
|
|
LogisticsStatus: orderProductLogistics.LogisticsStatus,
|
|
LogisticsNo: orderProductLogistics.LogisticsNo,
|
|
CompanyName: orderProductLogistics.CompanyName,
|
|
CompanyCode: orderProductLogistics.CompanyCode,
|
|
LogisticsContent: orderProductLogistics.LogisticsContent,
|
|
CreatedAt: orderProductLogistics.CreatedAt,
|
|
UpdatedAt: orderProductLogistics.UpdatedAt,
|
|
}
|
|
|
|
return u, nil
|
|
}
|