vd/app/Domains/Company/Http/Controllers/OrderController.php
2018-12-13 15:10:50 +08:00

88 lines
2.8 KiB
PHP

<?php
namespace App\Domains\Company\Http\Controllers;
use App\Dicts;
use Carbon\Carbon;
use App\Core\Controller;
use Illuminate\Http\Request;
use App\Exceptions\NotAllowedException;
use App\Domains\Virtual\Services\OrderService;
use App\Domains\Virtual\Services\CommonService;
class OrderController extends Controller
{
protected $request;
protected $orderService;
/**
* 构造函数,自动注入.
*/
public function __construct(Request $request, OrderService $orderService)
{
$this->request = $request;
$this->orderService = $orderService;
$this->account = $request->user('company');
}
/**
* 订单列表
*/
public function paginate(Dicts $dicts)
{
$conditions = $this->request->all();
$conditions['company_id'] = $this->account->company_id;
$res = $this->orderService->paginate($conditions);
$carrierOperators = $dicts->get('carrier_operator');
$orderStatues = $dicts->get('order_status');
$transactionStatuses = $dicts->get('transaction_status');
$res->transform(function ($item) use ($carrierOperators, $orderStatues, $transactionStatuses) {
return [
'id' => $item->id,
'sn' => $item->sn,
'package_name' => $item->package->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' => $orderStatues[$item->order_status],
'transaction_status' => $transactionStatuses[$item->transaction_status],
'order_at' => $item->order_at,
];
});
if (empty($res)) {
return err('没有更多数据');
}
$order_at = Carbon::parse($res->last()->order_at);
$conditions['starttime'] = $order_at->copy()->startOfMonth()->startOfDay()->format('Y-m-d H:i:s');
$conditions['endtime'] = $order_at->copy()->endOfMonth()->endOfDay()->format('Y-m-d H:i:s');
$count = $this->orderService->count($conditions);
$count['starttime'] = $conditions['starttime'];
$count['endtime'] = $conditions['endtime'];
return res(['count' => $count, 'orders' => $res], '订单列表', 201);
}
/**
* 下单
*/
public function store()
{
$attributes = $this->request->all();
$attributes['company_id'] = $this->account->company_id;
$res = $this->orderService->store($attributes);
return res($res, '下单成功');
}
}