查询优化
This commit is contained in:
parent
16fb7b113f
commit
b4e2c3cf60
@ -30,17 +30,7 @@ class CardExport extends AbstractExport implements FromQuery, WithHeadings, With
|
|||||||
$this->conditions['type'] = 0;
|
$this->conditions['type'] = 0;
|
||||||
|
|
||||||
// 添加卡属性匹配查找
|
// 添加卡属性匹配查找
|
||||||
$properties = app(PropertyRepository::class)->select(['company_id', 'package_id', 'product', 'package'])->get();
|
CardService::propConditions($this->conditions);
|
||||||
if (isset($this->conditions['prop_product']) && isset($this->conditions['prop_package'])) {
|
|
||||||
$this->conditions['company_id'] = $properties->where('product', $this->conditions['prop_product'])->where('package', $this->conditions['prop_package'])->pluck('company_id')->toArray();
|
|
||||||
$this->conditions['package_id'] = $properties->where('product', $this->conditions['prop_product'])->where('package', $this->conditions['prop_package'])->pluck('package_id')->toArray();
|
|
||||||
} elseif (isset($this->conditions['prop_product'])) {
|
|
||||||
$this->conditions['company_id'] = $properties->where('product', $this->conditions['prop_product'])->pluck('company_id')->toArray();
|
|
||||||
$this->conditions['package_id'] = $properties->where('product', $this->conditions['prop_product'])->pluck('package_id')->toArray();
|
|
||||||
} elseif (isset($this->conditions['prop_package'])) {
|
|
||||||
$this->conditions['company_id'] = $properties->where('package', $this->conditions['prop_package'])->pluck('company_id')->toArray();
|
|
||||||
$this->conditions['package_id'] = $properties->where('package', $this->conditions['prop_package'])->pluck('package_id')->toArray();
|
|
||||||
}
|
|
||||||
|
|
||||||
$builder = app(OrderCardPartitionRepository::class)->forceNoReset()->withConditions($this->conditions)->orderBy('sim')->applyConditions();
|
$builder = app(OrderCardPartitionRepository::class)->forceNoReset()->withConditions($this->conditions)->orderBy('sim')->applyConditions();
|
||||||
|
|
||||||
|
@ -56,6 +56,16 @@ trait OrderCardConcern
|
|||||||
$query->whereIn('package_id', $conditions['package_id']);
|
$query->whereIn('package_id', $conditions['package_id']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isset($conditions['company_and_package_id'])) {
|
||||||
|
$conditions['company_and_package_id'] = array_wrap($conditions['company_and_package_id']);
|
||||||
|
|
||||||
|
$company_and_package_id = implode(',', array_map(function ($value) {
|
||||||
|
return "'".str_replace('"', '""', $value)."'";
|
||||||
|
}, $conditions['company_and_package_id']));
|
||||||
|
|
||||||
|
$query->whereRaw("CONCAT(company_id, '_', package_id) IN (" . $company_and_package_id . ")");
|
||||||
|
}
|
||||||
|
|
||||||
if (isset($conditions['carrier_operator'])) {
|
if (isset($conditions['carrier_operator'])) {
|
||||||
$query->whereHas('package', function ($relation) use ($conditions) {
|
$query->whereHas('package', function ($relation) use ($conditions) {
|
||||||
$relation->withTrashed()->where('carrier_operator', $conditions['carrier_operator']);
|
$relation->withTrashed()->where('carrier_operator', $conditions['carrier_operator']);
|
||||||
|
@ -16,7 +16,7 @@ class PropertyRepository extends Repository
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否开启数据转化
|
* 是否开启数据转化
|
||||||
*
|
*
|
||||||
* @var bool
|
* @var bool
|
||||||
*/
|
*/
|
||||||
protected $needTransform = false;
|
protected $needTransform = false;
|
||||||
@ -29,7 +29,8 @@ class PropertyRepository extends Repository
|
|||||||
'created_at' => 'like',
|
'created_at' => 'like',
|
||||||
];
|
];
|
||||||
|
|
||||||
public function model() {
|
public function model()
|
||||||
|
{
|
||||||
return Model::class;
|
return Model::class;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -59,4 +60,4 @@ class PropertyRepository extends Repository
|
|||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -43,18 +43,7 @@ class CardService extends Service
|
|||||||
$conditions['type'] = isset($conditions['card_status']) ? [0, 1, 2] : 0;
|
$conditions['type'] = isset($conditions['card_status']) ? [0, 1, 2] : 0;
|
||||||
|
|
||||||
// 添加卡属性匹配查找
|
// 添加卡属性匹配查找
|
||||||
$properties = app(PropertyRepository::class)->select(['company_id', 'package_id', 'product', 'package'])->get();
|
$this->propConditions($conditions);
|
||||||
if (isset($conditions['prop_product']) && isset($conditions['prop_package'])) {
|
|
||||||
$conditions['company_id'] = $properties->where('product', $conditions['prop_product'])->where('package', $conditions['prop_package'])->pluck('company_id')->toArray();
|
|
||||||
$conditions['package_id'] = $properties->where('product', $conditions['prop_product'])->where('package', $conditions['prop_package'])->pluck('package_id')->toArray();
|
|
||||||
} elseif (isset($conditions['prop_product'])) {
|
|
||||||
$conditions['company_id'] = $properties->where('product', $conditions['prop_product'])->pluck('company_id')->toArray();
|
|
||||||
$conditions['package_id'] = $properties->where('product', $conditions['prop_product'])->pluck('package_id')->toArray();
|
|
||||||
} elseif (isset($conditions['prop_package'])) {
|
|
||||||
$conditions['company_id'] = $properties->where('package', $conditions['prop_package'])->pluck('company_id')->toArray();
|
|
||||||
$conditions['package_id'] = $properties->where('package', $conditions['prop_package'])->pluck('package_id')->toArray();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
$select = [
|
$select = [
|
||||||
'id',
|
'id',
|
||||||
@ -190,4 +179,19 @@ class CardService extends Service
|
|||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function propConditions(&$conditions)
|
||||||
|
{
|
||||||
|
$properties = app(PropertyRepository::class)->select(['company_id', 'package_id', 'product', 'package'])->get()->keyBy(function ($item) {
|
||||||
|
return $item['company_id'] . '_' . $item['package_id'];
|
||||||
|
});
|
||||||
|
|
||||||
|
if (isset($conditions['prop_product']) && isset($conditions['prop_package'])) {
|
||||||
|
$conditions['company_and_package_id'] = $properties->where('product', $conditions['prop_product'])->where('package', $conditions['prop_package'])->keys()->toArray();
|
||||||
|
} elseif (isset($conditions['prop_product'])) {
|
||||||
|
$conditions['company_and_package_id'] = $properties->where('product', $conditions['prop_product'])->keys()->toArray();
|
||||||
|
} elseif (isset($conditions['prop_package'])) {
|
||||||
|
$conditions['company_and_package_id'] = $properties->where('package', $conditions['prop_package'])->keys()->toArray();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user