feat: update appraisal ordering and payment flows
This commit is contained in:
@@ -34,7 +34,12 @@ class EnterpriseOrderService
|
||||
throw new \InvalidArgumentException('service_provider 无效');
|
||||
}
|
||||
|
||||
$serviceConfig = $this->serviceConfig($serviceProvider);
|
||||
$pricePackageCode = trim((string)($payload['price_package_code'] ?? ''));
|
||||
try {
|
||||
$servicePackage = $this->pricePackageSnapshot($serviceProvider, $pricePackageCode);
|
||||
} catch (\RuntimeException $e) {
|
||||
throw new \InvalidArgumentException($e->getMessage());
|
||||
}
|
||||
|
||||
$product = $this->normalizeProduct((array)($payload['product_info'] ?? []));
|
||||
$returnAddress = $this->normalizeReturnAddress((array)($payload['return_address'] ?? []));
|
||||
@@ -43,7 +48,7 @@ class EnterpriseOrderService
|
||||
$now = date('Y-m-d H:i:s');
|
||||
$orderNo = 'AXY' . date('YmdHis') . mt_rand(100, 999);
|
||||
$appraisalNo = 'AXY-APP-' . date('Ymd') . '-' . mt_rand(1000, 9999);
|
||||
$estimated = date('Y-m-d H:i:s', strtotime(sprintf('+%d hours', (int)$serviceConfig['sla_hours'])));
|
||||
$estimated = date('Y-m-d H:i:s', strtotime(sprintf('+%d hours', (int)$servicePackage['sla_hours'])));
|
||||
$userId = (new EnterpriseCustomerService())->ensureVirtualUser($customer);
|
||||
$productName = $this->resolveProductName($product);
|
||||
|
||||
@@ -61,7 +66,11 @@ class EnterpriseOrderService
|
||||
'estimated_finish_time' => $estimated,
|
||||
'source_channel' => 'enterprise_push',
|
||||
'source_customer_id' => $customer['customer_code'],
|
||||
'pay_amount' => $serviceConfig['price'],
|
||||
'price_package_id' => $servicePackage['price_package_id'],
|
||||
'price_package_name' => $servicePackage['price_package_name'],
|
||||
'price_package_code' => $servicePackage['price_package_code'],
|
||||
'price_package_price' => $servicePackage['price_package_price'],
|
||||
'pay_amount' => $servicePackage['pay_amount'],
|
||||
'paid_at' => $now,
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
@@ -130,7 +139,8 @@ class EnterpriseOrderService
|
||||
|
||||
(new EnterpriseWebhookService())->recordOrderEvent($orderId, 'order_created', [
|
||||
'product_name' => $productName,
|
||||
'pay_amount' => (float)$serviceConfig['price'],
|
||||
'price_package_name' => $servicePackage['price_package_name'],
|
||||
'pay_amount' => (float)$servicePackage['pay_amount'],
|
||||
]);
|
||||
|
||||
$ref = Db::name('enterprise_customer_order_refs')->where('order_id', $orderId)->find();
|
||||
@@ -182,6 +192,9 @@ class EnterpriseOrderService
|
||||
'order_status' => (string)$order['order_status'],
|
||||
'display_status' => (string)$order['display_status'],
|
||||
'payment_status' => (string)$order['payment_status'],
|
||||
'price_package_name' => (string)($order['price_package_name'] ?? ''),
|
||||
'price_package_code' => (string)($order['price_package_code'] ?? ''),
|
||||
'price_package_price' => (float)($order['price_package_price'] ?? 0),
|
||||
'pay_amount' => (float)$order['pay_amount'],
|
||||
'estimated_finish_time' => (string)($order['estimated_finish_time'] ?? ''),
|
||||
'created_at' => (string)$order['created_at'],
|
||||
@@ -317,16 +330,9 @@ class EnterpriseOrderService
|
||||
return trim(($product['brand_name'] ?? '') . ' ' . ($product['category_name'] ?? ''));
|
||||
}
|
||||
|
||||
private function serviceConfig(string $serviceProvider): array
|
||||
private function pricePackageSnapshot(string $serviceProvider, string $packageCode = ''): array
|
||||
{
|
||||
$configs = [
|
||||
'anxinyan' => ['price' => 99.00, 'sla_hours' => 48],
|
||||
'zhongjian' => ['price' => 199.00, 'sla_hours' => 72],
|
||||
];
|
||||
if (isset($configs[$serviceProvider])) {
|
||||
return $configs[$serviceProvider];
|
||||
}
|
||||
return $configs['anxinyan'];
|
||||
return (new AppraisalServicePricePackageService())->snapshotForOrder($serviceProvider, 0, $packageCode);
|
||||
}
|
||||
|
||||
private function insertMaterials(int $orderId, array $materials, string $now): void
|
||||
|
||||
Reference in New Issue
Block a user