重新查卡归属企业套餐

This commit is contained in:
邓皓元 2019-03-07 18:38:06 +08:00
parent 9886103b83
commit 308ec3760f
3 changed files with 49 additions and 5 deletions

View File

@ -8,6 +8,8 @@ use App\Domains\Virtual\Services\PackageService;
use App\Domains\Real\Repositories\OrderRepository;
use App\Domains\Real\Repositories\OrderCardPartitionRepository;
use App\Domains\Virtual\Repositories\OrderRepository as VirtualOrderRepository;
use App\Domains\Virtual\Repositories\OrderCardPartitionRepository as VirtualOrderCardPartitionRepository;
use Carbon\Carbon;
class OrderService extends Service
{
@ -65,16 +67,43 @@ class OrderService extends Service
$cards = $this->orderCardPartitionRepository->select(['sim', 'virtual_order_id', 'counts'])
->withConditions($conditions)->applyConditions()->get();
$orderIds = $cards->pluck('virtual_order_id')->unique()->toArray();
$tmpCards = $cards->groupBy('virtual_order_id');
$virtualOrders = app(VirtualOrderRepository::class)->withTrashed()
->withConditions(['id' => $orderIds])->get()->keyBy('id');
$orderIds = $tmpCards->keys()->unique()->toArray();
$cards->map(function ($item) use ($virtualOrders) {
$key = array_search(0, $orderIds);
if (!is_null($key)) {
unset($orderIds[$key]);
}
$virtualOrders = [];
// 有订单的从订单中读取公司和套餐
if (!empty($orderIds)) {
$virtualOrders = app(VirtualOrderRepository::class)->withConditions(['id' => $orderIds])->get()->keyBy('id');
}
$simArray = $tmpCards[0]->pluck('sim')->toArray();
$virtualOrderCards = [];
// 没有订单的从当前状态下读取公司和套餐
if (!empty($simArray)) {
$virtualOrderCards = app(VirtualOrderCardPartitionRepository::class)->selectRaw('distinct on (sim) sim,company_id,package_id')
->withConditions([
'type' => [0, 1],
'sim' => $simArray,
])->newest()->get()->keyBy('sim');
}
$cards->map(function ($item) use ($virtualOrders, $virtualOrderCards) {
$item->company_name = '';
$item->package_name = '';
$virtual = $virtualOrders[$item->virtual_order_id];
if ($item->virtual_order_id) {
$virtual = $virtualOrders[$item->virtual_order_id];
} else {
$virtual = $virtualOrderCards[$item->sim];
}
if ($virtual) {
$item->company_name = CompanyService::load($virtual['company_id'])['name'];

View File

@ -0,0 +1,2 @@
<?php
echo array_search(0, [0, 1, 2, 3]);

View File

@ -2,6 +2,7 @@
namespace App\Domains\Virtual\Repositories;
use Carbon\Carbon;
use App\Core\Repository;
use App\Models\Virtual\OrderCardPartition as Model;
use App\Domains\Virtual\Repositories\Concerns\OrderCardConcern;
@ -48,4 +49,16 @@ class OrderCardPartitionRepository extends Repository
{
return $model->toArray();
}
/**
* 查询条件
*
* @return void
*/
public function newest()
{
return $this;
}
}