查询优化

This commit is contained in:
邓皓元 2019-05-10 16:26:36 +08:00
parent db4e65e8f5
commit 0dccbc380b

View File

@ -6,9 +6,11 @@ use App\Core\Service;
use App\Models\Card\Card; use App\Models\Card\Card;
use Illuminate\Support\Carbon; use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Request;
use App\Models\Virtual\OrderCardPartition;
use Illuminate\Pagination\LengthAwarePaginator;
use App\Domains\Card\Repositories\CardRepository; use App\Domains\Card\Repositories\CardRepository;
use App\Domains\Virtual\Repositories\OrderCardPartitionRepository; use App\Domains\Virtual\Repositories\OrderCardPartitionRepository;
use App\Models\Virtual\OrderCardPartition;
class CardService extends Service class CardService extends Service
{ {
@ -40,15 +42,23 @@ class CardService extends Service
$conditions['type'] = 0; $conditions['type'] = 0;
if (isset($conditions['card_status'])) { if (isset($conditions['card_status'])) {
$conditions['sim'] = $this->getSimArrayByCardStatus($conditions['card_status'], $limit); $res = $this->listByCardStatus($conditions['card_status'], $limit);
$total = $res->total();
$conditions['sim'] = $res->pluck('sim')->toArray();
} else {
$total = $this->orderCardPartitionRepository->withConditions($conditions)->applyConditions()->count();
} }
$cards = $this->orderCardPartitionRepository->withConditions($conditions)->applyConditions()->paginate($limit); $page = Request::get('page');
return static::transformer($cards); $cards = $this->orderCardPartitionRepository->withConditions($conditions)->applyConditions()->forPage($page, $limit)->get();
$cards = static::transformer($cards);
return new LengthAwarePaginator($cards, $total, $limit);
} }
public static function getSimArrayByCardStatus(int $card_status, $limit = 0) public static function listByCardStatus(int $card_status, $limit = 0)
{ {
switch ($card_status) { switch ($card_status) {
case 0: case 0:
@ -90,7 +100,7 @@ class CardService extends Service
break; break;
} }
return array_pluck($res->items(), 'sim'); return $res;
} }
/** /**