查询优化
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;
|
||||
|
||||
// 添加卡属性匹配查找
|
||||
$properties = app(PropertyRepository::class)->select(['company_id', 'package_id', 'product', 'package'])->get();
|
||||
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();
|
||||
}
|
||||
CardService::propConditions($this->conditions);
|
||||
|
||||
$builder = app(OrderCardPartitionRepository::class)->forceNoReset()->withConditions($this->conditions)->orderBy('sim')->applyConditions();
|
||||
|
||||
|
@ -56,6 +56,16 @@ trait OrderCardConcern
|
||||
$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'])) {
|
||||
$query->whereHas('package', function ($relation) use ($conditions) {
|
||||
$relation->withTrashed()->where('carrier_operator', $conditions['carrier_operator']);
|
||||
|
@ -16,7 +16,7 @@ class PropertyRepository extends Repository
|
||||
|
||||
/**
|
||||
* 是否开启数据转化
|
||||
*
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
protected $needTransform = false;
|
||||
@ -29,7 +29,8 @@ class PropertyRepository extends Repository
|
||||
'created_at' => 'like',
|
||||
];
|
||||
|
||||
public function model() {
|
||||
public function model()
|
||||
{
|
||||
return Model::class;
|
||||
}
|
||||
|
||||
@ -59,4 +60,4 @@ class PropertyRepository extends Repository
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -43,18 +43,7 @@ class CardService extends Service
|
||||
$conditions['type'] = isset($conditions['card_status']) ? [0, 1, 2] : 0;
|
||||
|
||||
// 添加卡属性匹配查找
|
||||
$properties = app(PropertyRepository::class)->select(['company_id', 'package_id', 'product', 'package'])->get();
|
||||
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();
|
||||
}
|
||||
|
||||
$this->propConditions($conditions);
|
||||
|
||||
$select = [
|
||||
'id',
|
||||
@ -190,4 +179,19 @@ class CardService extends Service
|
||||
|
||||
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