106 lines
3.3 KiB
PHP
106 lines
3.3 KiB
PHP
<?php
|
||
|
||
// +----------------------------------------------------------------------
|
||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||
// +----------------------------------------------------------------------
|
||
// | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
|
||
// +----------------------------------------------------------------------
|
||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||
// +----------------------------------------------------------------------
|
||
// | Author: CRMEB Team <admin@crmeb.com>
|
||
// +----------------------------------------------------------------------
|
||
|
||
namespace app\common\repositories\store\parameter;
|
||
|
||
use app\common\dao\store\parameter\ParameterValueDao;
|
||
use app\common\repositories\BaseRepository;
|
||
use think\facade\Db;
|
||
|
||
class ParameterValueRepository extends BaseRepository
|
||
{
|
||
/**
|
||
* @var ParameterValueDao
|
||
*/
|
||
protected $dao;
|
||
|
||
|
||
/**
|
||
* ParameterRepository constructor.
|
||
* @param ParameterValueDao $dao
|
||
*/
|
||
public function __construct(ParameterValueDao $dao)
|
||
{
|
||
$this->dao = $dao;
|
||
}
|
||
|
||
public function create($id, $data,$merId)
|
||
{
|
||
if (empty($data)) return ;
|
||
foreach ($data as $datum) {
|
||
if ($datum['name'] && $datum['value']) {
|
||
$create[] = [
|
||
'product_id' => $id,
|
||
'name' => $datum['name'] ,
|
||
'value' => $datum['value'],
|
||
'sort' => $datum['sort'],
|
||
'parameter_id' => $datum['parameter_id'] ?? 0,
|
||
'mer_id' => $datum['mer_id'] ?? $merId,
|
||
'create_time' => date('Y-m-d H:i:s',time())
|
||
];
|
||
}
|
||
}
|
||
if ($create) $this->dao->insertAll($create);
|
||
}
|
||
|
||
|
||
/**
|
||
* 获取所有参数的值,并合并所关联的商品ID
|
||
* @param $where
|
||
* @return array
|
||
* @author Qinii
|
||
* @day 2023/10/21
|
||
*/
|
||
public function getOptions($where)
|
||
{
|
||
$data = $this->dao->getSearch($where)->column('parameter_id,name','value');
|
||
return array_values($data);
|
||
}
|
||
|
||
/**
|
||
* 根据筛选的参数,查询出商品ID
|
||
* @param $filter_params
|
||
* @param $page
|
||
* @param $limit
|
||
* @return array
|
||
* @author Qinii
|
||
* @day 2023/11/14
|
||
*/
|
||
public function filter_params($filter_params)
|
||
{
|
||
$productId = [];
|
||
if (!empty($filter_params)) {
|
||
if (!is_array($filter_params)) $filter_params = json_decode($filter_params,true);
|
||
$value = [];
|
||
foreach ($filter_params as $k => $v) {
|
||
$id[] = $k;
|
||
$value = array_merge($value,$v);
|
||
}
|
||
if (empty($id) || empty($value)) return false;
|
||
$productData = $this->dao->getSearch([])->alias('P')
|
||
->join('ParameterValue V','P.product_id = V.product_id')
|
||
->whereIn('P.parameter_id',$id)->whereIn('P.value',$value)
|
||
->whereIn('V.parameter_id',$id)->whereIn('V.value',$value)
|
||
->group('P.product_id')
|
||
->field('P.product_id')
|
||
->select();
|
||
if ($productData) {
|
||
$productData = $productData->toArray();
|
||
$productId = array_column($productData,'product_id');
|
||
}
|
||
}
|
||
return $productId;
|
||
}
|
||
|
||
}
|
||
|