Files
spacestation/common/models/agent/Auto_product_label_model.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;
}
}