搜索优化,url默认兼容模式
parent
c21458ecf8
commit
e4e5ad6294
|
|
@ -59,21 +59,46 @@ class BrandService
|
|||
{
|
||||
if(!empty($data))
|
||||
{
|
||||
// 分类名称
|
||||
$cnames = [];
|
||||
$cids = array_column($data, 'brand_category_id');
|
||||
if(!empty($cids))
|
||||
// 字段列表
|
||||
$keys = ArrayKeys($data);
|
||||
|
||||
// 分类信息
|
||||
// 获取所有品牌关联的分类数据
|
||||
$category_group = [];
|
||||
if(in_array('id', $keys))
|
||||
{
|
||||
$cnames = Db::name('BrandCategory')->where(['id'=>$cids])->column('name', 'id');
|
||||
$category = Db::name('BrandCategoryJoin')->where(['brand_id'=>array_column($data, 'id')])->field('brand_id,brand_category_id')->select();
|
||||
if(!empty($category))
|
||||
{
|
||||
$ids = array_unique(array_column($category, 'brand_category_id'));
|
||||
$names = Db::name('BrandCategory')->where(['id'=>$ids])->column('name', 'id');
|
||||
foreach($category as $c)
|
||||
{
|
||||
if(!array_key_exists($c['brand_id'], $category_group))
|
||||
{
|
||||
$category_group[$c['brand_id']]['ids'] = [];
|
||||
$category_group[$c['brand_id']]['names'] = [];
|
||||
}
|
||||
$category_group[$c['brand_id']]['ids'][] = $c['brand_category_id'];
|
||||
$category_group[$c['brand_id']]['names'][] = $names[$c['brand_category_id']];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 数处理
|
||||
foreach($data as &$v)
|
||||
{
|
||||
// 分类名称
|
||||
if(isset($v['id']))
|
||||
{
|
||||
$v['brand_category_ids'] = Db::name('BrandCategoryJoin')->where(['brand_id'=>$v['id']])->column('brand_category_id');
|
||||
$category_name = Db::name('BrandCategory')->where(['id'=>$v['brand_category_ids']])->column('name');
|
||||
$v['brand_category_text'] = implode(',', $category_name);
|
||||
if(array_key_exists($v['id'], $category_group))
|
||||
{
|
||||
$v['brand_category_ids'] = $category_group[$v['id']]['ids'];
|
||||
$v['brand_category_text'] = implode(',', $category_group[$v['id']]['names']);
|
||||
} else {
|
||||
$v['brand_category_ids'] = [];
|
||||
$v['brand_category_text'] = '';
|
||||
}
|
||||
}
|
||||
|
||||
// logo
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ class SearchService
|
|||
|
||||
// 搜索条件
|
||||
$where = self::SearchWhereHandle($params);
|
||||
$base_where = $where['base'];
|
||||
$where_base = $where['base'];
|
||||
$where_keywords = $where['keywords'];
|
||||
$where_screening_price = $where['screening_price'];
|
||||
|
||||
|
|
@ -69,7 +69,7 @@ class SearchService
|
|||
'hook_name' => $hook_name,
|
||||
'is_backend' => true,
|
||||
'params' => &$params,
|
||||
'base_where' => &$base_where,
|
||||
'where_base' => &$where_base,
|
||||
'where_keywords' => &$where_keywords,
|
||||
'where_screening_price' => &$where_screening_price,
|
||||
'field' => &$field,
|
||||
|
|
@ -80,7 +80,7 @@ class SearchService
|
|||
]);
|
||||
|
||||
// 获取商品总数
|
||||
$result['total'] = (int) Db::name('Goods')->alias('g')->join(['__GOODS_CATEGORY_JOIN__'=>'gci'], 'g.id=gci.goods_id')->where($base_where)->where(function($query) use($where_keywords) {
|
||||
$result['total'] = (int) Db::name('Goods')->alias('g')->join(['__GOODS_CATEGORY_JOIN__'=>'gci'], 'g.id=gci.goods_id')->where($where_base)->where(function($query) use($where_keywords) {
|
||||
$query->whereOr($where_keywords);
|
||||
})->where(function($query) use($where_screening_price) {
|
||||
$query->whereOr($where_screening_price);
|
||||
|
|
@ -90,7 +90,7 @@ class SearchService
|
|||
if($result['total'] > 0)
|
||||
{
|
||||
// 查询数据
|
||||
$data = Db::name('Goods')->alias('g')->join(['__GOODS_CATEGORY_JOIN__'=>'gci'], 'g.id=gci.goods_id')->field($field)->where($base_where)->where(function($query) use($where_keywords) {
|
||||
$data = Db::name('Goods')->alias('g')->join(['__GOODS_CATEGORY_JOIN__'=>'gci'], 'g.id=gci.goods_id')->field($field)->where($where_base)->where(function($query) use($where_keywords) {
|
||||
$query->whereOr($where_keywords);
|
||||
})->where(function($query) use($where_screening_price) {
|
||||
$query->whereOr($where_screening_price);
|
||||
|
|
@ -138,7 +138,7 @@ class SearchService
|
|||
$keywords = explode(' ', $params['wd']);
|
||||
foreach($keywords as $kv)
|
||||
{
|
||||
$where_keywords[] = ['g.title|g.model|g.simple_desc|g.seo_title|g.seo_keywords|g.seo_keywords', 'like', '%'.$kv.'%'];
|
||||
$where_keywords[] = ['g.title|g.simple_desc', 'like', '%'.$kv.'%'];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -234,7 +234,7 @@ class SearchService
|
|||
}
|
||||
if(!empty($params['goods_params_values']))
|
||||
{
|
||||
$ids = Db::name('GoodsParams')->where(['value'=>$params['goods_params_values']])->column('goods_id');
|
||||
$ids = Db::name('GoodsParams')->where(['value'=>$params['goods_params_values'], 'type'=>2])->column('goods_id');
|
||||
if(!empty($ids))
|
||||
{
|
||||
$where_base[] = ['g.id', 'in', $ids];
|
||||
|
|
@ -364,14 +364,14 @@ class SearchService
|
|||
|
||||
// 搜索条件
|
||||
$where = self::SearchWhereHandle($params);
|
||||
$base_where = $where['base'];
|
||||
$where_base = $where['base'];
|
||||
$where_keywords = $where['keywords'];
|
||||
$where_screening_price = $where['screening_price'];
|
||||
|
||||
// 一维数组、参数值去重
|
||||
if(!empty($base_where) || !empty($where_keywords) || !empty($where_screening_price))
|
||||
if(!empty($where_base) || !empty($where_keywords) || !empty($where_screening_price))
|
||||
{
|
||||
$ids = Db::name('Goods')->alias('g')->join(['__GOODS_CATEGORY_JOIN__'=>'gci'], 'g.id=gci.goods_id')->where($base_where)->where(function($query) use($where_keywords) {
|
||||
$ids = Db::name('Goods')->alias('g')->join(['__GOODS_CATEGORY_JOIN__'=>'gci'], 'g.id=gci.goods_id')->where($where_base)->where(function($query) use($where_keywords) {
|
||||
$query->whereOr($where_keywords);
|
||||
})->where(function($query) use($where_screening_price) {
|
||||
$query->whereOr($where_screening_price);
|
||||
|
|
@ -450,12 +450,15 @@ class SearchService
|
|||
{
|
||||
// 搜索条件
|
||||
$where = self::SearchWhereHandle($params);
|
||||
$base_where = $where['base'];
|
||||
$where_base = $where['base'];
|
||||
$where_keywords = $where['keywords'];
|
||||
$where_screening_price = $where['screening_price'];
|
||||
|
||||
// 仅搜索基础参数
|
||||
$where_base[] = ['gp.type', '=', 2];
|
||||
|
||||
// 一维数组、参数值去重
|
||||
$data = Db::name('Goods')->alias('g')->join(['__GOODS_CATEGORY_JOIN__'=>'gci'], 'g.id=gci.goods_id')->join(['__GOODS_PARAMS__'=>'gp'], 'g.id=gp.goods_id')->where($base_where)->where(function($query) use($where_keywords) {
|
||||
$data = Db::name('Goods')->alias('g')->join(['__GOODS_CATEGORY_JOIN__'=>'gci'], 'g.id=gci.goods_id')->join(['__GOODS_PARAMS__'=>'gp'], 'g.id=gp.goods_id')->where($where_base)->where(function($query) use($where_keywords) {
|
||||
$query->whereOr($where_keywords);
|
||||
})->where(function($query) use($where_screening_price) {
|
||||
$query->whereOr($where_screening_price);
|
||||
|
|
@ -480,12 +483,12 @@ class SearchService
|
|||
{
|
||||
// 搜索条件
|
||||
$where = self::SearchWhereHandle($params);
|
||||
$base_where = $where['base'];
|
||||
$where_base = $where['base'];
|
||||
$where_keywords = $where['keywords'];
|
||||
$where_screening_price = $where['screening_price'];
|
||||
|
||||
// 一维数组、参数值去重
|
||||
$data = Db::name('Goods')->alias('g')->join(['__GOODS_CATEGORY_JOIN__'=>'gci'], 'g.id=gci.goods_id')->join(['__GOODS_SPEC_VALUE__'=>'gsv'], 'g.id=gsv.goods_id')->where($base_where)->where(function($query) use($where_keywords) {
|
||||
$data = Db::name('Goods')->alias('g')->join(['__GOODS_CATEGORY_JOIN__'=>'gci'], 'g.id=gci.goods_id')->join(['__GOODS_SPEC_VALUE__'=>'gsv'], 'g.id=gsv.goods_id')->where($where_base)->where(function($query) use($where_keywords) {
|
||||
$query->whereOr($where_keywords);
|
||||
})->where(function($query) use($where_screening_price) {
|
||||
$query->whereOr($where_screening_price);
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue