加快load速度

This commit is contained in:
邓皓元 2019-03-29 11:25:11 +08:00
parent 0127e44de5
commit d3711a5010
3 changed files with 23 additions and 18 deletions

View File

@ -92,10 +92,10 @@ class OrderController extends Controller
$orderStatues = $dicts->get('order_status'); $orderStatues = $dicts->get('order_status');
$transactionStatuses = $dicts->get('company_transaction_status'); $transactionStatuses = $dicts->get('company_transaction_status');
$order->package = PackageService::load($order->package_id); $package = PackageService::load($order->package_id);
$order->pay_channel = CommonService::namePayChannel($order->pay_channel); $order->pay_channel = CommonService::namePayChannel($order->pay_channel);
$order->carrier_operator = $carrierOperators[$order->package->carrier_operator]; $order->carrier_operator = $carrierOperators[$package['carrier_operator']];
$order->order_status = $order->order_status; $order->order_status = $order->order_status;
$order->order_status_name = $orderStatues[$order->order_status]; $order->order_status_name = $orderStatues[$order->order_status];
$order->transaction_status = $order->transaction_status; $order->transaction_status = $order->transaction_status;

View File

@ -89,13 +89,13 @@ class OrderService extends Service
Log::info('1', [microtime(true)]); Log::info('1', [microtime(true)]);
$cards = $this->orderCardPartitionRepository->withVirtual($conditions)->currentModel()->get(); $cards = $this->orderCardPartitionRepository->withVirtual($conditions)->currentModel()->get()->toArray();
Log::info('2', [microtime(true)]); Log::info('2', [microtime(true)]);
$tmpCards = $cards->groupBy('virtual_order_id'); $tmpCards = array_groupBy($cards, 'virtual_order_id');
$orderIds = $tmpCards->keys()->unique()->toArray(); $orderIds = array_unique(array_keys($tmpCards));
$key = array_search(0, $orderIds); $key = array_search(0, $orderIds);
@ -108,28 +108,33 @@ class OrderService extends Service
$virtualOrders = []; $virtualOrders = [];
// 有订单的从订单中读取公司和套餐 // 有订单的从订单中读取公司和套餐
if (!empty($orderIds)) { if (!empty($orderIds)) {
$virtualOrders = app(VirtualOrderRepository::class)->withConditions(['id' => $orderIds])->get()->keyBy('id'); $virtualOrders = app(VirtualOrderRepository::class)->withConditions(['id' => $orderIds])->get()->keyBy('id')->toArray();
} }
Log::info('4', [microtime(true)]); Log::info('4', [microtime(true)]);
foreach ($cards as &$item) { $companyService = app(CompanyService::class);
$item->sim = (string)$item->sim; $packageService = app(PackageService::class);
$item->company_id = $item->company_id ?? 0;
$item->package_id = $item->package_id ?? 0;
if ($item->virtual_order_id) { foreach ($cards as &$item) {
$virtual = $virtualOrders[$item->virtual_order_id]; $item['sim'] = (string)$item['sim'];
$item->company_id = $virtual['company_id']; $item['company_id'] = $item['company_id'] ?? 0;
$item->package_id = $virtual['package_id']; $item['package_id'] = $item['package_id'] ?? 0;
if ($item['virtual_order_id']) {
$virtual = $virtualOrders[$item['virtual_order_id']];
$item['company_id'] = $virtual['company_id'];
$item['package_id'] = $virtual['package_id'];
} }
$item->company_name = !$item->company_id ? '' : CompanyService::load($item->company_id)['name'] ?? ''; $item['company_name'] = !$item['company_id'] ? '' : $companyService->load($item['company_id'])['name'] ?? '';
$item->package_name = !$item->package_id ? '' : PackageService::load($item->package_id)['name'] ?? ''; $item['package_name'] = !$item['package_id'] ? '' : $packageService->load($item['package_id'])['name'] ?? '';
} }
Log::info('5', [microtime(true)]); Log::info('5', [microtime(true)]);
return $cards->sortBy('sim')->sortBy('order_id')->values(); return array_values(array_sort($cards, function ($value) {
return $value['order_id'] . '-' . $value['sim'];
}));
} }
} }

View File

@ -112,7 +112,7 @@ class CompanyService extends Service
public static function load($id) public static function load($id)
{ {
if (!self::$companies) { if (!self::$companies) {
self::$companies = app(CompanyRepository::class)->select(['id', 'name', 'status'])->withTrashed()->get()->keyBy('id'); self::$companies = app(CompanyRepository::class)->select(['id', 'name', 'status'])->withTrashed()->get()->keyBy('id')->toArray();
} }
return self::$companies[$id]; return self::$companies[$id];