44 lines
2.0 KiB
PHP
44 lines
2.0 KiB
PHP
<?php
|
|
defined('BASEPATH') or exit('No direct script access allowed');
|
|
|
|
class Auto_product_label_model extends HD_Model
|
|
{
|
|
private $table_name = 'lc_auto_product_label';
|
|
|
|
public function __construct()
|
|
{
|
|
parent::__construct($this->table_name, 'default');
|
|
}
|
|
|
|
/**
|
|
* 标签类型获取满足条件的产品id
|
|
* @param $priceRange
|
|
* @param $carProductLabel
|
|
* @param $productLevel
|
|
* @return array|false
|
|
*/
|
|
public function getProductLabelList($priceRange = [], $carProductLabel = [], $productLevel = [])
|
|
{
|
|
$labelIdArray = [];
|
|
$priceRange && $labelIdArray = array_merge($labelIdArray, $priceRange);
|
|
$carProductLabel && $labelIdArray = array_merge($labelIdArray, $carProductLabel);
|
|
$productLevel && $labelIdArray = array_merge($labelIdArray, $productLevel);
|
|
$labelIdString = implode(',', $labelIdArray);
|
|
$productIds = [];
|
|
if ($labelIdString) {
|
|
$priceRangeIds = $priceRange ? implode(',', $priceRange) : '';
|
|
$carProductLabelIds = $carProductLabel ? implode(',', $carProductLabel) : '';
|
|
$productLevelIds = $productLevel ? implode(',', $productLevel) : '';
|
|
$subSql = "SELECT product_id FROM lc_auto_product_label WHERE label_id IN ({$labelIdString}) GROUP BY product_id";
|
|
$havingWhere = [];
|
|
$priceRangeIds && $havingWhere[] = "SUM(CASE WHEN label_id IN ({$priceRangeIds}) THEN 1 ELSE 0 END)>=1";
|
|
$carProductLabelIds && $havingWhere[] = "SUM(CASE WHEN label_id IN ({$carProductLabelIds}) THEN 1 ELSE 0 END)>=1";
|
|
$productLevelIds && $havingWhere[] = "SUM(CASE WHEN label_id IN ({$productLevelIds}) THEN 1 ELSE 0 END)>=1";
|
|
$havingWhere && $subSql .= ' HAVING ' . implode(' AND ', $havingWhere);
|
|
$result = $this->autoProduct->db->query($subSql)->result_array();
|
|
$result && $productIds = array_column($result, 'product_id');
|
|
}
|
|
return $productIds;
|
|
}
|
|
}
|