77 lines
2.5 KiB
PHP
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();
|
|
}
|
|
}
|