From a105d575b868f4229b5c9e726ef50e3edf716da6 Mon Sep 17 00:00:00 2001 From: jsasg <735273025@qq.com> Date: Wed, 14 May 2025 17:27:59 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E8=B0=83=E6=95=B4=E6=96=B0?= =?UTF-8?q?=E5=93=81=E9=A1=B5=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/index/controller/Product.php | 45 ++++++++++++++++++++++-------- app/index/view/product/newpro.html | 4 --- 2 files changed, 33 insertions(+), 16 deletions(-) diff --git a/app/index/controller/Product.php b/app/index/controller/Product.php index 12d914d2..3a9625ca 100644 --- a/app/index/controller/Product.php +++ b/app/index/controller/Product.php @@ -376,24 +376,45 @@ class Product extends Common ->order(['sort' => 'asc', 'id' => 'desc']) ->select(); if (!$products->isEmpty()) { - // 按分类分组产品 - $products_map = []; - foreach ($products as $product) { - $products_map[$product['category_id']][] = $product; - } // 获取产品分类信息 - $categorys = ProductCategoryModel::field(['id', 'name']) - ->byPks(array_keys($products_map)) + $categorys = ProductCategoryModel::field(['id', 'name', 'path', 'level']) + ->where(function($query) use($products) { + $query->where('id', 'IN', Arr::pluck($products, 'category_id'))->whereOr('level', '=', 2); + }) ->language($this->lang_id) ->displayed(true) - ->order(['sort' => 'asc', 'id' => 'desc']) + ->order(['sort' => 'asc', 'id' => 'asc']) ->select(); if (!$categorys->isEmpty()) { + // 根据产品分类path信息分组 + $map = []; foreach ($categorys as $category) { - $newpros[] = [ - 'category' => $category, - 'products' => $products_map[$category['id']] ?? [], - ]; + $map[$category['id']] = $category; + } + $pro_map = []; + foreach ($products as $pro) { + if (!isset($map[$pro['category_id']])) { + continue; + } + $m = $map[$pro['category_id']]; + $pro_map[$m['path']][] = $pro; + } + + // 获取二级分类下的产品信息 + foreach ($categorys as $val) { + if ($val['level'] != 2) { + continue; + } + + foreach ($pro_map as $k => $pro) { + if (in_array($val['id'], explode(',', $k))) { + $newpros[] = [ + 'category' => $val, + 'products' => $pro, + ]; + break; + } + } } } } diff --git a/app/index/view/product/newpro.html b/app/index/view/product/newpro.html index 23234747..a425c586 100644 --- a/app/index/view/product/newpro.html +++ b/app/index/view/product/newpro.html @@ -16,10 +16,6 @@
-