<?php namespace App\Http\Services; use Illuminate\Support\Facades\Redis; class ClassService { //获取首页需要的所有分类,没有英文名称的不要 public static function getClassificationForHome() { $cache = Redis::get('semour_classification_cache'); // $cache = []; if ($cache) { return json_decode($cache, true); } //先获取所有分类 $classData = \Http::get(config('website.footstone_url') . '/open/getClassification')->json(); $secondClassList = []; if (isset($classData['code']) && $classData['code'] == 0) { $classCache = $classData['data']; foreach ($classCache as $key => &$class) { if (!$class['parent_id']) { if (empty($class['class_name_en'])) { continue; } $secondClassList[] = $class; } } unset($class); foreach ($classCache as $key => $class) { if (!$class['parent_id']) { continue; } foreach ($secondClassList as &$secondClass) { if ($secondClass['class_id'] == $class['parent_id']) { if (empty($class['class_name_en'])) { continue; } $secondClass['children'][] = $class; } } unset($secondClass); } $topClassMapping = config('field.top_class_mapping'); $topFields = []; foreach ($topClassMapping as $key => $mapping) { $topFields[$key] = [ 'class_name' => $key, ]; } foreach ($topClassMapping as $key => $mapping) { foreach ($secondClassList as $secondClass) { if (in_array($secondClass['class_id'], $topClassMapping[$key])) { if (empty($secondClass['class_name_en'])) { continue; } $topFields[$key]['img'] = \Arr::get(config('field.top_class_img_mapping'), $key); $topFields[$key]['children'][] = $secondClass; } } } $data = array_values($topFields); Redis::set('semour_classification_cache', json_encode($data)); Redis::expire('semour_classification_cache', 600); return $data; } return []; } public static function getClassificationById($classId, $includeChildren = false) { $cache = Redis::get('semour_classification_cache_' . $classId); if ($cache) { return json_decode($cache, true); } $classData = \Http::get(config('website.footstone_url') . '/open/getClassification')->json(); if (isset($classData['code']) && $classData['code'] == 0) { $classificationCache = $classData['data']; $classification = []; foreach ($classificationCache as $class) { if ($class['class_id'] == $classId) { $classification = $class; } } if ($classification['parent_id']) { return $classification; } //获取子分类 $totalSkuNumber = 0; foreach ($classificationCache as $classCache) { if ($classCache['parent_id'] == $classId) { if (empty($classCache['class_name_en'])) { continue; } $totalSkuNumber += $classCache['sku_number']; $classification['children'][] = $classCache; } } $classification['sku_number'] = $totalSkuNumber; Redis::set('semour_classification_cache_' . $classId, json_encode($classification)); Redis::expire('semour_classification_cache_' . $classId, 600); return $classification; } return []; } }