创建服务包订单新增是否怀孕,取消为接诊订单增加服务包问诊订单处理、新增服务包订单退款逻辑处理

This commit is contained in:
2024-04-12 09:53:10 +08:00
parent 605a069e07
commit cde261be5d
8 changed files with 675 additions and 76 deletions
+78 -3
View File
@@ -97,9 +97,13 @@ class OrderService extends BaseService
$result = $OrderProductService->cancelUnpayProductOrder($order['order_no'], $cancel_reason, $cancel_remarks);
} elseif ($order['order_type'] == 3) {
// 检测订单
$DetectionService = new DetectionService();
$result = $DetectionService->cancelUnpayDetectionOrder($order['order_no'], $cancel_reason, $cancel_remarks);
} elseif ($order['order_type'] == 4 ||$order['order_type'] == 5 ) {
// 服务包订单
$OrderServicePackageService = new OrderServicePackageService();
$result = $OrderServicePackageService->cancelUnpayServiceOrder($order['order_no'], $cancel_reason, $cancel_remarks);
}else{
} else{
$result['status'] = 0;
$result['message'] = "订单类型错误";
}
@@ -162,6 +166,9 @@ class OrderService extends BaseService
} elseif ($order['order_type'] == 3) {
// 检测检测订单可退款状态
$this->checkOrderDetectionStatusForRefund($order['order_no']);
} elseif ($order['order_type'] == 4 || $order['order_type'] == 5) {
// 检测服务包订单可退款状态
$this->checkOrderServiceStatusForRefund($order['order_no']);
} else {
throw new BusinessException("订单类型错误");
}
@@ -375,11 +382,46 @@ class OrderService extends BaseService
$params['order_detection_id'] = $order_detection['order_detection_id'];
OrderDetection::editOrderDetection($params, $data);
break;
case 4: // 服务包订单
// 获取订单数据
$params = array();
$params['order_service_no'] = $order_no;
$order_service_package = OrderServicePackage::getOne($params);
if (empty($order_service_package)) {
throw new BusinessException("订单数据为空");
}
// 新增退款表
$data = array();
$data['patient_id'] = $order['patient_id'];
$data['order_service_id'] = $order_service_package['order_service_id'];
$data['order_service_no'] = $order_service_package['order_service_no'];
$data['service_refund_no'] = $refund_no;
$data['refund_id'] = $refund_id;
$data['detection_refund_status'] = $refund_status;
$data['refund_total'] = $order_service_package['payment_amount_total'];
$data['refund_reason'] = $refund_reason;
if ($refund_status == 3 && !empty($success_time)) {
$data['success_time'] = date("Y-m-d H:i:s", strtotime($success_time)); // 退款成功时间
}
$order_service_package_refund = OrderServicePackageRefund::addOrderServicePackageRefund($data);
if (empty($order_service_package_refund)) {
throw new BusinessException("添加退款表失败");
}
// 修改问诊订单表状态
$data = array();
$data['refund_status'] = $refund_status;
$params = array();
$params['order_service_id'] = $order_service_package['order_service_id'];
OrderServicePackage::edit($params, $data);
break;
default:
throw new BusinessException("订单类型错误");
}
} catch (\Throwable $e) {
throw new BusinessException($e->getMessage());
}
@@ -637,7 +679,7 @@ class OrderService extends BaseService
}
// 检测问诊订单状态
if (!in_array($order_detection['detection_status'], [2, 5])) {
if (!in_array($order_detection['detection_status'], [2, 3])) {
// 检测订单状态(1:待支付 2:待绑定 3:检测中 4:检测完成 5:已取消)
throw new BusinessException("订单状态错误");
}
@@ -654,4 +696,37 @@ class OrderService extends BaseService
throw new BusinessException("订单支付状态错误");
}
}
/**
* 检测服务包订单可退款状态
* @param string $order_no
*/
public function checkOrderServiceStatusForRefund(string $order_no): void
{
// 获取订单数据
$params = array();
$params['order_service_no'] = $order_no;
$order_service_package = OrderServicePackage::getOne($params);
if (empty($order_service_package)) {
throw new BusinessException("订单数据为空");
}
// 检测问诊订单状态
if (!in_array($order_service_package['order_service_status'], [2, 3])) {
// 订单状态(1:待支付 2:未开始 3:服务中 4:服务完成 5:服务取消)
throw new BusinessException("订单状态错误");
}
// 检测订单退款状态
if (in_array($order_service_package['refund_status'], [2, 3, 5, 6])) {
// 检测订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭 6:退款异常)
throw new BusinessException("订单退款状态错误");
}
// 检测支付状态
if ($order_service_package['pay_status'] != 2) {
// 支付状态(1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款)
throw new BusinessException("订单支付状态错误");
}
}
}