From 801343f9b35866f5fc0de4babaed4f4c33d90576 Mon Sep 17 00:00:00 2001 From: denghy Date: Mon, 22 Apr 2019 09:30:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=85=A5=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Http/Controllers/ArtisanController.php | 4 +-- app/Domains/Real/Commands/Sync/Command.php | 4 +-- app/Domains/Real/Services/OrderService.php | 4 +-- .../Stats/Services/CompanyReportService.php | 4 +-- app/Domains/Virtual/Commands/Sync/Command.php | 4 +-- .../Http/Controllers/FlowPoolController.php | 33 +++++++++---------- .../Concerns/OrderCardConcern.php | 9 +++++ app/helpers.php | 13 ++++++++ 8 files changed, 43 insertions(+), 32 deletions(-) diff --git a/app/Domains/Artisan/Http/Controllers/ArtisanController.php b/app/Domains/Artisan/Http/Controllers/ArtisanController.php index 66f41384..77a23d89 100644 --- a/app/Domains/Artisan/Http/Controllers/ArtisanController.php +++ b/app/Domains/Artisan/Http/Controllers/ArtisanController.php @@ -41,9 +41,7 @@ class ArtisanController extends Controller */ public function call() { - set_time_limit(0); - ini_set('memory_limit', '4096m'); - ini_set('default_socket_timeout', -1); + begin_time_consuming(); $command = $this->request->get('command'); $parameters = $this->request->get('parameters', []); diff --git a/app/Domains/Real/Commands/Sync/Command.php b/app/Domains/Real/Commands/Sync/Command.php index ed61a464..87ae7e05 100644 --- a/app/Domains/Real/Commands/Sync/Command.php +++ b/app/Domains/Real/Commands/Sync/Command.php @@ -24,9 +24,7 @@ class Command extends BaseCommand { $this->line('开始'.$this->description); - set_time_limit(0); - ini_set('memory_limit', '4096m'); - ini_set('default_socket_timeout', -1); + begin_time_consuming(); parent::execute($input, $output); } diff --git a/app/Domains/Real/Services/OrderService.php b/app/Domains/Real/Services/OrderService.php index 01b5cb02..720ed322 100644 --- a/app/Domains/Real/Services/OrderService.php +++ b/app/Domains/Real/Services/OrderService.php @@ -79,9 +79,7 @@ class OrderService extends Service */ public function cards(array $conditions = []) { - set_time_limit(0); - ini_set('memory_limit', '4096m'); - ini_set('default_socket_timeout', -1); + begin_time_consuming(); $counts = $this->orderCardPartitionRepository->withConditions($conditions)->sum('counts'); diff --git a/app/Domains/Stats/Services/CompanyReportService.php b/app/Domains/Stats/Services/CompanyReportService.php index c347505b..746d07fa 100644 --- a/app/Domains/Stats/Services/CompanyReportService.php +++ b/app/Domains/Stats/Services/CompanyReportService.php @@ -31,9 +31,7 @@ class CompanyReportService extends Service */ public function index(array $conditions = []) { - set_time_limit(0); - ini_set('memory_limit', '4096m'); - ini_set('default_socket_timeout', -1); + begin_time_consuming(); $select = [ 'company_id', diff --git a/app/Domains/Virtual/Commands/Sync/Command.php b/app/Domains/Virtual/Commands/Sync/Command.php index d4a456b0..75e7b2e9 100644 --- a/app/Domains/Virtual/Commands/Sync/Command.php +++ b/app/Domains/Virtual/Commands/Sync/Command.php @@ -24,9 +24,7 @@ class Command extends BaseCommand { $this->line('开始'.$this->description); - set_time_limit(0); - ini_set('memory_limit', '4096m'); - ini_set('default_socket_timeout', -1); + begin_time_consuming(); parent::execute($input, $output); } diff --git a/app/Domains/Virtual/Http/Controllers/FlowPoolController.php b/app/Domains/Virtual/Http/Controllers/FlowPoolController.php index b8c729df..33e9014e 100644 --- a/app/Domains/Virtual/Http/Controllers/FlowPoolController.php +++ b/app/Domains/Virtual/Http/Controllers/FlowPoolController.php @@ -298,33 +298,32 @@ class FlowPoolController extends Controller */ public function importFlows() { + begin_time_consuming(); + $file = $this->request->file('file'); $data = ImportService::load($file, ['month', 'pool_id', 'sim', 'mebibyte']); - Validator::validate($data, [ - '*.month' => ['required', 'numeric'], - '*.pool_id' => ['required', 'numeric'], - '*.sim' => ['required', 'numeric'], - '*.mebibyte' => ['required', 'numeric'], - ], [ - '*.month.required' => '字段month不能为空', - '*.month.numeric' => '字段month必须为数字', - '*.pool_id.required' => '字段pool_id不能为空', - '*.pool_id.numeric' => '字段pool_id必须为数字', - '*.sim.required' => '字段sim不能为空', - '*.sim.numeric' => '字段sim必须为数字', - '*.mebibyte.required' => '字段mebibyte不能为空', - '*.mebibyte.numeric' => '字段mebibyte必须为数字', - ]); + foreach ($data as $row) { + foreach (['month', 'pool_id', 'sim', 'mebibyte'] as $key) { + if (!isset($row[$key])) { + throw new InvalidArgumentException("字段{$row[$key]}不能为空"); + } + + if (!is_numeric($row[$key])) { + throw new InvalidArgumentException("字段{$row[$key]}必须为数字"); + } + } + } $flowPools = app(FlowPoolRepository::class)->withConditions(['id' => array_unique(array_pluck($data, 'pool_id'))])->get()->keyBy('id')->toArray(); $simPackage = []; - foreach (array_chunk($data, 1000) as $value) { + foreach (array_chunk($data, 10000) as $value) { $cards = app(OrderCardPartitionRepository::class)->select(['sim', 'package_id'])->withConditions([ - 'type' => 0, + 'type' => [0, 1, 2], 'sim' => array_pluck($value, 'sim'), + 'now' => 1, ])->get()->pluck('package_id', 'sim')->toArray(); foreach ($cards as $sim => $package_id) { diff --git a/app/Domains/Virtual/Repositories/Concerns/OrderCardConcern.php b/app/Domains/Virtual/Repositories/Concerns/OrderCardConcern.php index 1472f547..7f6ff3b2 100644 --- a/app/Domains/Virtual/Repositories/Concerns/OrderCardConcern.php +++ b/app/Domains/Virtual/Repositories/Concerns/OrderCardConcern.php @@ -124,6 +124,15 @@ trait OrderCardConcern $relation->where('transaction_no', 'like', "%{$conditions['transaction_no']}%"); }); } + + if ($conditions['now']) { + $query->where(function ($subQuery) { + $subQuery->where(function ($timeQuery) { + $timeQuery->where('service_start_at', '<=', Carbon::now()) + ->where('service_end_at', '>=', Carbon::now()); + })->orWhereNull('service_start_at'); + }); + } }); if (isset($conditions['card_status'])) { diff --git a/app/helpers.php b/app/helpers.php index 3d4d2e84..14361b82 100644 --- a/app/helpers.php +++ b/app/helpers.php @@ -6,6 +6,19 @@ use Dipper\Foundation\Support\Time; use Illuminate\Support\Facades\Event; use App\Domains\Account\Services\AccountService; +if (! function_exists('begin_time_consuming')) { + /** + * 初始化耗时任务 + * + */ + function begin_time_consuming() + { + set_time_limit(0); + ini_set('memory_limit', '4096m'); + ini_set('default_socket_timeout', -1); + } +} + if (! function_exists('cdn')) { /** * 生成CDN链接, 可带时间戳防盗链