144 lines
5.0 KiB
PHP
144 lines
5.0 KiB
PHP
<?php
|
|
|
|
namespace App\Admin\Controllers;
|
|
|
|
use App\Admin\Exporters\OrderExporter;
|
|
use App\Admin\Extensions\Actions\OrderDeliver;
|
|
use App\Models\Order;
|
|
use Encore\Admin\Controllers\HasResourceActions;
|
|
use Encore\Admin\Facades\Admin;
|
|
use Encore\Admin\Grid;
|
|
use Encore\Admin\Layout\Content;
|
|
use Encore\Admin\Show;
|
|
|
|
class OrderController extends Controller
|
|
{
|
|
use HasResourceActions;
|
|
|
|
/**
|
|
* Index interface.
|
|
* @param Content $content
|
|
* @return Content
|
|
*/
|
|
public function index(Content $content)
|
|
{
|
|
return $content
|
|
->header('订单列表')
|
|
->body($this->grid());
|
|
}
|
|
|
|
/**
|
|
* Show interface.
|
|
* @param mixed $id
|
|
* @param Content $content
|
|
* @return Content
|
|
*/
|
|
public function show(Order $order, Content $content)
|
|
{
|
|
return Admin::content(function (Content $content) use ($order) {
|
|
$content->header('订单详情');
|
|
|
|
$content->body(view("admin.order.detail", compact('order')));
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Make a grid builder.
|
|
* @return Grid
|
|
*/
|
|
protected function grid()
|
|
{
|
|
$grid = new Grid(new Order);
|
|
$grid->disableCreateButton();
|
|
|
|
$grid->model()->orderBy('id', 'desc')->with(['details.item', 'user.info', 'payment']);
|
|
|
|
$grid->paginate(10);
|
|
|
|
$grid->actions(function ($actions) {
|
|
$actions->disableDelete();
|
|
$actions->disableEdit();
|
|
$actions->disableView();
|
|
$actions->append('<p><a href="' . $this->getResource() . '/' . $this->getRouteKey() . '" class="btn btn-xs btn-default">订单详情</a></p>');
|
|
if ($actions->row->canDeliver() && $actions->row->state == Order::ORDER_DELIVER) {
|
|
$actions->append(new OrderDeliver($actions->row));
|
|
}
|
|
});
|
|
|
|
$grid->filter(function ($filter) {
|
|
$filter->disableIdFilter();
|
|
|
|
$filter->column(1 / 3, function ($filter) {
|
|
$filter->like('orderid', '订单编号');
|
|
$filter->equal('state', '订单状态')->select([
|
|
Order::ORDER_UNPAY => '待支付',
|
|
Order::ORDER_PAID => '已支付',
|
|
Order::ORDER_CANCEL => '已取消',
|
|
]);
|
|
});
|
|
$filter->column(1 / 3, function ($filter) {
|
|
$filter->where(function ($query) {
|
|
$query->whereHas('user', function ($query) {
|
|
$query->whereHas('info', function ($query) {
|
|
$query->where('nickname', 'like', "%{$this->input}%");
|
|
});
|
|
});
|
|
}, '下单用户');
|
|
});
|
|
$filter->column(1 / 3, function ($filter) {
|
|
$filter->between('created_at', '下单时间')->datetime();
|
|
$filter->between('paid_at', '付款时间')->datetime();
|
|
});
|
|
// $filter->expand();
|
|
});
|
|
|
|
$grid->orderid('订单编号')->display(function ($model) {
|
|
$ret = "<a href='orders/{$this->orderid}' style='font-size:18px'>{$this->orderid}</a>";
|
|
$ret .= '<br/><span style="color:#999">商品数量:' . $this->details()->sum('number') . '</span>';
|
|
return $ret;
|
|
});
|
|
$grid->column('商品信息')->display(function () {
|
|
$ret = '';
|
|
foreach ($this->details as $detail) {
|
|
$ret .= '<p style="font-size: 12px;line-height: 18px;margin: 0px;padding: 0px">' . $detail['item']['name'] . ' <span style="color:red">' . number_format($detail['price'], 2) . '</span> * ' . $detail['number'] . '</p>';
|
|
}
|
|
return $ret;
|
|
});
|
|
$grid->column('下单用户')->display(function () {
|
|
$ret = '<img src="' . $this->user->info->avatar . '" alt="" class="img img-thumbnail" style="max-width:40px;max-height:40px;vertical-align:top">';
|
|
$ret .= '<div style="display:inline-block;margin-left:5px">' . $this->user->info->nickname;
|
|
$ret .= '<br/>' . $this->user->info->mobile . '</div>';
|
|
return $ret;
|
|
});
|
|
|
|
$grid->column('价格')->display(function () {
|
|
$ret = '商品小计:' . number_format($this->amount, 2);
|
|
$ret .= '<br/>应收总额:' . number_format($this->total, 2);
|
|
return $ret;
|
|
});
|
|
|
|
$grid->column('状态')->display(function () {
|
|
$ret = $this->state_text . '<br>';
|
|
// $ret .= $this->status . '<br>';
|
|
if ($this->payment) {
|
|
$ret .= $this->payment->type_text . '<br>';
|
|
$ret .= $this->payment->out_trade_no . '<br>';
|
|
$ret .= $this->payment->transaction_id;
|
|
}
|
|
return $ret;
|
|
});
|
|
|
|
$grid->column('下单时间/付款时间')->display(function ($gd) {
|
|
$ret = $this->created_at . '<br/>';
|
|
$ret .= $this->paid_at;
|
|
return $ret;
|
|
});
|
|
|
|
$grid->disableExport(false);
|
|
$grid->exporter(new OrderExporter());
|
|
|
|
return $grid->render();
|
|
}
|
|
|
|
}
|