284 lines
13 KiB
PHP
284 lines
13 KiB
PHP
<?php
|
|
|
|
namespace App\Admin\Controllers;
|
|
|
|
use App\Admin\Actions\Grid\DealerOrderAllocate;
|
|
use App\Admin\Actions\Grid\DealerOrderCancel;
|
|
use App\Admin\Actions\Grid\DealerOrderPaid;
|
|
use App\Admin\Actions\Grid\DealerOrderRefuse;
|
|
use App\Admin\Actions\Grid\DealerOrderShipping;
|
|
use App\Admin\Actions\Show\DealerOrderRemark;
|
|
use App\Admin\Repositories\DealerOrder;
|
|
use App\Enums\DealerOrderStatus;
|
|
use App\Models\DealerChannelSubsidyLog;
|
|
use App\Models\DealerOrder as DealerOrderModel;
|
|
use App\Models\DealerOrderProduct;
|
|
use Dcat\Admin\Admin;
|
|
use Dcat\Admin\Form;
|
|
use Dcat\Admin\Grid;
|
|
use Dcat\Admin\Http\Controllers\AdminController;
|
|
use Dcat\Admin\Layout\Row;
|
|
use Dcat\Admin\Show;
|
|
use Dcat\Admin\Widgets\Box;
|
|
use Illuminate\Support\Facades\Request;
|
|
|
|
class DealerOrderController extends AdminController
|
|
{
|
|
/**
|
|
* Make a grid builder.
|
|
*
|
|
* @return Grid
|
|
*/
|
|
protected function grid()
|
|
{
|
|
$builder = DealerOrder::with(['user', 'userInfo', 'consignor']);
|
|
return Grid::make($builder, function (Grid $grid) {
|
|
$type = Request::input('type', '');
|
|
if ($type == 'manager') {
|
|
$grid->model()->where(function ($query) {
|
|
return $query->where('consignor_id', 1)->orWhereNull('consignor_id');
|
|
});
|
|
}
|
|
$grid->setResource('dealer-orders');
|
|
$grid->column('id')->sortable();
|
|
$grid->column('sn');
|
|
$grid->column('user.phone')->copyable();
|
|
$grid->column('userInfo.nickname');
|
|
$grid->column('consignor.phone')->display(function ($value) {
|
|
return $value ?? '系统';
|
|
});
|
|
$grid->column('total_amount')->prepend('¥');
|
|
$statusTexts = DealerOrderStatus::texts();
|
|
|
|
$grid->column('pay_way')->using(DealerOrderModel::$payWayText)->label([
|
|
'wallet'=>'warning',
|
|
'offline'=>'danger',
|
|
'none'=>'#b3b9bf',
|
|
]);
|
|
|
|
$grid->column('order_status')->display(function ($v) {
|
|
return $this->order_status;
|
|
})->using($statusTexts)->dot([
|
|
DealerOrderStatus::Pending->value => 'primary',
|
|
DealerOrderStatus::Paying->value => 'danger',
|
|
DealerOrderStatus::Confirming->value => 'warning',
|
|
DealerOrderStatus::Paid->value => 'danger',
|
|
DealerOrderStatus::Shipped->value => 'warning',
|
|
DealerOrderStatus::Completed->value => 'success',
|
|
DealerOrderStatus::Cancelled->value => '#b3b9bf',
|
|
])->filter(Grid\Column\Filter\In::make($statusTexts)->setColumnName('status'));
|
|
// $grid->column('settle_state');
|
|
// $grid->column('pay_info');
|
|
// $grid->column('pay_image');
|
|
// $grid->column('pay_time');
|
|
$grid->column('paied_time');
|
|
// $grid->column('shipping_time');
|
|
// $grid->column('shippinged_time');
|
|
$grid->column('created_at')->sortable();
|
|
|
|
$grid->model()->orderBy('created_at', 'desc');
|
|
// $grid->column('updated_at')->sortable();
|
|
$grid->actions(function (Grid\Displayers\Actions $actions) {
|
|
if (Admin::user()->can('dcat.admin.dealer_orders.show')) {
|
|
$actions->append('<a style="cursor: pointer;" target="_blank" href="'.admin_route('dealer_orders.show', ['dealer_order'=>$actions->row]).'"><i class="feather icon-eye"></i> 显示 </a>');
|
|
// $actions->disableView(false);
|
|
}
|
|
if (!(empty($actions->row->consignor) || $actions->row->consignor_id == 1) && $actions->row->isPending() && Admin::user()->can('dcat.admin.dealer_orders.allocate')) {
|
|
$actions->append(new DealerOrderAllocate());
|
|
}
|
|
|
|
if ((empty($actions->row->consignor) || $actions->row->consignor_id == 1)) {
|
|
if ($actions->row->isPay() && Admin::user()->can('dcat.admin.dealer_orders.paid')) {
|
|
$actions->append(new DealerOrderPaid());
|
|
}
|
|
|
|
if ($actions->row->isPay() && Admin::user()->can('dcat.admin.dealer_orders.refuse')) {
|
|
$actions->append(new DealerOrderRefuse());
|
|
}
|
|
|
|
if ($actions->row->isPaid() && Admin::user()->can('dcat.admin.dealer_orders.shipping')) {
|
|
$actions->append(new DealerOrderShipping());
|
|
}
|
|
}
|
|
if ($actions->row->isPending() && Admin::user()->can('dcat.admin.dealer_orders.cancel')) {
|
|
$actions->append(new DealerOrderCancel());
|
|
}
|
|
});
|
|
$grid->filter(function (Grid\Filter $filter) {
|
|
$filter->panel();
|
|
$filter->equal('user.phone')->width(3);
|
|
$filter->equal('consignor.phone')->width(3);
|
|
$filter->equal('sn')->width(3);
|
|
$filter->between('paied_time')->dateTime()->width(5);
|
|
$filter->between('created_at')->dateTime()->width(5);
|
|
// $filter->equal('id');
|
|
});
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Make a show builder.
|
|
*
|
|
* @param mixed $id
|
|
*
|
|
* @return Show
|
|
*/
|
|
protected function detail($id)
|
|
{
|
|
return function (Row $row) use ($id) {
|
|
$row->column(5, function ($column) use ($id) {
|
|
$builder = DealerOrder::with(['user', 'userInfo', 'consignor']);
|
|
$column->row(Show::make($id, $builder, function (Show $show) {
|
|
$show->field('sn');
|
|
$show->field('order_status')->as(function ($v) {
|
|
return $this->order_status;
|
|
})->using(DealerOrderStatus::texts())->dot([
|
|
DealerOrderStatus::Pending->value => 'primary',
|
|
DealerOrderStatus::Paying->value => 'danger',
|
|
DealerOrderStatus::Confirming->value => 'warning',
|
|
DealerOrderStatus::Paid->value => 'danger',
|
|
DealerOrderStatus::Shipped->value => 'warning',
|
|
DealerOrderStatus::Completed->value => 'success',
|
|
DealerOrderStatus::Cancelled->value => '#b3b9bf',
|
|
]);
|
|
$show->field('user.phone');
|
|
$show->field('user_info.nickname');
|
|
$show->field('consignor.phone')->as(function ($value) {
|
|
return $value ?? '系统';
|
|
});
|
|
$show->field('pay_image')->image();
|
|
$show->field('remark');
|
|
$show->divider();
|
|
$show->field('consignee_name');
|
|
$show->field('consignee_telephone');
|
|
$show->field('consignee', '收货地址')->as(function () {
|
|
return $this->consignee_zone . ' '. $this->consignee_address;
|
|
});
|
|
//非(待确认,已取消)显示收款人信息
|
|
if (!in_array($show->model()->order_status, [
|
|
DealerOrderStatus::Pending->value, DealerOrderStatus::Cancelled->value,
|
|
])) {
|
|
$show->divider('收款信息-银行');
|
|
$show->field('bank_user_name', '银行-收款人')->as(function () {
|
|
$payInfo = $this->getConsignorPayInfo();
|
|
return $payInfo['bank']['user_name'] ?? '';
|
|
});
|
|
$show->field('bank_bank_name', '银行-名称')->as(function () {
|
|
$payInfo = $this->getConsignorPayInfo();
|
|
return $payInfo['bank']['bank_name'] ?? '';
|
|
});
|
|
$show->field('bank_bank_number', '银行-卡号')->as(function () {
|
|
$payInfo = $this->getConsignorPayInfo();
|
|
return $payInfo['bank']['bank_number'] ?? '';
|
|
});
|
|
$show->field('bank_bank_description', '银行-开户行')->as(function () {
|
|
$payInfo = $this->getConsignorPayInfo();
|
|
return $payInfo['bank']['bank_description'] ?? '';
|
|
});
|
|
$show->divider('收款信息-支付宝');
|
|
$show->field('alipay_user_name', '支付宝-真实名称')->as(function () {
|
|
$payInfo = $this->getConsignorPayInfo();
|
|
return $payInfo['alipay']['user_name'] ?? '';
|
|
});
|
|
$show->field('alipay_ali_name', '支付宝-账户')->as(function () {
|
|
$payInfo = $this->getConsignorPayInfo();
|
|
return $payInfo['alipay']['ali_name'] ?? '';
|
|
});
|
|
$show->field('alipay_image', '支付宝-收款码')->as(function () {
|
|
$payInfo = $this->getConsignorPayInfo();
|
|
return $payInfo['alipay']['image'] ?? '';
|
|
})->image();
|
|
$show->divider('收款信息-微信');
|
|
$show->field('wechat_user_name', '微信-真实名称')->as(function () {
|
|
$payInfo = $this->getConsignorPayInfo();
|
|
return $payInfo['wechat']['user_name'] ?? '';
|
|
});
|
|
$show->field('wechat_wechat_name', '微信-ID')->as(function () {
|
|
$payInfo = $this->getConsignorPayInfo();
|
|
return $payInfo['wechat']['wechat_name'] ?? '';
|
|
});
|
|
$show->field('wechat_image', '微信-收款码')->as(function () {
|
|
$payInfo = $this->getConsignorPayInfo();
|
|
return $payInfo['wechat']['image'] ?? '';
|
|
})->image();
|
|
}
|
|
$show->panel()
|
|
->tools(function (Show\Tools $tools) use ($show) {
|
|
$tools->disableEdit();
|
|
$tools->disableDelete();
|
|
if (Admin::user()->can('dcat.admin.dealer_orders.remark')) {
|
|
$tools->append(new DealerOrderRemark());
|
|
}
|
|
});
|
|
}));
|
|
});
|
|
$row->column(7, function ($column) use ($id) {
|
|
$builder = DealerOrderProduct::where('order_id', $id);
|
|
$productGrid = Grid::make($builder, function (Grid $grid) {
|
|
$grid->column('name');
|
|
$grid->column('cover', '封面')->image(50, 50);
|
|
$grid->column('price', '标价')->prepend('¥');
|
|
$grid->column('sale_price', '实际售价')->prepend('¥');
|
|
$grid->column('qty', '数量');
|
|
$grid->disableActions();
|
|
$grid->disablePagination();
|
|
$grid->disableRefreshButton();
|
|
});
|
|
$column->row(Box::make('订单商品', $productGrid));
|
|
//显示渠道补贴明细
|
|
// $channelSubsidy = '';
|
|
$builder = DealerChannelSubsidyLog::with(['user', 'earning'])->where('order_id', $id);
|
|
$channelSubsidy = Grid::make($builder, function (Grid $grid) {
|
|
$grid->column('user.phone', '手机号');
|
|
$grid->column('lvl', '等级')->display(function () {
|
|
return $this->lvl->text();
|
|
// return $this->lvl_text;
|
|
});
|
|
$grid->column('total_amount', '补贴金额');
|
|
$grid->column('remark', '备注');
|
|
$grid->column('earning.id', '操作')->display(function () {
|
|
return '查看';
|
|
})->link(function ($value) {
|
|
return admin_route('dealer_earnings.show', ['dealer_earning'=>$this->earning->id]);
|
|
});
|
|
$grid->disableActions();
|
|
$grid->disablePagination();
|
|
$grid->disableRefreshButton();
|
|
});
|
|
$column->row(Box::make('渠道补贴', $channelSubsidy));
|
|
});
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Make a form builder.
|
|
*
|
|
* @return Form
|
|
*/
|
|
protected function form()
|
|
{
|
|
return Form::make(new DealerOrder(), function (Form $form) {
|
|
$form->display('id');
|
|
$form->text('sn');
|
|
$form->text('user_id');
|
|
$form->text('consignor_id');
|
|
$form->text('total_amount');
|
|
$form->text('status');
|
|
$form->text('settle_state');
|
|
$form->text('consignee_name');
|
|
$form->text('consignee_telephone');
|
|
$form->text('consignee_zone');
|
|
$form->text('consignee_address');
|
|
$form->text('pay_info');
|
|
$form->text('pay_image');
|
|
$form->text('pay_time');
|
|
$form->text('paied_time');
|
|
$form->text('shipping_time');
|
|
$form->text('shippinged_time');
|
|
|
|
$form->display('created_at');
|
|
$form->display('updated_at');
|
|
});
|
|
}
|
|
}
|