From 83e1c226f10159350ecbb35ad1634bb05973be79 Mon Sep 17 00:00:00 2001 From: gongfuxiang Date: Sat, 6 Nov 2021 23:55:52 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=BB=E5=8F=96=E5=95=86=E5=93=81=E5=88=86?= =?UTF-8?q?=E7=B1=BB=E6=89=80=E6=9C=89=E5=AD=90=E5=88=86=E7=B1=BB=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0=E7=BA=A7=E5=88=AB=E9=99=90=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/service/GoodsService.php | 37 +++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/app/service/GoodsService.php b/app/service/GoodsService.php index 737a7dc3d..0de369d6d 100755 --- a/app/service/GoodsService.php +++ b/app/service/GoodsService.php @@ -382,11 +382,11 @@ class GoodsService * @version 1.0.0 * @date 2018-08-29 * @desc description - * @param [array] $ids [分类id数组] - * @param [int] $is_enable [是否启用 null, 0否, 1是] - * @param [string] $order_by [排序, 默认sort asc] + * @param [array] $ids [分类id数组] + * @param [int] $is_enable [是否启用 null, 0否, 1是] + * @param [int] $level [指定级别 null, 整数、默认则全部下级] */ - public static function GoodsCategoryItemsIds($ids = [], $is_enable = null, $order_by = 'sort asc') + public static function GoodsCategoryItemsIds($ids = [], $is_enable = null, $level = null) { if(!is_array($ids)) { @@ -397,13 +397,32 @@ class GoodsService { $where['is_enable'] = $is_enable; } - $data = Db::name('GoodsCategory')->where($where)->order($order_by)->column('id'); - if(!empty($data)) + + // 级别记录处理 + if($level !== null) { - $temp = self::GoodsCategoryItemsIds($data, $is_enable, $order_by); - if(!empty($temp)) + if(is_array($level)) { - $data = array_merge($data, $temp); + $level['temp'] += 1; + } else { + $level = [ + 'value' => $level, + 'temp' => 1, + ]; + } + } + + // 是否超过级别限制 + if($level === null || $level['temp'] < $level['value']) + { + $data = Db::name('GoodsCategory')->where($where)->column('id'); + if(!empty($data)) + { + $temp = self::GoodsCategoryItemsIds($data, $is_enable, $level); + if(!empty($temp)) + { + $data = array_merge($data, $temp); + } } } $data = empty($data) ? $ids : array_unique(array_merge($ids, $data));