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));