vd/app/Domains/Real/Services/OrderService.php
2019-03-05 16:30:25 +08:00

77 lines
2.5 KiB
PHP

<?php
namespace App\Domains\Real\Services;
use App\Dicts;
use App\Core\Service;
use App\Domains\Virtual\Services\CompanyService;
use App\Domains\Virtual\Services\PackageService;
use App\Domains\Real\Repositories\OrderRepository;
use App\Domains\Real\Repositories\OrderCardPartitionRepository;
class OrderService extends Service
{
public $orderRepository;
public $orderCardPartitionRepository;
/**
* 构造函数
*
* @return void
*/
public function __construct(OrderRepository $orderRepository, OrderCardPartitionRepository $orderCardPartitionRepository)
{
$this->orderRepository = $orderRepository;
$this->orderCardPartitionRepository = $orderCardPartitionRepository;
}
/**
* 订单列表
*
* @return void
*/
public function index(array $conditions = [])
{
$conditions['type'] = $conditions['type'] ?? 0;
$limit = $conditions['limit'] ?? 10;
$carrierOperators = app(Dicts::class)->get('carrier_operator');
$res = $this->orderRepository->withConditions($conditions)->applyConditions()->paginate($limit);
$res->map(function ($item) use ($carrierOperators) {
$item->pay_channel_name = CommonService::namePayChannel($item->pay_channel);
$item->company_name = CommonService::company($item->company_id)['name'];
$item->package = CommonService::package($item->package_id);
$item->package_name = $item->package['name'];
$item->carrier_operator_name = $carrierOperators[$item->package['carrier_operator']];
$item->unit_price = sprintf('%.02f', $item->unit_price/100);
$item->total_price = sprintf('%.02f', $item->total_price/100);
});
return $res;
}
/**
* 获取卡列表
*
* @param int $orderId
* @return void
*/
public function cards(array $conditions = [])
{
$cards = $this->orderCardPartitionRepository->select(['sim', 'virtual_order_id', 'counts'])
->withConditions($conditions)->applyConditions()->get();
$cards->load(['virtual:id,company_id,package_id']);
$cards->map(function ($item) {
if ($item->virtual) {
$item->virtual['company_name'] = CompanyService::load($item->virtual['company_id'])['name'];
$item->virtual['package_name'] = PackageService::load($item->virtual['package_id'])['name'];
}
});
return $cards->sortBy('sim')->values();
}
}