*/ public function page(): array { $filters = [ 'from' => $this->date(request('from')) ?: now()->subDays(6)->toDateString(), 'to' => $this->date(request('to')) ?: now()->toDateString(), 'order_no' => $this->text(request('order_no')), 'shop_name' => $this->text(request('shop_name')), 'sku_id' => $this->text(request('sku_id')), ]; try { $data = $this->orderData->afterSales(); } catch (Throwable $exception) { report($exception); $rows = new Paginator([], 25, 1, [ 'path' => request()->url(), 'query' => request()->except('page'), ]); return [ 'view' => 'business.pages.order-data.bill-offset', 'billOffsetRows' => $rows, 'billOffsetFilters' => $filters, 'billOffsetError' => '订单售后费用数据暂时无法读取,请稍后重试。', 'billOffsetStatus' => null, 'billOffsetPageAmount' => 0.0, ]; } $rows = $data['orderDataRows']; $pageAmount = 0.0; foreach (($rows->items() ?? []) as $item) { $pageAmount += (float) (data_get($item, 'account_500112') ?? 0); } return [ 'view' => 'business.pages.order-data.bill-offset', 'billOffsetRows' => $rows, 'billOffsetFilters' => $data['orderDataFilters'] ?? $filters, 'billOffsetError' => $data['orderDataError'] ?? null, 'billOffsetStatus' => data_get($data, 'orderDataStatus.X-Caiwu-Data-Status'), 'billOffsetPageAmount' => $pageAmount, ]; } private function text(mixed $value): string { return mb_substr(trim((string) $value), 0, 100); } private function date(mixed $value): string { $value = trim((string) $value); if (preg_match('/^(\d{4})-(\d{2})-(\d{2})$/', $value, $matches) !== 1) { return ''; } return checkdate((int) $matches[2], (int) $matches[3], (int) $matches[1]) ? $value : ''; } }