diff --git a/api/dao/orderServicePackage.go b/api/dao/orderServicePackage.go index 5071020..9d4ec53 100644 --- a/api/dao/orderServicePackage.go +++ b/api/dao/orderServicePackage.go @@ -77,6 +77,15 @@ func (r *OrderServicePackageDao) GetOrderServicePackageList(maps interface{}) (m return m, nil } +// GetOrderServicePackage 获取 +func (r *OrderServicePackageDao) GetOrderServicePackage(maps interface{}) (m *model.OrderServicePackage, err error) { + err = global.Db.Where(maps).First(&m).Error + if err != nil { + return nil, err + } + return m, nil +} + // AddOrderServicePackage 新增 func (r *OrderServicePackageDao) AddOrderServicePackage(tx *gorm.DB, model *model.OrderServicePackage) (*model.OrderServicePackage, error) { if err := tx.Create(model).Error; err != nil { diff --git a/api/dao/orderServicePackageProduct.go b/api/dao/orderServicePackageProduct.go index c5dde9e..4fef133 100644 --- a/api/dao/orderServicePackageProduct.go +++ b/api/dao/orderServicePackageProduct.go @@ -46,6 +46,15 @@ func (r *OrderServicePackageProductDao) EditOrderServicePackageProduct(tx *gorm. return nil } +// EditOrderServicePackageProductById 修改 +func (r *OrderServicePackageProductDao) EditOrderServicePackageProductById(tx *gorm.DB, serviceProductId int64, data interface{}) error { + err := tx.Model(&model.OrderServicePackageProduct{}).Where("service_product_id = ?", serviceProductId).Updates(data).Error + if err != nil { + return err + } + return nil +} + // GetOrderServicePackageProductList 获取列表 func (r *OrderServicePackageProductDao) GetOrderServicePackageProductList(maps interface{}) (m []*model.OrderServicePackageProduct, err error) { err = global.Db.Where(maps).Find(&m).Error @@ -54,3 +63,12 @@ func (r *OrderServicePackageProductDao) GetOrderServicePackageProductList(maps i } return m, nil } + +// GetOrderServicePackageProduct 获取 +func (r *OrderServicePackageProductDao) GetOrderServicePackageProduct(maps interface{}) (m *model.OrderServicePackageProduct, err error) { + err = global.Db.Where(maps).First(&m).Error + if err != nil { + return nil, err + } + return m, nil +} diff --git a/api/service/orderProduct.go b/api/service/orderProduct.go index ca7d08d..5cba44d 100644 --- a/api/service/orderProduct.go +++ b/api/service/orderProduct.go @@ -246,7 +246,7 @@ func (r *OrderProductService) CancelOrderProduct(req requests.CancelOrderProduct return false, errors.New("取消订单失败") } - // 修改问诊订单退款状态 + // 修改订单退款状态 orderProductData["refund_status"] = refundStatus orderProductData["order_product_status"] = 5 // 订单状态(1:待支付 2:待发货 3:已发货 4:已签收 5:已取消) orderProductData["cancel_time"] = time.Now().Format("2006-01-02 15:04:05") // 订单取消时间 @@ -305,6 +305,40 @@ func (r *OrderProductService) CancelOrderProduct(req requests.CancelOrderProduct return false, errors.New(err.Error()) } + // 获取患者家庭成员进行中的服务包订单-健康包 + OrderServicePackageService := OrderServicePackageService{} + patientFamilyInProgressServicePackage, err := OrderServicePackageService.GetPatientFamilyInProgressServicePackage(orderProduct.UserPatient.UserId, orderProduct.FamilyId, orderProduct.DoctorId, 1) + if patientFamilyInProgressServicePackage != nil { + // 获取药品订单列表 + orderProductItemDao := dao.OrderProductItemDao{} + orderProductItems, err := orderProductItemDao.GetOrderProductItemByOrderProductId(orderProductId) + if err != nil || len(orderProductItems) <= 0 { + tx.Rollback() + return false, errors.New("订单数据错误") + } + + for _, item := range orderProductItems { + orderServicePackageProductDao := dao.OrderServicePackageProductDao{} + + // 回退服务包已使用药品数量 + maps := make(map[string]interface{}) + maps["order_service_id"] = patientFamilyInProgressServicePackage.OrderServiceId + maps["order_product_id"] = item.OrderProductId + maps["product_item_id"] = item.ProductItemId + maps["product_id"] = item.ProductId + orderServicePackageProduct, err := orderServicePackageProductDao.GetOrderServicePackageProduct(maps) + if err == nil && orderServicePackageProduct != nil { + orderServicePackageProductData := make(map[string]interface{}) + orderServicePackageProductData["used_quantity"] = 0 + err := orderServicePackageProductDao.EditOrderServicePackageProductById(tx, orderServicePackageProduct.ServiceProductId, orderServicePackageProductData) + if err != nil { + tx.Rollback() + return false, errors.New(err.Error()) + } + } + } + } + // 记录日志 orderOperationLog := &model.OrderOperationLog{ OrderId: orderProduct.OrderProductId, diff --git a/api/service/orderServicePackage.go b/api/service/orderServicePackage.go index 0bbdab9..0922781 100644 --- a/api/service/orderServicePackage.go +++ b/api/service/orderServicePackage.go @@ -604,3 +604,21 @@ func (r *OrderServicePackageService) GetOrderServiceProductCanUseQuantity(orderS return remainingQuantity, err } + +// GetPatientFamilyInProgressServicePackage 获取患者家庭成员进行中的服务包订单 +func (r *OrderServicePackageService) GetPatientFamilyInProgressServicePackage(patientUserId, familyId, doctorId int64, serviceType int) (*model.OrderServicePackage, error) { + orderServicePackageDao := dao.OrderServicePackageDao{} + + maps := make(map[string]interface{}) + maps["user_id"] = patientUserId + maps["doctor_id"] = doctorId + maps["family_id"] = familyId + maps["order_service_type"] = serviceType + maps["order_service_status"] = 3 + orderServicePackage, err := orderServicePackageDao.GetOrderServicePackage(maps) + if err != nil { + return nil, err + } + + return orderServicePackage, err +}