From 96e76f1038192e7f0cfd6fb9e59d88657a7798b7 Mon Sep 17 00:00:00 2001 From: denghy Date: Thu, 3 Jan 2019 18:24:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=81=E4=B8=9A=E3=80=81=E5=A5=97=E9=A4=90?= =?UTF-8?q?=E8=BD=AF=E5=88=A0=E9=99=A4=E5=85=B3=E8=81=94=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Virtual/Services/AddedOrderService.php | 10 +++++++--- app/Domains/Virtual/Services/CompanyService.php | 11 +++++++++++ app/Domains/Virtual/Services/OrderService.php | 16 ++++++++++------ app/Domains/Virtual/Services/PackageService.php | 11 +++++++++++ app/Domains/Virtual/Services/ProductService.php | 7 +++++-- 5 files changed, 44 insertions(+), 11 deletions(-) diff --git a/app/Domains/Virtual/Services/AddedOrderService.php b/app/Domains/Virtual/Services/AddedOrderService.php index a2e8dac6..226d13d8 100644 --- a/app/Domains/Virtual/Services/AddedOrderService.php +++ b/app/Domains/Virtual/Services/AddedOrderService.php @@ -37,8 +37,12 @@ class AddedOrderService extends Service { $limit = $conditions['limit'] ?? 35; - $res = $this->orderRepository->with(['company:id,name','package:id,name,carrier_operator']) - ->withConditions($conditions)->applyConditions()->orderBy('order_at', 'desc')->paginate($limit); + $res = $this->orderRepository->withConditions($conditions)->applyConditions()->orderBy('order_at', 'desc')->paginate($limit); + + $res->map(function ($item) { + $item->company = app(CompanyService::class)->load($item->company_id); + $item->package = app(PackageService::class)->load($item->package_id); + }); return $res; } @@ -205,4 +209,4 @@ class AddedOrderService extends Service { return date('YmdHis') . explode('.', microtime(true))[1] . sprintf('%02d', rand(0, 99)); } -} \ No newline at end of file +} diff --git a/app/Domains/Virtual/Services/CompanyService.php b/app/Domains/Virtual/Services/CompanyService.php index 1aa7c5d8..ffc27bc4 100644 --- a/app/Domains/Virtual/Services/CompanyService.php +++ b/app/Domains/Virtual/Services/CompanyService.php @@ -15,6 +15,8 @@ class CompanyService extends Service { protected $companyRepository; + protected $companies; + /** * 构造函数 * @@ -104,4 +106,13 @@ class CompanyService extends Service return true; } + + public function load($id) + { + if (!$this->companies) { + $this->companies = $this->companyRepository->select(['id', 'name'])->withTrashed()->get()->keyBy('id'); + } + + return $this->companies[$id]; + } } diff --git a/app/Domains/Virtual/Services/OrderService.php b/app/Domains/Virtual/Services/OrderService.php index a8bbe186..912b140e 100644 --- a/app/Domains/Virtual/Services/OrderService.php +++ b/app/Domains/Virtual/Services/OrderService.php @@ -10,7 +10,11 @@ use App\Exceptions\NotExistException; use App\Exceptions\NotAllowedException; use Illuminate\Support\Facades\Validator; use App\Domains\Virtual\Services\CommonService; +use App\Domains\Virtual\Services\CompanyService; +use App\Domains\Virtual\Services\PackageService; use App\Domains\Virtual\Repositories\OrderRepository; +use App\Domains\Virtual\Repositories\CompanyRepository; +use App\Domains\Virtual\Repositories\PackageRepository; use App\Domains\Virtual\Repositories\ProductRepository; class OrderService extends Service @@ -37,14 +41,14 @@ class OrderService extends Service { $limit = $conditions['limit'] ?? 35; - $res = $this->orderRepository->with(['company:id,name','package:id,name,carrier_operator']) - ->withConditions($conditions)->applyConditions()->orderBy('order_at', 'desc')->paginate($limit); - + $res = $this->orderRepository->withConditions($conditions)->applyConditions()->orderBy('order_at', 'desc')->paginate($limit); $res->map(function ($item) { - $item->unit_price = sprintf('%.02f', $item->unit_price/100); - $item->total_price = sprintf('%.02f', $item->total_price/100); - $item->custom_price = sprintf('%.02f', $item->custom_price/100); + $item->company = app(CompanyService::class)->load($item->company_id); + $item->package = app(PackageService::class)->load($item->package_id); + $item->unit_price = floatval(sprintf('%.02f', $item->unit_price/100)); + $item->total_price = floatval(sprintf('%.02f', $item->total_price/100)); + $item->custom_price = floatval(sprintf('%.02f', $item->custom_price/100)); }); return $res; diff --git a/app/Domains/Virtual/Services/PackageService.php b/app/Domains/Virtual/Services/PackageService.php index 8a240401..cce69fe3 100644 --- a/app/Domains/Virtual/Services/PackageService.php +++ b/app/Domains/Virtual/Services/PackageService.php @@ -16,6 +16,8 @@ class PackageService extends Service { protected $packageRepository; + protected $packages; + /** * 构造函数 * @@ -147,4 +149,13 @@ class PackageService extends Service return true; } + + public function load($id) + { + if (!$this->packages) { + $this->packages = $this->packageRepository->select(['id', 'name', 'carrier_operator', 'flows', 'service_months'])->withTrashed()->get()->keyBy('id'); + } + + return $this->packages[$id]; + } } diff --git a/app/Domains/Virtual/Services/ProductService.php b/app/Domains/Virtual/Services/ProductService.php index a0e990de..3869c450 100644 --- a/app/Domains/Virtual/Services/ProductService.php +++ b/app/Domains/Virtual/Services/ProductService.php @@ -6,6 +6,8 @@ use App\Models\Virtual\Product; use App\Exceptions\NotExistException; use App\Exceptions\NotAllowedException; use Illuminate\Support\Facades\Validator; +use App\Domains\Virtual\Services\CompanyService; +use App\Domains\Virtual\Services\PackageService; use App\Domains\Virtual\Repositories\PackageRepository; use App\Domains\Virtual\Repositories\ProductRepository; @@ -31,10 +33,11 @@ class ProductService extends Service */ public function index(array $conditions = []) { - $list = $this->productRepository->with(['company:id,name', 'package:id,name,carrier_operator']) - ->withConditions($conditions)->applyConditions()->get(); + $list = $this->productRepository->withConditions($conditions)->applyConditions()->get(); $list->map(function ($item) { + $item->company = app(CompanyService::class)->load($item->company_id); + $item->package = app(PackageService::class)->load($item->package_id); $item->base_price = sprintf('%.02f', $item->base_price/100); $item->renewal_price = sprintf('%.02f', $item->renewal_price/100); });