Commit 7edd98b5 by 杨树贤

品牌和分类通过APi获取

parent db68fc6b
......@@ -59,3 +59,5 @@ PUBLIC_URL=
GOODS_INFO_URL=http://192.168.1.237:60014
#深茂搜索地址
SO_URL=http://so.semourdev.net
#基石地址
FOOTSTONE_URL=http://footstone.liexindev.net
......@@ -10,24 +10,25 @@ class BrandService
public static function getStandardBrandList($map)
{
$standardBrandCache = Redis::hgetall('standard_brand');
$standardBrandCache = array_map(function ($value) {
return json_decode($value, true);
}, $standardBrandCache);
ksort($standardBrandCache);
$standardBrandCache = array_values($standardBrandCache);
$standardBrandCache = array_map(function ($item) {
return \Arr::only($item, ['brand_name_en', 'standard_brand_id', 'brand_short_name_en', 'brand_logo']);
}, $standardBrandCache);
if (!empty($map['brand_name'])) {
$fuse = new Fuse($standardBrandCache, [
'keys' => ['brand_name_en'],
'minMatchCharLength' => 3,
'threshold' => 0
]);
return $fuse->search($map['brand_name']);
$standardBrandData = \Http::get(config('website.footstone_url') . '/open/getStandardBrandList')->json();
if (isset($standardBrandData['code']) && $standardBrandData['code'] == 0) {
$standardBrandCache = $standardBrandData['data'];
ksort($standardBrandCache);
$standardBrandCache = array_values($standardBrandCache);
$standardBrandCache = array_map(function ($item) {
return \Arr::only($item, ['brand_name_en', 'standard_brand_id', 'brand_short_name_en', 'brand_logo']);
}, $standardBrandCache);
if (!empty($map['brand_name'])) {
$fuse = new Fuse($standardBrandCache, [
'keys' => ['brand_name_en'],
'minMatchCharLength' => 3,
'threshold' => 0
]);
return $fuse->search($map['brand_name']);
}
return $standardBrandCache;
}
return $standardBrandCache;
return [];
}
......@@ -39,31 +40,32 @@ class BrandService
if ($standardBrandList) {
return json_decode($standardBrandList, true);
}
$standardBrandCache = Redis::hgetall('standard_brand');
$standardBrandCache = array_map(function ($value) {
return json_decode($value, true);
}, $standardBrandCache);
$letters = generate_letters();
$standardBrandList = [];
foreach ($standardBrandCache as $standardBrand) {
$matchLetter = false;
foreach ($letters as $letter) {
if (start_with(strtoupper($standardBrand['brand_name']), $letter)) {
if (empty($standardBrand['brand_name_en'])) {
continue;
$standardBrandData = \Http::get(config('website.footstone_url') . '/open/getStandardBrandList')->json();
if (isset($standardBrandData['code']) && $standardBrandData['code'] == 0) {
$standardBrandCache = $standardBrandData['data'];
$letters = generate_letters();
$standardBrandList = [];
foreach ($standardBrandCache as $standardBrand) {
$matchLetter = false;
foreach ($letters as $letter) {
if (start_with(strtoupper($standardBrand['brand_name']), $letter)) {
if (empty($standardBrand['brand_name_en'])) {
continue;
}
$standardBrandList[$letter][] = $standardBrand;
$matchLetter = true;
}
$standardBrandList[$letter][] = $standardBrand;
$matchLetter = true;
}
if (!$matchLetter && !empty($standardBrand['brand_name_en'])) {
$standardBrandList['#'][] = $standardBrand;
}
}
if (!$matchLetter && !empty($standardBrand['brand_name_en'])) {
$standardBrandList['#'][] = $standardBrand;
}
ksort($standardBrandList);
Redis::set($redisKey, json_encode($standardBrandList));
Redis::expire($redisKey, 60);
return $standardBrandList;
}
ksort($standardBrandList);
Redis::set($redisKey, json_encode($standardBrandList));
Redis::expire($redisKey, 60);
return $standardBrandList;
return [];
}
public static function getStandardBrandInfo($brandId)
......
......@@ -10,78 +10,86 @@ class ClassService
public static function getClassificationForHome()
{
//先获取所有分类
$classCache = Redis::hgetall('pool_class_info');
$classData = \Http::get(config('website.footstone_url') . '/open/getClassification')->json();
$secondClassList = [];
foreach ($classCache as $key => &$class) {
$class = json_decode($class, true);
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 (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;
}
$class['sku_number'] = Redis::hget('pool_class_info_count', $class['class_id']) ?: 0;
$secondClass['children'][] = $class;
$secondClassList[] = $class;
}
}
unset($secondClass);
}
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;
$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;
}
$topFields[$key]['img'] = \Arr::get(config('field.top_class_img_mapping'), $key);
$topFields[$key]['children'][] = $secondClass;
}
}
return array_values($topFields);
}
return array_values($topFields);
return [];
}
public static function getClassificationById($classId,$includeChildren = false)
public static function getClassificationById($classId, $includeChildren = false)
{
$classification = Redis::hget('pool_class_info', $classId);
$classification = json_decode($classification,true);
if ($classification['parent_id']) {
return $classification;
}
//获取子分类
$classificationCache = Redis::hgetall('pool_class_info');
$totalSkuNumber = 0;
foreach ($classificationCache as $classCache) {
$classCache = json_decode($classCache, true);
if ($classCache['parent_id'] == $classId) {
if (empty($classCache['class_name_en'])) {
continue;
$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;
}
$classCache['sku_number'] = Redis::hget('pool_class_info_count', $classCache['class_id']) ?: 0;
$totalSkuNumber += $classCache['sku_number'];
$classification['children'][] = $classCache;
}
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;
return $classification;
}
$classification['sku_number'] = $totalSkuNumber;
return $classification;
return [];
}
}
<?php
return [
'footstone_url' => env('FOOTSTONE_URL'),
];
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment