From 72fe7ec36c8b49912031ae4b90af599ac0bbcefb Mon Sep 17 00:00:00 2001 From: denghy Date: Fri, 29 Mar 2019 10:21:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=B6=E9=97=B4=E7=AD=9B=E9=80=89=E5=BF=AB?= =?UTF-8?q?=E6=8D=B7=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Domains/Real/Services/OrderService.php | 19 +++++-- app/Domains/Virtual/Services/OrderService.php | 2 +- frontend/src/mixins/index.js | 31 ++++++++++++ .../src/views/artisan/real-sync/index.vue | 1 + frontend/src/views/exports/index.vue | 25 ++++++++-- .../src/views/stats/company-count/index.vue | 50 +++++++++++++++---- frontend/src/views/stats/order/index.vue | 43 +++++++++++++--- frontend/src/views/virtual/cards/index.vue | 2 + frontend/src/views/virtual/orders/cards.vue | 1 + frontend/src/views/virtual/orders/index.vue | 1 + frontend/src/views/virtual/orders/js/cards.js | 4 +- frontend/src/views/virtual/orders/js/edit.js | 9 +++- public/css/chunk-62dbcbb5.8d1ff736.css | 2 + public/js/app.5eb18560.js | 2 + public/js/app.5eb18560.js.map | 1 + public/js/chunk-62dbcbb5.c847744d.js | 2 + public/js/chunk-62dbcbb5.c847744d.js.map | 1 + resources/views/index.blade.php | 2 +- 18 files changed, 171 insertions(+), 27 deletions(-) create mode 100644 public/css/chunk-62dbcbb5.8d1ff736.css create mode 100644 public/js/app.5eb18560.js create mode 100644 public/js/app.5eb18560.js.map create mode 100644 public/js/chunk-62dbcbb5.c847744d.js create mode 100644 public/js/chunk-62dbcbb5.c847744d.js.map diff --git a/app/Domains/Real/Services/OrderService.php b/app/Domains/Real/Services/OrderService.php index 32a19d82..d2a8a4ae 100644 --- a/app/Domains/Real/Services/OrderService.php +++ b/app/Domains/Real/Services/OrderService.php @@ -3,13 +3,14 @@ namespace App\Domains\Real\Services; use App\Dicts; use App\Core\Service; +use Illuminate\Support\Facades\Log; +use App\Exceptions\NotAllowedException; use App\Domains\Virtual\Services\CompanyService; use App\Domains\Virtual\Services\PackageService; use App\Domains\Real\Repositories\OrderRepository; use App\Domains\Real\Repositories\OrderCardPartitionRepository; use App\Domains\Virtual\Repositories\OrderRepository as VirtualOrderRepository; use App\Domains\Virtual\Repositories\OrderCardPartitionRepository as VirtualOrderCardPartitionRepository; -use App\Exceptions\NotAllowedException; class OrderService extends Service { @@ -82,12 +83,16 @@ class OrderService extends Service $counts = $this->orderCardPartitionRepository->withConditions($conditions)->sum('counts'); - if ($counts > 50000) { + if ($counts > 200000) { throw new NotAllowedException("当前请求数据量过大,请筛选过滤后查询"); } + Log::info('1', [microtime(true)]); + $cards = $this->orderCardPartitionRepository->withVirtual($conditions)->currentModel()->get(); + Log::info('2', [microtime(true)]); + $tmpCards = $cards->groupBy('virtual_order_id'); $orderIds = $tmpCards->keys()->unique()->toArray(); @@ -98,13 +103,17 @@ class OrderService extends Service unset($orderIds[$key]); } + Log::info('3', [microtime(true)]); + $virtualOrders = []; // 有订单的从订单中读取公司和套餐 if (!empty($orderIds)) { $virtualOrders = app(VirtualOrderRepository::class)->withConditions(['id' => $orderIds])->get()->keyBy('id'); } - $cards->map(function ($item) use ($virtualOrders) { + Log::info('4', [microtime(true)]); + + foreach ($cards as &$item) { $item->sim = (string)$item->sim; $item->company_id = $item->company_id ?? 0; $item->package_id = $item->package_id ?? 0; @@ -117,7 +126,9 @@ class OrderService extends Service $item->company_name = !$item->company_id ? '' : CompanyService::load($item->company_id)['name'] ?? ''; $item->package_name = !$item->package_id ? '' : PackageService::load($item->package_id)['name'] ?? ''; - }); + } + + Log::info('5', [microtime(true)]); return $cards->sortBy('sim')->sortBy('order_id')->values(); } diff --git a/app/Domains/Virtual/Services/OrderService.php b/app/Domains/Virtual/Services/OrderService.php index 7b910d28..c639f676 100644 --- a/app/Domains/Virtual/Services/OrderService.php +++ b/app/Domains/Virtual/Services/OrderService.php @@ -295,7 +295,7 @@ class OrderService extends Service return; } - $array = array_chunk($data, 10000); + $array = array_chunk($data, 1000); foreach ($array as $value) { DB::table($table)->upsert($value, ['sim', 'order_id', 'deleted_at']); diff --git a/frontend/src/mixins/index.js b/frontend/src/mixins/index.js index 9402b7f3..074ba929 100644 --- a/frontend/src/mixins/index.js +++ b/frontend/src/mixins/index.js @@ -30,6 +30,37 @@ export default { }); return date && date.valueOf() > ym; } + }, + datePickerOptionsMonth: { + shortcuts: [ + { + text: '本月', + value: () => { + return [ + this.moment().startOf('month').format('YYYY-MM-DD'), + this.moment().endOf('month').format('YYYY-MM-DD') + ]; + } + }, + { + text: '前一个月', + value: () => { + return [ + this.moment().subtract('1', 'months').startOf('month').format('YYYY-MM-DD'), + this.moment().subtract('1', 'months').endOf('month').format('YYYY-MM-DD') + ]; + } + }, + { + text: '前两个月', + value: () => { + return [ + this.moment().subtract('2', 'months').startOf('month').format('YYYY-MM-DD'), + this.moment().subtract('2', 'months').endOf('month').format('YYYY-MM-DD') + ]; + } + } + ] } }; }, diff --git a/frontend/src/views/artisan/real-sync/index.vue b/frontend/src/views/artisan/real-sync/index.vue index be87742d..6e665ddf 100644 --- a/frontend/src/views/artisan/real-sync/index.vue +++ b/frontend/src/views/artisan/real-sync/index.vue @@ -47,6 +47,7 @@ placement="bottom-start" type="daterange" v-model.trim="options.time" + :options="datePickerOptionsMonth" > diff --git a/frontend/src/views/exports/index.vue b/frontend/src/views/exports/index.vue index d7979ba5..adee9940 100644 --- a/frontend/src/views/exports/index.vue +++ b/frontend/src/views/exports/index.vue @@ -46,7 +46,14 @@
  • - +
  • @@ -70,11 +77,23 @@ 清空 -
    +
    - +
    diff --git a/frontend/src/views/stats/company-count/index.vue b/frontend/src/views/stats/company-count/index.vue index 7390cc54..78af0fd5 100644 --- a/frontend/src/views/stats/company-count/index.vue +++ b/frontend/src/views/stats/company-count/index.vue @@ -27,13 +27,29 @@
    @@ -51,16 +67,32 @@
    - +