vd/app/Domains/Virtual/Http/Controllers/OrderController.php
2018-12-19 12:03:10 +08:00

108 lines
3.5 KiB
PHP

<?php
namespace App\Domains\Virtual\Http\Controllers;
use App\Dicts;
use App\Core\Controller;
use Illuminate\Http\Request;
use App\Exceptions\NotExistException;
use App\Domains\Config\Services\ConfigService;
use App\Domains\Virtual\Services\OrderService;
use App\Domains\Virtual\Services\CommonService;
use App\Domains\Virtual\Repositories\OrderRepository;
class OrderController extends Controller
{
protected $request;
protected $orderService;
/**
* 构造函数,自动注入.
*/
public function __construct(Request $request, OrderService $orderService)
{
$this->request = $request;
$this->orderService = $orderService;
}
/**
* 列表.
*
* @return \Illuminate\Http\Response
*/
public function paginate(Dicts $dicts)
{
$conditions = $this->request->all();
$conditions['limit'] = $this->request->get('limit', 20);
$orders = $this->orderService->paginate($conditions);
$carrierOperators = $dicts->get('carrier_operator');
$orderStatues = $dicts->get('order_status');
$transactionStatuses = $dicts->get('transaction_status');
$orders->transform(function ($item) use ($carrierOperators, $orderStatues, $transactionStatuses) {
return [
'id' => $item->id,
'sn' => $item->sn,
'package_name' => $item->package->name,
'company_name' => $item->company->name,
'pay_channel' => CommonService::namePayChannel($item->pay_channel),
'carrier_operator' => $carrierOperators[$item->package->carrier_operator],
'unit_price' => $item->unit_price,
'counts' => $item->counts,
'total_price' => $item->total_price,
'custom_price' => $item->custom_price,
'order_status' => $item->order_status,
'order_status_name' => $orderStatues[$item->order_status],
'transaction_status' => $item->transaction_status,
'transaction_status_name' => $transactionStatuses[$item->transaction_status],
'order_at' => $item->order_at,
];
});
return res($orders, '订单列表', 201);
}
/**
* 订单详情
*/
public function show(Dicts $dicts, $id)
{
if (!$order = app(OrderRepository::class)->find($id)) {
throw new NotExistException('订单不存在或已删除');
}
$logistics = app(ConfigService::class)->get('logistics');
$carrierOperators = $dicts->get('carrier_operator');
$orderStatues = $dicts->get('order_status');
$transactionStatuses = $dicts->get('transaction_status');
$order->load(['company:id,name', 'package:id,name,carrier_operator']);
$order->pay_channel = CommonService::namePayChannel($order->pay_channel);
$order->carrier_operator = $carrierOperators[$order->package->carrier_operator];
$order->order_status_name = $orderStatues[$order->order_status];
$order->transaction_status_name = $transactionStatuses[$order->transaction_status];
$order->logistics_company_name = $logistics[$order->logistics_company] ?? '';
return res($order, '订单详情', 201);
}
/**
* 编辑.
*
* @return \Illuminate\Http\Response
*/
public function update($id)
{
$attributes = $this->request->all();
$attributes['id'] = $id;
$order = $this->orderService->store($attributes);
return res($order, '修改成功');
}
}