From 73b82a3cd40a5b6c3096c499b54bbfaf0fb4607e Mon Sep 17 00:00:00 2001 From: Jing Li Date: Mon, 29 Apr 2024 12:42:26 +0800 Subject: [PATCH] Update --- app/Admin/Controllers/Plan/PlanController.php | 1 - app/Admin/Services/Plan/PlanService.php | 18 +++++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/app/Admin/Controllers/Plan/PlanController.php b/app/Admin/Controllers/Plan/PlanController.php index 1898268..883c198 100644 --- a/app/Admin/Controllers/Plan/PlanController.php +++ b/app/Admin/Controllers/Plan/PlanController.php @@ -120,7 +120,6 @@ class PlanController extends AdminController ->source(admin_url('api/keywords/tree-list?parent_key=store_category')) ->labelField('name') ->valueField('key') - ->onlyLeaf(true) ->value('${planable.store_category_id}') ->required() ->visibleOn('${planable_type == "'.$planableTypePerformance.'"}'), diff --git a/app/Admin/Services/Plan/PlanService.php b/app/Admin/Services/Plan/PlanService.php index 98d2b5d..6dd1db3 100644 --- a/app/Admin/Services/Plan/PlanService.php +++ b/app/Admin/Services/Plan/PlanService.php @@ -213,11 +213,17 @@ class PlanService extends BaseService // 任务结束时间 $endAt = $startAt->copy()->endOfMonth(); - $input = [ - 'category_id' => $plan->planable->store_category_id, - 'level_id' => $plan->planable->store_level_id, - ]; + // 门店分类IDs + $categoryIds = value(function ($id) { + $ids = collect(); + if ($parent = Keyword::where('key', $id)->first()) { + /** @var \Illuminate\Support\Collection */ + $ids = Keyword::where('path', 'like', "%-{$parent->id}-%")->pluck('key'); + } + return $ids->push($id); + }, $plan->planable->store_category_id); + // 门店业绩统计 $aggregates = Ledger::select(['store_id', DB::raw('SUM(`sales`) as sales')]) ->whereBetween('date', [$startAt->format('Y-m-d'), $endAt->format('Y-m-d')]) ->groupBy('store_id') @@ -225,7 +231,9 @@ class PlanService extends BaseService ->toArray(); /** @var \Illuminate\Database\Eloquent\Collection */ - $stores = Store::filter($input, StoreFilter::class)->get(['id', 'master_id']); + $stores = Store::filter(['level_id' => $plan->planable->store_level_id], StoreFilter::class) + ->whereIn('category_id', $categoryIds) + ->get(['id', 'master_id']); foreach ($stores as $store) { $taskable = TaskPerformance::create([