diff --git a/app/service/GoodsService.php b/app/service/GoodsService.php index 0de369d6d..3dc5670fa 100755 --- a/app/service/GoodsService.php +++ b/app/service/GoodsService.php @@ -392,10 +392,12 @@ class GoodsService { $ids = explode(',', $ids); } - $where = ['pid'=>$ids]; + $where = [ + ['pid', 'in', $ids], + ]; if($is_enable !== null) { - $where['is_enable'] = $is_enable; + $where[] = ['is_enable', '=', $is_enable]; } // 级别记录处理 @@ -425,8 +427,63 @@ class GoodsService } } } - $data = empty($data) ? $ids : array_unique(array_merge($ids, $data)); - return $data; + return empty($data) ? $ids : array_unique(array_merge($ids, $data)); + } + + /** + * 获取商品分类的所有上级分类id + * @author Devil + * @blog http://gong.gg/ + * @version 1.0.0 + * @date 2018-08-29 + * @desc description + * @param [array] $ids [分类id数组] + * @param [int] $is_enable [是否启用 null, 0否, 1是] + * @param [int] $level [指定级别 null, 整数、默认则全部下级] + */ + public static function GoodsCategoryParentIds($ids = [], $is_enable = null, $level = null) + { + if(!is_array($ids)) + { + $ids = explode(',', $ids); + } + $where = [ + ['id', 'in', $ids], + ['pid', '>', 0], + ]; + if($is_enable !== null) + { + $where[] = ['is_enable', '=', $is_enable]; + } + + // 级别记录处理 + if($level !== null) + { + if(is_array($level)) + { + $level['temp'] += 1; + } else { + $level = [ + 'value' => $level, + 'temp' => 1, + ]; + } + } + + // 是否超过级别限制 + if($level === null || $level['temp'] < $level['value']) + { + $data = Db::name('GoodsCategory')->where($where)->column('pid'); + if(!empty($data)) + { + $temp = self::GoodsCategoryParentIds($data, $is_enable, $level); + if(!empty($temp)) + { + $data = array_merge($data, $temp); + } + } + } + return empty($data) ? $ids : array_unique(array_merge($ids, $data)); } /**